计算机专业Python课程混合式教学实践探究
2023-04-06薛希玲李沁
薛希玲 李沁
关键词:Python课程;混合式教学;在线判题系统;教学实践
0 引言
为顺应高等教育由重知识到重能力、从以教师为中心到以学生为中心的转变,教学方式的改革是大势所趋。同时,线上教学平台的快速发展在改变学生学习方式的同时,也给教学方式的改革带来新的机遇。得益于功能日臻完善的网络教学平台,在传统教學中难以解决的人数多、课时少、师生互动不足、教学模式单一等问题都能够找到新的解决方案。网络学习空间作为在线学习的“基础设施”,从服务课堂教学拓展为支撑网络化的混合式学习,为学习者提供丰富的学习资源,构建便捷高效的实践教学平台。面向社会需求和人才培养目标,面授教学与在线教学深度融合的教学改革正在迈向常态化。线上线下、课内课外学习活动相结合的混合式教学模式对提高学习效果、发展学生能力的作用已经获得广泛认同[1-3]。
本文研究如何在Python语言程序设计课程教学中实施以培养编程能力为核心的混合式教学模式。首先分析课程教学面临的问题,然后介绍线上线下结合的教学改革措施,阐述混合式教学模式的实施方案,最后总结该教学模式的特色。
1 课程目标及存在问题
1.1 课程目标
Python语言是计算机各专业的选修课。课程通过以问题驱动的教学模式,旨在让学生学会编写结构良好的、体现Python特性的代码,为学生使用Python 语言解决机器学习、数据分析及可视化等领域的问题打下坚实基础。具体而言,学生需要
1) 理解语言基本特性,如动态类型等;
2) 熟练使用序列处理数据;
3) 熟练掌握流程控制,包括选择、循环、异常机制等;
4) 使用函数特别是高阶函数批量处理数据;
5) 理解并学会使用迭代器和生成器存储和访问数据;
6) 理解Python 的OOP机制,学会编写面向对象程序;
7) 学会读/写文本/二进制文件,熟悉数据库操作;
8) 学会使用pandas 库分析数据,使用matplotlib 库可视化数据。
1.2 课程存在问题
1) 作为近年来最流行的语言之一[4],Python也受到越来越多学生的欢迎。Python程序设计成为热门选修课程。在班级大、人数多的情况下如何提高教学效果、保证教学质量、激发学习兴趣?
2) 学生经过前期学习在专业知识和能力上已积累了较大差异,呈两极分化态势。怎样设计课程既能让后进生完成学习目标又具有一定的挑战性不伤害头部学生的学习积极性,使所有学生都获益?
3) 学生接受过C语言编程训练,具有一定的编程基础。这也导致了学生习惯用C语言的编程思路解决问题,代码效率低下甚至出错,没有充分发挥Py?thon语言的优势。作为一门面向计算机类各专业的课程,如何引导学生写出“Pythonic”的代码,切实提高学生的编程能力?
2 教学改革措施
针对上述问题,转变思路,充分利用网络教学空间,提出如下教学改革举措。
2.1 弱化知识讲解,引导学生自学
有C语言作基础且Python更易上手的情况下,课程目标中知识类内容交由学生自学。程序设计类课程重要的不是知识点,而是要让学生学会通过编程解决问题。编程所需的知识不仅可以从网上获取,学生之间也可以通过交流快速解决。在信息的获取十分容易的当下,把知识类的教学内容交给学生自己掌握既提高了学生学习的主动性,又可以转变满堂灌的课堂教学模式,将宝贵的课堂时间用于引导学生思考解决实际问题,提高编程能力。为方便自学,建设网络学习空间提供所需的材料与环境。为保证自学效果,需要配合测试环节检验课程目标的达成度。
信息化辅助教学平台是教学设计的重要因素,认真调研与分析平台功能的完善程度等因素后,选择超星平台作为配合教学展开的主要平台,目前已建成包含数百道题目的题库、全套教学短视频、配套课件以及其他课程材料的学习平台。
2.2 加强编程能力训练,注重计算思维培养
编程能力是计算机各专业学生核心能力之一,切实提高学生的问题解决能力是课程的重点。仅靠讲课学生不可能学会编程,需要学生完成足够数量兼具一定思维含量的题目,并从精简代码提高效率的角度打磨代码,避免用C语言的思路编写Python 程序,引导学生在解决问题的过程中提升编程能力。
运用计算思维解决问题本质上是将客观世界中的问题进行抽象和重构后,经由算法实现机器的自动处理,以解决系统设计等问题[5]。但“思维”是很难“教”的,只能让学生通过训练自己“悟”[6]。让学生习惯于针对特定问题进行分析、抽象,借助于已有的计算生态,设计算法求解问题,在解决问题的过程中逐步塑造其计算思维。
为满足编程训练的需要,在“Python123”平台上建设符合计算机专业培养目标的全编程题库,包含近100道覆盖课程所有内容的题目。该平台具有在线判题功能,学生可以在线提交程序源代码,平台对源代码进行编译和执行,并通过预先设计的测试数据来检验程序源代码的正确性。
3 充分利用网络教学空间实施混合式教学
采取线上线下混合的教学方式,学生根据指定的学习任务,在线上平台进行自主学习并完成达成度测试,课堂上进行深入讨论、迁移应用与内化吸收,课后通过作业巩固拓展,基本流程如图1所示。为此,需要合理组织自学内容和课堂讲授内容,精心设计自学内容通关测试,合理规划课堂教学进程,设计教学活动激发学生的学习兴趣。教学设计需要注意:
1) 为了降低学习难度,方便学生不受时空的限制学习,提供给学生松耦合性、模块化的学习内容,学生可以利用碎片化时间完成。
2) 教师和学生上课均需携带笔记本,以便进行现场编程。课堂教学环节边讲边练,讲服务于练,凸显学生在学习过程中的主体地位。同时设计合理的教学互动以提高课堂关注度。
3) 评价体系不可过于复杂,评价标准避免过于细化,否则可行性将大打折扣。借助线上判题系统,评价标准做到客观统一,不采用生生互评的形式。
3.1 基础知识在线自学与评测
教师提前在网络平台上发布视频、课件、习题等教学资源,并发布学习任务引导学生进行自主学习。为自学内容设计以客观题为主的测试题目,测试环节的设置是保证自学效果的重要因素。将测验发布为自主计时的通关考试,要求学生在课前任意限定的时长内完成,成绩没有达到标准的同学批量打回重考。在网络平台统计数据的支持下,分析测验中发现的共性问题,检查学生对基础知识的掌握程度;同时结合线上数据反馈选择课堂内容,设计教学过程,实现在线学习与课堂教学的有机结合。
3.2 问题驱动的课堂教学
课前可以根据课程内容选择上次课重点内容或本次课的预备知识抽取数道客观题利用五分钟左右的时间进行随堂小测验,以阻断学生沉迷于手机的状态使之切换到课程学习中,起到预热课堂的作用。
课堂教学采取问题驱动的方式,通过案例引出问题,引导学生对问题解决的关键环节进思考,要求学生运用预习知识进行现场编程,在分析和解决问题的过程中提升编程能力。大多数程序设计问题不止一种算法,引导学生思考更简洁更高效的方法,鼓励学生分享自己的解题思路,实现灵活的课堂反转。这样不仅可以拓宽解题思路,激发学生的潜能,同时也充分挖掘Python 语言的潜能。最后引导学生对问题解决过程进行反思,考虑程序背后的抽象思维使学生有更加深刻的认识。
合理设计教学互动,提升学生的积极性。对课程中某些较难理解的内容设置课堂讨论环节,如Python 函数传引用的机制,引导学生主动思考理解并掌握这些知识点。还可以利用平台的抢答功能发布问题带动学生的学习热情,吸引学生的注意力。如发布抢答题目“PyCharm注释代码的快捷键是什么”?进一步地,还可以请同学分享其他快捷键。
课堂组织开展流程如图2所示。下面以课程中的一个模块化的内容Iterator为例阐述课堂教学过程。
1) 提出问题导入新课:不借助下标的情况下如何使用while循环遍历给定字符串序列?
2) 通过步骤(1)for循环的内部实现理解迭代器协议,即支持__iter__和__next__两个特殊方法的对象都可以使用for循环遍历;
3) 由迭代器协议引申出Iterator类的定义。设计问题:定义Iterator类生成Fibnacci数列,加深理解并训练编程能力。
4) 设置分组讨论加深对迭代器协议的理解:哪些类型的对象可以使用for循环迭代。
5) 总结和拓展:引导学生思考怎样生成一个可用for循环遍历的无限序列?为什么需要这一机制?
步骤1) 和3) 需要学生现场编程,教师视整体进度给予恰当引导或个别答疑;学生也可以相互讨论完成作答,平台即时反馈程序是否通过测试。要求所有同学当堂解决出现的问题,程序运行正确无误。
3.3 因材施教的分层作业设置
上机实践是程序设计课程整个教学过程中提高编程能力、掌握调试技术最重要的环节。上机题目结构与课堂编程练习相似或相近,便于学生完成知识迁移;拓展和延伸课堂问题,适当增加问题复杂度,学生跳一跳能够得着。课堂教学结束后在Python123平台上发布,学生在线上作答,由机器自动批阅并生成分析报告。
为了照顾不同学生的差异性,为学有余力的同学布置设计型作业。教师发布设计要求,制定评分标准,学生自行组队,根据个人兴趣自主选题,通过查阅资料设计和实现一个有创意的应用程序。课程结束时安排优秀作品在课堂展示,作为反转课堂的一部分,检验课题完成度和所用技术的内化程度。鼓励学生继续完善优秀作品,不断提高学生的创新实践能力。往届有课程智能答疑系统、房价数据分析与可视化、表情控制的Python游戏等项目最终作为毕业设计课题或参加马鞍山市的设计类竞赛。
3.4 及时反馈的评价体系
课程的评价体系分为形成性评价和总结性评价。形成性评价用来衡量学生的学习效果,提供反馈以便学生及时查漏补缺,教师合理安排侧重点有针对性地展开教学。主要包含通关测试、阶段测验、上机作业等;总结性评价以期末考试的形式决定学生本门课程的目标达成度。及时通报测试成绩、作业提交情况,做到信息公开透明,激励学生主动学习,提高教学效果。
上机练习学生可以讨论交流、查阅资料完成,不计入总成绩,但学期结束视未完成次数扣分。在教学目标中每个专题结束后组织阶段性测验,从题库中抽取若干和上机练习同构的题目,检验学生是否已掌握,防止拿来主义和敷衍了事。学生自选的设计型作业作为加分项,按完成质量酌情加分。期末考试设置为线上全编程测验,重点考查学生运用计算思维解决问题的能力。以上考评机制的内容及说明见表1。
课程最后将超星平台上的通关测试成绩和Py?thon123平台上的阶段测验成绩导出后发给学生,利用pandas+matplotlib库按照设定的比例计算出平时成绩,并从课程单元、学生等角度给出成绩的可视化分析,作为课程最后一次作业。
4 结束语
线上线下混合的教学模式下强调学生自主学习能力和问题解决的能力培养。该模式的主要特色有:
1) 关注学生个体差异,守住底线,提高上限
通关测试和课堂编程训练保证了学生对基础知识和基本编程技能的掌握,为教学目标达成把好关。平台对学习效果的实时反馈也使得学生可以及时发现问题,补齐短板,避免积重难返。及时汇总并发布各环节的成绩,为平时成绩低的同学提供学业预警。课堂分享自己的思路和想法、展示项目成果给成绩优秀的同学提供了很好的展示平台,获得荣誉感的同时又激励他们投入更多精力到课程学习中。
2) 重視编程能力培养和考核
课堂穿插具有代表性的编程练习调动学生的积极性,主动思考解决问题,让学生觉得编程有趣、有用。Python语言的特色使得学生能够基于丰富的第三方库快速编写应用,设计型作业有助于提升学生学习兴趣,对于学生后续在各领域的应用提供了有力的支持。注重学生编程能力的考察,利用Python123平台快速组卷、在线监考、自动评阅等功能,配合已经建立的题库,支撑阶段性测试和期末考试的全编程考核。
课程从2021年春季学期开始全过程采用了混合式教学模式,学校评教情况反映学生的满意度有较大提升,不及格人数得到控制。2022年春季学期选修人数增长了一倍,临时增设了一个班级。由于疫情原因本学期教学主要在线开展,无法现场监督指导学生编程,导致学生整体表现有所下滑,这也说明面对面授课的重要性。