走进美国高中计算机课堂
张汶
如今,中小学计算机科学课程在美国得到越来越多的重视,计算思维、数字公民成为从联邦、州和学校培养的重要目标。笔者先后实地走访了芝加哥203学区2所公立高中、芝加哥93学区的1所学校、芝加哥公立莱恩理工学院预科高中、芝加哥大学实验学校、旧金山公立学区的2所高中,听取了芝加哥公立学区computer science for all项目办公室在课程推进、教师培训方面的介绍,观摩了5所高中计算机科学现场课堂教学,感受美国公立学校、特许学校、磁校、私立学校形态各异的计算机课程设置和课堂教学,并将此作为一个缩影,了解美国计算机科学基础教育的一些实际情况。
● 生活化和专业化的学习空间布局
走进美国高中计算机科学教室,笔者心里暗自赞叹了教室的环境,与上海各学校计算机房中台式机“矩阵”式排列相比,美国学校的计算机教室,像是一个工作坊,身处其中,首先感受到的是舒适。
计算机教室里计算机分成7个小组,以U形的方式环绕在教师周围,每个小组4台计算机,学生并未坐满,大约只有23人左右。学生或正襟危坐,或蹲坐,或半躺,或以各种姿势编写或调试自己的代码,学习状态放松、自在,但又十分专注。
教师的工作计算机放置在教室中间,讲授或演示的时候教师能环顾到所有学生。教室的一角,放置了几张工作台;教室中间或周围,或放置着一组沙发,或散放着一些软椅,无声地暗示着这是一个令人放松、具有吸引力的生活化的地方。
教室的墙面利用率很高,一面墙上是两个大屏幕投影,无论哪个角落的学生都可清楚地看到教师的演示,在另外两面则有一些大面积的白板。墙上很难找到空白的地方,随处可见一些便签式提示或者标语。例如,图示计算思维的四个要素及其具体含义、图示软件开发的四个过程(理解、开发、回顾和反馈)、图示编程的四个步骤(设计、编程、测试、调试)。教师还设计了用计算机编程语言呈现的趣味励志标语,定义了一个函数,写道“这里有一些可能的学习机会,如果你有问题,就问老师”。
又如,墙面上贴着保护视力20-20-20原则的图示,即每使用计算机20分钟便休息一下,向20英尺(大约6米)以外的风景(最好是绿色)远眺至少20秒。墙面上也贴着对学生遇到困难时的鼓励(如下图)。
教室是教育活动的核心场所,也是学生每日生活和学习时间最长的地方。教育学家Ralph W. Tyler认为,“教室的物理格局是影响学生学习行为与态度的最具影响力的要素”,教室中的有形元素(桌椅、沙发)与无形元素(学习氛围、教学秩序)对学生学习效果和教师教学态度具有双重影响,认知产生于一个包含大脑、身体和环境三大要素的自组织系统。
如果说孟子“劳其筋骨,饿其体肤”的古训在于告诫人们生于忧患的道理,那么这样的学习空间则践行了“学习者—学习环境”之“在场”关系,即物理环境(包括噪音、拥挤度、空气质量、温度、建筑设计、个人空间)等对人的学习会产生积极或消极的影響,学习并非是“脖子以上的学习”,而是全身心参与的过程。计算机教室中令人舒适的氛围、随处可见的专业书籍、可独立或合作学习的座位安排、随处可见的学习提示、教师的微笑和热情等,为学生全身心投入到学习中提供了支持。
● 个别指导是课堂最主要的教学环节
笔者与两位上课的教师进行了简单的交流,学校的计算机科学课程采用了AP课程体系,课程共计开设三年,第一年是学习Python语言,第二年使用JAVA语言,第三年学习软件工程,开展基于项目的学习。选择计算机科学课程的学生约占学生总数的20%。学生表示,他们已经学习了两个月,每天一节课,至今已经学习了40个课时。
教师均使用CANVAS系统,管理课程框架、教学日历、学习资源、学生作业,学生可以非常方便地阅读教师提供的学习资料,然后提交作业。值得一提的是,其中一位教师使用了在线的编程系统,学生编写的代码可以在线检测是否正确,所有学生的练习情况以“T”或“F”的形式,实时呈现在教师端,给教师提供及时的学习反馈。
第一节课是Python语言,教学目标是“能识别while loops循环结构的要素组成,能编写while loops循环”。教师先布置了一个小任务:阅读一段代码,并用不同的颜色标识不同功能的语句,如红色标识“函数”绿色标识“判断条件”等。这是一个设计很精巧的课堂小练习,目标是锻炼学生辨析循环结构的要素和组成结构,而大部分学生能够在很短的时间内基本完成该练习。随后,教师布置了新的练习题“crazy numbers”,并开始了个别指导,由于学生在编程和调试中的问题比较多,且大多需要不断调试,所以教师安排了学生之间一对一的互助。其间,关于课堂练习教师还进行了非常短暂的集中教学,用于分析大家遇到的问题。
第二节课是JAVA语言编程,学习的学生已有一年的学习经验,在编程方面显然更加熟练。学生在visual studio code平台上编写和测试自己的程序。与Python语言的教学模式类似,教师布置练习后,学生开始编程和调试,教师在7个小组中往返巡视,一对一解答学生的问题,师生对话友好且有指导意义。教师也采用了两位学生相互合作的方式,相互合作阅读对方的程序,共同阅读错误信息的提示,然后修改代码并继续调试。
上述两位教师的教学和指导,体现出较好的计算机科学的专业素养,大部分学生的问题能得到及时的解决,一些学生遇到的问题,靠学生之间的相互协作和指导,也有所优化和改进。
另外,美国的课堂教学十分重视个性化教学,而个性化教学得以顺利开展,离不开两个要素:一是学习空间的设置,无论是计算机教室,还是学校其他场所的学习空间,如实验室、走廊、图书馆等,均将学习设备、学习资源及教师讲授的区域做了合理安排,座位安排适合小组合作,各小组以环形方式围绕教师办公桌,支持教师巡视和师生交互。二是资源获取的便捷性,学生可随时使用笔记本电脑访问学习管理平台。教师在Canvas或谷歌教室等平台上建设课程计划,上传教学计划、任务安排、学习资源、学习范例、评价要求等十分完整的资料,且纲目清晰,查找方便,学生可通过平台了解整个学期每个学科的教学进度和安排,有利于学生自我管理和利用资料开展学习与研究。
● 思考与启示
1.兼顾教育公平需要良好的社会支持
(1)公立学区重视对基础学习要求给予保障
芝加哥公立学区(CPS)为了推进计算机科学课程,开展了 CS4ALL(为了每一个孩子的计算机科学)项目,项目办公室采取了一些措施,如从2016年开始将计算机科学列为必修课。这从制度上为芝加哥公立学校普及计算机科学教育提供了保障。此外,开发了《探索计算机科学》(ECS)课程教材。最后,由于计算机科学课程刚开始实施,学校缺乏具有计算机专业背景的教师来承担这门课程的教学,CS4ALL开展了教师专题培训项目,鼓励其他学科的教师报名参加,通过此项培训的教师才能担任课程教学任务。
从时间上看,这比上海开设高中信息科技必修课程整整晚了20年,从师资上看,芝加哥公立学区计算机科学的教师专业化培训还刚起步。观摩计算机教师培训的现场,由于培训对象是零基础,他们是历史等非计算机专业的教师,所以培训内容非常简单,如把两片面包中间夹上果酱做一个三明治,教师把过程一一罗列下来,这是对程序概念的初步理解。这样的教师专业化培训,一方面令人敬佩,因为它在培训课程设计的生动性和参与性方面值得借鉴,另一方面也令人担心,那就是缺少专业教育背景的教师能否胜任专业的计算机科学课程教学?
(2)私立学校注重为学生个性化发展提供条件
在私立学校、磁校或部分学区,计算机科学课程在师资、课程、资源、设备等方面都有明显的优势。例如,芝加哥大学实验学校的计算机科学课程,除了修习AP课程以外,还提供了大量选修课程,如机器学习、计算机硬件结构、人工智能、高级语言编程、软件工程等。学生不仅可以在学校里进行学习,还可以到大学实验室开展学习。又如,莱恩理工学院预科高中(Lane Tech College Preparatory High School)是伊利诺伊州一所公立磁校,学校计算机科学课程负责人详细介绍了莱恩高中计算机科学课程的设置情况,目前学校有18位计算机科学教师,有的教师有丰富的行业工作经验。学校共开设了13门计算机课程,这一方面为学生掌握计算机科学知识打下了广泛而扎实的基础,另一方面为学生提供了丰富的个性化选择机会。学校设计了计算机科学课程的“图谱”,并用实线和虚线表示课程之间的关系,清晰地表达学习的“路径”。计算机课程共分四类课程:广度大于深度的基础课程、需要创造出物理产品的课程、需要创造出数字产品的课程、需要计算机科学和商业化结合的课程。这四类课程中每类课程都会按难易(0~3)程度标识为不同级别,它们之间有一定的关联性,但不是特别强相关。例如,学生A想学“Android Apps(安卓应用)”课程,前提条件为“Prog I or AP CS A”,即必须先学习课程“Programming I”或者先学习课程“AP Computer Science A”。
(3)社会机构提供对弱势群体的服务
社会各界对中小学计算机科学课程的支持力度很大,成为推动教育的中坚力量,美国不仅有“编程一小时”活动,正在执行的还有“一百万计划”,目前已经成为独立法人的“一百万”计划基金会,旨在为100万名低收入水平家庭的孩子提供计算机硬件和网络,提高贫困家庭孩子成功的可能性,从而实现真正的机会均等。这项计划也吸引了美国大学委员会、可汗学院与之进行项目结盟,这些组织会根据参与“一百万计划”的孩子的表现,为他们提供更多资助。
2.要在实践中进一步思考教学方法的有效性
美国计算机科学课堂,学生参与度比较高,也由于课堂布置的学习任务有相当大的挑战,学生忙于编写代码和调试。但是这样的教学依然带来一些困惑。
(1)为何要学习新知,新知学习的必要性在哪里
文中谈到的两节课均为新授课,但是从实际教学的时间分配看,学生的课堂时间均在完成新的任务。如何思考新知识的价值?例如,新的知识是循环结构中嵌套分支(在while结构中嵌套if语句),教师通过布置任务,驱动学生应用这样的知识。然而,这样的结构从何而来?为何单纯的循环结构不能解決问题?为何一定要循环嵌套分支才能解决?分支嵌套分支为何不行?这样的结构还能解决什么问题?还有哪些可能的嵌套方式?似乎学生没有思考过,也未得到相关的启发。如果只是告诉学生使用循环嵌套分支的结构解决这个特定的问题,那么学生什么时候能有机会自主选择?
(2)如何领悟新知识的价值
教师布置了学习任务,学生编写程序完成任务,但是程序本身似乎仅仅为了练习技能。例如,用循环嵌套分支的结构,编写了一个分段函数,当输入数据介于某区间时,对数据进行平方操作,当输入数据介于另外一个区间时,对数据进行另外一个数学运算,该程序的意义在哪里?如果把任务与真实生活联系起来,如自动售货机、车库自动收费等软件和硬件,背后都有这样的基本结构,循环嵌套分支结构是非常基础的一种结构,可以在此基础上不断进行叠加,从而解决非常复杂的问题,完成这样的任务,对理解新知识的价值是否会更深刻?
(3)陡峭的学习曲线是不是大量个别辅导的成因
尽管学习的挑战性非常重要,但是无疑学习也需要支架,循序渐进地推进教学是一种基本的共识。尽管“渐进”步伐的大小因人而异,“循序”的安排可以有所不同,但是如何把知识学习与学生认知的步伐同步,是教学设计需要考虑的问题。笔者在观察课堂教学的过程中发现,教师从引入新知到开始解决新的问题,这个过程比较快,可以说,学习曲线比较陡峭。学生一旦上手做,就出现各种各样的问题,答疑和辅导几乎占据了所有的教学时间。设想一下,如果将学习曲线设计得更为平缓,先引入新知,然后模仿运用、迁移提升,最后再去解决问题,最终学生问题解决的质量、计算思维的培养是否更好?试错是有价值的,但是否所有的试错都有价值?如果可以找准学生的普遍问题,如循环语句的“条件”与判断语句的“条件”在学生普遍混淆的情况下,启发性地指导一下,恍然大悟的喜悦是否也更能增进学习的愉悦?如果指导学生使用变量跟踪的方法,思考程序的错误支出,“授人以渔”能否让学生更迅捷地解决问题?
短暂的美国高中课堂教学观察,只能是管中窥豹,很难说能从中得到完整的判断,亦不能急于得到确定的结论。但是,美国高中课堂教学的学习空间创设、教师对每一位学生问题的解答和指导、教师设计课程与课程资源良好的规划性,值得每一位计算机科学教师学习。