信息科技课程应该怎么教?
魏宁:汪教授您好,我们都知道,2022年,《义务教育信息科技课程标准(2022年版)》(以下简称“新课标”)正式颁布,这意味着全新的信息科技课程的诞生。在新课标颁布后,一个重要的任务就是让新课程切实落地生根,对于广大中小学教师而言,一方面,需要准确理解和把握新课程所倡导的新理念以及全新的信息科技课程的内容体系,另一方面,还需要在教学实践中明了“怎么教”、怎样将信息科技课程的理念和内容在课堂上完整呈现出来。对于信息科技课程的落地、实施,您是如何看待的?
汪琼:我想先从我的经历说起,我本人在北京大学计算机系读了十年软件专业,博士毕业后就留在了北大计算机系,给大一学生开设《计算概论》课程,内容包括计算机组成结构、工作原理和一门编程语言。因为需要编写教材,我搜集了二三十种国外教材,因而对大学计算机入门课程应该教什么、怎么教,有了一些全局性认识。
说到中小学信息科技课程的发展过程,我也算是亲历者,目睹了其发生发展的全过程。从早期的编程兴趣小组、竞赛类课外活动,到成为中小学校开设的偏重于Office操作、画图软件、多媒体软件等等的计算机素养普及性课程,再到近年来强调计算思维,编程教育被再次重视,以STEAM教育、创客教育、人工智能教育等形式出现,中小学信息科技课程经历了螺旋式发展的历史演进过程。
近年来,我也多次进入中小学的课堂,感觉不同学校的信息科技课程的教学模式都非常相似,存在很多可以优化的地方。例如,信息科技课堂大都会采取小组合作项目学习,教师先讲解,然后学生分组完成任务,最后教师挑选完成任务的一两个小组做展示,教师点评、总结。而在这个过程中,很多地方暴露出不少的问题,如:教师讲得过多,占去了太多的课堂时间,学生没有足够的分组活动的时间;经常有小组在下课前尚不能完成作品,而教师也没有进行干预,下一节课又要学新内容,一些学生在这样的课堂上没有成就感;小组活动的过程比较封闭,各个组之间缺乏互相观察、学习;在交流分享的环节,各个小组因为是按照任务单上的步骤完成作品,差别并不大,学生也很难从中互相借鉴、互相启迪。
再有就是现在在教学中,有的教师会选择一些流行的计算思维竞赛题目来训练学生。我们知道,竞赛题很多时候会用到一些取巧的思维方式,有的题目甚至呈现的是某种“极端”状况,它无法体现一种更加通用化、一般化的方法。总的来说,中小学生计算思维的培养,和竞赛的思路还是有区别的,我们希望学生学到的是看起来朴实无华的东西,却能解决复杂的真实问题。 所以,对于计算思维的一些训练方式和题目的选择,教师需要有准确的定位,才能把握好。
魏宁:您刚才谈到了信息科技课程教学中存在的一些问题,您有什么改进的建议吗?
汪琼:我也是因为2003年参与中国科协引进的“英特尔求知计划”项目,在全国各地的青少年活动中心开展应用培训和项目评估,才体会到青少年信息技术普及课程教学设计与教学实施的关键要义的:在有限的课时内教师要少讲,提供给学生多练的机会;可以通过提供丰富且好用的项目手册和技术手册支持学生自学和互教,实现教师不教、学生自己学会的理想状态;2~3人一组的同伴合作学习优于一人一台电脑的独自学习……
在“英特尔求知计划”项目中有很多很好的教学理念,如每个项目都会要求学生先做设计规划,设计好以后再上机实操。通过观点碰撞和协调,学生小组对最终要完成的作品应具有的功能和表现形态达成共识,明确的产出目标也有助于后续的合作分工。这实际上就是在做“三思而后行”的思维习惯训练,如果学生没有做好规划就急着去上机,他们的工作效率往往会比较低,编程时也容易不断地删掉重来。下课前没有完成任务的小组大多数都是这种情况。
“英特尔求知计划”项目的交流分享环节也值得信息科技课程学习。由于每个项目活动都有基本达标要求和可以发挥的变数,所以学生小组作品往往是完成同样的知识点但各有创新特色。交流分享环节并不是做完的某个小组对全班讲作品,而是各个组之间互相“参观交流”,类似于每个小组是一个“展台”,每组留下一个学生,向来参观的其他组的同学介绍本组的思路、成果。本组其他同学也会去各个组“参观”,看到和自己不一样的或新奇的做法就会询问怎么做到的。这种多对多的分享交流,可以让所有学生都能够有所收获,包括留在本组宣讲的学生,“教别人自己会学得更好”。
魏宁:我觉得“英特尔求知计划”项目的这些做法对于信息科技课程教学的进一步优化确实很有启发。当新课标刚出来的时候,老师们首先会关注有哪些新的理念,然后会关注教学内容上会有什么变化,在这个过程中对于教学方法,也就是“怎么教”的关注确实会有一些滞后。
汪琼:是的,不过改起来还是很容易的,只要始终想着学生的培养目标如何落实,就会找到解决问题的方法。我发现学生上信息科技课常常是不带笔的,小组合作有任务单,但是一组就一张纸,下课即弃,没有积累,学生可能都不知道自己一学期做了几个项目,学到了哪些知识和技能,在这样的信息科技课程中学生的学习成就感会比较低,尤其是那些不是每节课都能完成任务的学生。在“英特尔求知计划”项目中,每个学生都有一个练习本,记录每堂课的设计规划和学习心得,信息科技课也要有课堂笔记和作业本,这是信息科技课程成为必修课正规化后应有的样态。
魏宁:这次颁布的《义务教育课程方案(2022年版)》,也在大力倡导一些新的学习方式,它们在信息科技课程中也得到了较多的应用,如项目式学习,您如何看待信息科技课程中的项目式学习呢?
汪琼:近年来,项目式学习在中小学教改报告中出现频率很高,但是针对中小学信息科技课程,尤其是小学生,我更倾向于活动式学习。学生做一个作品,它就是一个活动。在小学阶段,小学生不大可能去做真正意义上的科学探究。很多时候,学生只是去百度上查了一堆资料,然后复制粘贴,并不一定真正理解,这种没有运用批判思维的基于资源的学习方式,如果不加引导,可能会助长学生对网络资讯的盲目信任,使其养成网络抄袭的坏习惯。
一般来说从项目规划到设计再到实现,准备工作很细碎,比较耗时,往往需要跨学科合作。一个学期能够做一两个项目就很不错了。平时的课堂上毕竟还需要学习一些基础的内容,因此建议适当开展一些活动式学习或任务,效果也会不错。
魏宁:这一次的新课标将计算思维作为课程的核心素养,对于计算思维的培养,在教学法层面您有何建议呢?
汪琼:首先,计算思维有很多的培养途径,但是在信息科技课程中培养计算思维,大多数时候还是要借助程序设计来实现。当然,对于计算思维,我们一定要清楚它都包含什么,如对问题的分解、抽象,还有模块化的思想。
我们在教小孩子计算思维的时候,一定要关注他们的心理,有时候需要以儿童的方式教他们。我记得Seymour Papert曾经举过一个例子,他说小孩子在学习编程的时候,一开始他会当作游戏一样。例如,让他们写一行数字,第二行增加1,再写一行,一直写100行,这时候不要急着告诉他应该用什么语句,他会一行一行地写,小孩子会很开心,他认为写这么多行很有成就感,但当他写了二三十行以后,他觉得不耐烦了,这时候,老师告诉他循环语句,他们就会很容易接受。
学习模块化思想也是如此,简单的程序,学生没有将其模块化编程的动力,只有在做一些较大型的项目需要分工合作的时候,他们才能够理解模块化编程高内聚低耦合的价值与意义。通过学习调试程序,准备测试数据集,学生也能够体会到不同算法的优缺点。
对于计算思维,从教学方法上说,我们也不一定非要在学习某个程序语言的情境下培养。例如,有的孩子喜欢玩多媒体,在数字媒体表达中也会有一些小的编程;有的孩子喜欢做数据分析,哪怕就是用Excel,里面也会涉及VBA编程;有的孩子喜欢视频制作,喜欢修图,在这个过程中,也存在着任务的分解、组合,同样会有计算思维的体现。所以,信息科技课程教学活动中有很多可以培养学生计算思维的机会,应该能够满足不同的孩子多样化的兴趣。
魏宁:您刚才提到Seymour Papert,他是儿童编程教育公认的先驱,为广大信息科技教师所熟知,我记得您曾经专门向国内读者推介过他的著作,Papert对编程教学法有哪些有益的论述呢?
汪琼:Seymour Papert有一本著作叫The Children’s Machine: Rethinking School in the Age of the Computer(《儿童机器:重新思考计算机时代的学校》),它给我印象最深的是对儿童为什么要编程的论述,归纳起来有两点:一是儿童需要思维工具辅助学习和表达,编程环境可以成为儿童实现设想、检验假设的趁手工具;二是学生在编程学习中会认识到出错是正常的,很少有人第一遍就做对,学习就是一个改错的过程,这有别于学校给他们建立的非对即错的灌输文化,也是对他们终身发展最有价值的观念。所谓工程思维的培养,就是要学会诊断问题、学会修正错误、学会逐步优化,而不是过分完美主义,一做错就推倒重来。这两点对于我们设计信息科技课程的教学活动也是有启发的。
魏宁:我想这些都是很有价值的建议,值得老师们深思。对于编程的学习,您有什么比较成熟、经典的教学法,可以向老师们推介?
汪琼:对于编程学习而言,好的教学方法可以事半功倍。我个人比较偏好“结对编程(Pair Programming)”,因为这符合学生互助建构知识的天然学习状态。“结对编程”当然是相对“独立编程”而言的,在计算机行业中的结对编程,指的是两名程序员在一台计算机上协同开发同一个编程任务的工作方式。我们可以拿驾驶汽车来打个比方,当我们刚刚学会开车、还不熟练的时候,可以由一名驾驶员和另一名副驾驶员协同完成驾驶任务,驾驶员操纵车辆,副驾驶员在旁边指路并监控车辆运行。在结对编程的时候,控制键盘、鼠标并编写代码的人就相当于驾驶员,而持续观察、监控程序逻辑并提供辅助支持的人就类似于副驾驶员。在编程过程中,如果遇到问题,双方可以协商解决。结对编程要求两个人的角色过一段时间就要互换,以便发挥双方的特长。近年来,结对编程已经从企业走入了中小学课堂,国内中小学也有一些探索,目前已取得了不错的效果。
魏宁:一般而言,在教学中,学生都是通过独立编程来学习的,相对于独立编程,结对编程有哪些优点呢?
汪琼:实践证明,要想独立学好编程,并不是一件容易的事情。最主要的是在独立编程的过程中,容易产生孤独感和挫败感,对学习信心和热情也会造成负面影响。而且编程需要花费大量时间进行程序调试,包括定位错误代码,而结对编程恰好可以通过互相提问解答、及时发现问题、共同克服困难的陪伴,有效缓解上述问题。
魏宁:在结对编程的实施过程中,老师们需要掌握哪些要点呢?
汪琼:在编程教学中,结对编程需要注意以下几个要点。
第一,教师要向学生强调结对编程过程中双方即时交流的重要意义,要牢记“学习在交流中发生”的基本理念,学生要学会“出声思维”,通过交流、讨论发现问题、找出对策。
第二,结对编程的双方要定时轮换角色,这样不仅能让每个学生都有机会操作练习,还能促使他们同步思考。研究表明,每隔五分钟轮换效果较佳,有学生表示,这就像“跷跷板”,让学生感到更加平等,也更有趣味。
第三,教师要掌握不同的结对模式下所需的教学支持和干预策略,同质分组要为能力较差的小组提供即时支持、反馈,异质分组要更关注组内学生平等的角色划分和学习参与,并且通过观察学生的话语和行为表现及时调节他们的关系。
第四,在结对编程过程中要注重对学生元认知能力的培养,以帮助他们实现从结对编程向独立编程顺利过渡。
魏宁:在教学过程中,老师们还比较关注评价,尤其是对于计算思维的培养,如何进行评价?怎样评判学生的计算思维水平?这些或多或少影响到教学进程,也是老师们感到较难把握的。您如何看待计算思维的评价?