韩秋枫 王凤芹 杜晶
海军航空大学航空基础学院 山东烟台 264001
大学计算机基础课程以提高学生利用计算机程序解决实际问题为主要目的,从计算机基本概念和理论出发,突出算法讲解,逐步提高学生程序设计能力、交流协作能力和理论运用于实践的能力。课程教学采用Python 程序设计语言贯穿始终,Python 语言抽象了问题及解决方案,自动化问题求解,是“复杂信息系统时代”利用计算机解决问题最直观的表达工具[1]。
但历届学生反映Python 语言学习时间短,掌握不深,尤其对循环和面向对象部分的知识运用不熟练。2020 年12 月,笔者参加了学校组织的教员教学能力提升与教学创新研修班,从厦门大学的郭建鹏老师那里学习了O-PIRTAS翻转课堂教学模式,并将其运用在“大学计算机基础”课程中,较好地提高了教学效果。
O—PIRTAS 翻转课堂模式包括目标(Objective)、准备(Preparation)、教学视频(Instructional video)、回顾(Review)、测试(Test)、活动(Activity)和总结(Summary)七个环节[2],如图1 所示。
图1 O—PIRTAS 翻转课堂模式
第一步,需要制定合理的教学目标。教学模式将教学目标分为高阶目标和低阶目标。高阶目标主要对应课内、团体、探究,而低阶目标主要对应课内、个体、讲授。翻转课堂的核心为将低阶目标的实现挪到课前课外,课堂内主要进行高阶目标的达成。高阶目标和低阶目标不是分裂的,而是相互联系又相互区别的。教学目标的设定至关重要,对教学设计具有统领性。
第二步,做好课前准备活动。在这一阶段,教师要布置探究任务,在课前由个体完成。该探究任务的目的不是得到正确答案,而是通过此探究学生能够发展出必要的先前知识。
第三步,观看教学视频。这一阶段仍然是学生个体在课前完成,教师给学生提供教学视频,也可以设置一些测试题目,供学生看完视频自我测验,教师可监控学生的掌握程度。
第四步,回顾课前知识。从这一步转移到课内来,教师带领学生简要回顾课前视频的主要内容,这一环节主要是线上学习到线下学习的过渡,教师的讲解应简短些。
第五步,进行课堂知识测试。通过该测试,教师进一步掌握学生线上学习的学习效果,并进行有针对性的辅导。
第六步,开展课堂活动。前五阶段主要针对低阶目标,主要针对布鲁姆目标分类中的记忆和理解,课堂活动主要针对高阶目标来进行设计。高阶目标不只是包括布鲁姆目标分类中的应用、分析、评价和创造等知识领域目标,还可能包括其他领域的目标,如情感、动作领域等。
第七步,课堂的总结和提升。这一步是课内的最后一步,由教师对整个教学活动进行总结提升,明确地指明教学的重难点,帮助学生形成综合性的知识。教师还可以布置下一次课的课前准备,开启下一个O—PIRTAS 翻转课堂。
本文选取大学计算机基础课程中Python 程序设计的循环结构这一节作为实施范例来探讨说明。整个过程采用O-PIRTAS 翻转课堂模式,包括目标设定、准备工作、观看教学视频、回顾课前知识、课堂知识测试、开展课堂活动和课堂的总结和提升等环节。
教学目标在整个教学实施过程中起着统领作用,Python 程序设计循环结构这一节的学习目标包括以下内容。
知识目标:运用for 语句和while 语句实现循环结构;会使用break、continue 辅助控制循环结构的执行。
能力目标:能运用循环结构解决实际问题,具有从实际问题到计算模型转换的能力;具备良好的编程习惯,对同一问题能提出多种解决方案。
素质目标:能通过解决生活、学习中的具体问题,体会到利用计算机解决问题的有效性,并获得成就感;具有较好的团队协作意识,能与同伴一起分析问题、解决问题。
课程思政:通过程序的设计与调试,培养学生科学严谨的工作作风。
课前准备工作主要是激发学生的学习兴趣,学生在课上学习之前,先学习探索,准备先前知识。Python 循环结构这一节的先前知识主要有:1)学生熟悉Python 的输入输出语句;2)能用顺序结构、控制结构编写程序;3)能利用顺序结构和控制结构解决实际问题。教师给出准备工作的问题:试求1 ~20 之间的偶数的和。
教师课前选取中国大学MOOC 国家精品课程嵩天老师的Python 语言程序设计课程中的“4.3 程序的循环结构”这一节的视频,看完视频完成编程任务:中国航天火箭发射前,一般都会有倒计时显示,请你编写实现倒计时的程序。
这部分教师简要介绍10-15 分钟,首先教师简要讲解循环的四要素:循环初始值、循环控制条件、循环变量的变化和循环体语句。然后在遍历循环for 语句和无限循环while 语句中寻找循环四要素,并采用一分钟倒计时的例子来进行讲解。最后教师讲解break 和continue 的使用如何让循环变得更灵活多样。
课堂知识测试环节主要是对学生高阶目标的考核,能不能灵活运用循环结构解决现实问题。教师在雨课堂给出4 道循环结构相关的选择题,在educoder 实训平台给出一道编程题,题目为:航母拦阻索,用于将舰载机高速拦停,是舰载机名副其实的“生命线”。与岸基飞机着陆时可缓慢减速平飞大相径庭,舰载机着陆必须加速着陆,一旦拦阻索尾钩未能挂住舰载机,必须能快速拉升逃逸。因此舰载机着陆对甲板阻拦装置要求极高。2012年11 月25 日,我国首次舰载机阻拦着舰试验已取得圆满成功!从舰载机尾钩与拦阻索“拉钩”开始到飞机停下全程时间只有2-3 秒。请编写一个能统计航母拦阻索N 天内“拉钩”总次数的程序,若拦阻索的拉钩次数超过100 次,则给予提示,不再累加。学生可以自由选择用while 语句或for 语句来完成,并比较两者的相同与不同之处。
本次的课堂活动围绕如何统计计算多道拦阻索的拉钩次数展开;进一步拓展要求为:将各道拦阻索拉钩次数从多到少排序,可以采取冒泡排序、选择排序、堆排序等多种排序方法,为下一次的拦阻计划做准备。排序问题一直是历届学生的难点,需要用到循环嵌套并掌握住排序方法。学生可分组讨论,一步步给出解决问题的详细方案,并给出代码。教师轮流观察各组进展情况,适时给予指导,确保每位学生都参与进来,而且是深度参与。
冒泡排序和选择排序是学生用得最多的排序方法。无论是冒泡排序还是选择排序,学生都给出了他们的优化算法,尽可能地减少数据交换次数。学生完成后,会进行小组互评。最后评选出用时最短、代码最整洁和算法效率最高的小组加分。
优先完成任务的组,还可以继续探究用循环结构解决经典问题:如百钱百鸡问题、背包问题等。
教师通过选取上述小组的作品来进行点评、讲解和总结。用循环结构解决问题时,要找到循环四要素,必要时灵活使用continue 和break 语句。并针对排序相关算法进行总结规律,分析冒泡排序和选择排序的时间复杂度和空间复杂度。
整个教学过程可总结如图2 所示。
图2 O—PIRTAS 模式下Python 程序设计课堂
O-PIRTAS 翻转课堂教学模式,遵循的是探索—讲授—应用的思路。学生在学习内容之前,先激起他们的旧知,学生利用旧知探索新知,再通过课前视频的讲授和教师在课上对内容的回顾和讲授,加深对知识的认知,然后学生在课上通过课堂活动对新知进行巩固加深和应用。将之前被动的学习知识变为主动去探究应用知识,从“要我学”变为“我要学”。
笔者将这种教学模式应用在了2020 级学生的大学计算机基础课程中的Python 程序设计模块,经Python 模块单元测试成绩来看,比上年同期学生成绩提高18%,通过学生座谈了解到学生比较喜欢这种教学方式。
学完本门课程后,有3 名学生对编程特别感兴趣,打算自己研究做个小的信息管理系统,统计学生的学习成绩、内务表现、受表彰情况等,利用自己所学为学生队做贡献。
第一次将O-PIRTAS 翻转教学模式用于Python程序设计教学,取得了较好的教学效果,但也有很多做得不好的地方,将经验和实施策略总结如下。
1)提供的教学资源尽可能丰富,包括国家精品课程在内的线上资源、实训平台的编程任务以及相应的案例,但不能过多,必须指明看哪一段视频,做哪一个实训任务,资源精简有针对性。
2)要切实提高学习的学习积极性,通过测试明确学生的薄弱点和易错点在哪里,及时调整课堂活动的探究点,必要时给学生提供学习支架;探究活动时加强深层次的生生互动,让每个学生在学习中都有收获;建立良好的评分机制,包括学生的个人学习成绩、小组成绩、小组互评成绩等,多鼓励学生积极参与到知识探究中来。
3)每节课教学目标分出高阶目标和低阶目标,目标定位要准确,对学生的已有知识要清楚,能分清哪些对学生是高阶目标,哪些是低阶目标。
4)教师要精心备课,准备多种教学方案,做好各种预案,同时善于利用信息技术提高课堂教学效率,如会使用视频编辑软件等截取制作短视频、会使用概念图工具进行总结等。
O-PIRTAS 翻转教学模式将课上和课下较好地融合了起来,强调充分发挥学生的主观能动性和主体地位,强调目标的分类,将低阶目标的知识转移到课外学习,高阶目标的知识在课上探究,极大地提高了教学效果。该教学模式具有较强的灵活性,但也对教师提出了更高的要求。将此教学模式应用于Python 程序设计知识,在设计探究活动时,必要时提供代码支架,探究案例可保持一致性。可以较好地提高学生的计算思维,提升学生应用计算机分析问题、解决问题的能力。