计算机程序设计课程的线上教学实践探索
2022-05-17徐建军周会平陈振邦
徐建军 周会平 陈振邦
(国防科技大学计算机学院,湖南 长沙 410073)
计算机程序设计是国防科技大学(以下简称“我校”)的一门公共基础课程,受疫情影响,2020 年春季学期该课程全部采用线上教学。首先,与传统课堂教学相比较,线上教学的教学方式和效果受到很多因素的影响和制约,例如通信网络和教学平台难以持续稳定、师生在线上交互不方便、居家学习的干扰因素较多(教学效果很大程度上与学生的自律性有关)等。其次,计算机程序设计是一门实践性非常强的课程,其核心教学目标是教会学生编写程序,培养学生用计算机程序进行问题求解的能力,线上教学也应该始终围绕这个出发点来进行。
针对以上教学过程中可能存在的问题、客观条件的限制,以及计算机程序设计课程的核心教学目标,课程组组织集体备课,确定了“五位一体”线上翻转课堂的基本教学思路,对教学内容和教学方式进行了适应性调整,基于互联网、自研自建的多个教学辅助平台和信息化资源,进行了一系列的线上教学改革探索,取得了令人满意的教学效果。
一、教学探索和改革措施
我校计算机程序设计目前教授的是C++语言,该语言的特点是内容庞杂、知识点零散,同时对编程实践要求高。基于开展线上教学的特定需求以及已有的信息化教学资源,课程组确定了开展“五位一体”线上翻转课堂教学的基本教学模式。
所谓线上翻转课堂教学,是指基于网络和信息化手段开展翻转课堂教学。如图1 所示,所谓“五位一体”指的是:在课前要求学生自学配套的MOOC 课程,预习教材对应章节,并总结自学过程中遇到的问题;课堂上检验自学成果,针对一个实际案例引导学生得出问题求解步骤,总结本堂课的核心知识点,并进行限时的编程练习,对学生的完成情况进行点评和答疑;课后基于网络实训平台布置编程实践题目,平台可以对学生的代码进行自动评测,以获得及时反馈;通过多种线上交互方式为学生提供全程的答疑辅导,并录制系列微课便于学生复习巩固;最后,通过网络模拟测验、学情数据分析等信息化手段跟踪学生的学习掌握情况,督促重点学生,形成教学闭环。下面介绍具体的教学实施环节。
图1 “五位一体”的线上翻转课堂教学
(一)课前预习
上课之前,教师给学生发送电子版的教材和学习参考资料,通过班级微信群等方式预告本次上课的主要内容,要求学生在课前做好预习和准备工作。课程组在“学堂在线”网站上开设了配套的计算机程序设计MOOC 课程,MOOC 课程的内容完全覆盖了本课程的所有知识点。在上课之前要求学生必须看完本次上课相关章节的教学视频,完成MOOC 课程上发布的相关练习题。通过这些准备工作,学生已经基本了解和掌握了本堂课的主要知识,同时还要准备1~2 个自学过程中遇到的问题,通过金山共享文档的形式提交,以待课堂上与教师进行交流。这些准备工作都为翻转课堂教学的顺利开展奠定了良好的基础。
(二)翻转课堂教学
我校2020 年春季学期指定的教学平台是雨课堂,雨课堂将信息技术手段融入PowerPoint 和微信,支持弹幕、投稿、随机点名等多种互动方式,为开展混合式教学提供了有效的解决方案。但雨课堂在大规模访问时,视频和语音直播的效果难以满足要求,所以还要配套一个视频会议平台以便于课堂直播,实际选择的平台包括腾讯会议、Zoom、腾讯课堂、钉钉等。
课堂上首先通过课前测试的方式检验学生课前自学成果,并提出本次课要解决的问题及重难点。然后,结合本次课的授课内容引入一个现实案例。这些案例都来源于实际的工程技术问题,例如:线性拟合、牛顿迭代、计算地球大圆距离、信息加密、地形导航、DNA分析、地震监测等。授课时围绕如何求解这些真实的问题,启发学生一步步思考。在这个实战化训练过程中,让学生体验如何把一个现实问题转化成计算机求解的步骤,以此来培养学生针对实际问题的分析能力和求解能力,从而把编程知识的讲授植入问题求解能力的训练过程中。
在进行具体教学时,教师讲授时间尽量不超过课堂时间的一半。要将更多时间留给学生做课堂编程练习,一般每次课教师都会结合课程内容设计两道左右的编程练习题,每道题限定10~15 分钟完成。我校开发部署了Trustie 网络教学平台(https://www.trustie.net/),教师可以基于该平台发布编程题目和设计测试用例。学生先在自己计算机的IDE 开发环境中按要求编写测试好程序,再提交代码到Trustie 网络平台,平台可以在线进行自动评测,只有所有测试用例通过才算完成。平台给学生、教师的反馈非常及时,教师可以在课堂上及时掌握学生的学习情况。针对学生的完成情况和提交的代码,教师通过视频会议平台进行讲评和总结,通过IDE工具与学生一起调试程序,指出其中普遍存在的问题并分析原因。在剩余时间中,学生可以通过语音交流、共享屏幕等方式就自己的问题与教师进行交流和研讨。最后,教师进行课程总结,梳理重难点,布置课后作业,并预告下次课的内容。
针对线上教学的特点,授课过程中教师要多与学生进行线上互动,以集中学生的注意力和获得学习反馈。学生可以通过雨课堂弹幕、文字聊天室、班级微信群等多种方式与教师和助教交流。
(三)课后编程训练
毕竟课堂时间非常有限,而学习程序设计的核心是多做编程实践,很多知识点只有通过大量的编程实践才能掌握。所以,除了课堂上的编程练习,每个教学班都基于我校自研的EduCoder(https://www.educoder.net/)和Trustie 两个教学平台,布置了配套的课后编程实践作业。
EduCoder 编程实训平台可以实现对于每个知识点的检测和训练。该平台是一个游戏闯关式的实训环境,全部是程序设计题目,只有测试用例都通过才能过关获得经验值,如果是看参考答案过关则要扣经验值。网站上还提供很多与本单元相关的背景知识,便于学生自学。课程组在EduCoder平台上自建了9大实训、49道关卡、300 多个测试用例,涵盖了课程教学的全部授课内容。此外,多个教学班还在Trustie 平台上布置了一些开放性、综合性比较高的编程实践题目,内容与每次上课内容密切相关,这些题除了基础知识题目,还有部分难度较大的拓展提高题目。
(四)全程答疑辅导
教师和助教主要是在班级微信群、答疑论坛里为学生开展全程答疑辅导。除了在课堂上来不及回答的问题,教师还通过共享文档和网络投票等方式收集学生的问题,然后把这些问题分配给各个助教,再通过视频会议和班级微信群等方式为学生答疑解惑。LearnerHub答疑论坛是我校开发的一个专门性学习问答平台(http://learnerhub.net/),课程组要求所有助教必须注册该论坛,要经常性地在该论坛上回答学生提出的问题,同时共享一些学习资源。
在课程后期,授课教师还组织了两次课堂上的“群体化答疑”,即学生以分组的形式提出问题,然后把这些问题分配到其他小组,由其他组的学生回答,教师在这个过程中起引导和辅助的作用。这种方式达到了让学生互相学习的目的,取得了非常好的效果。此外,我们还针对学生反映的共性问题录制了“程序设计拾遗”系列微课,方便学生自学和巩固。
(五)学情跟踪
在线上教学过程中,由于居家学习无人监督,少部分自律性不强的学生与教师和助教的交流不够积极,完成作业也比较拖拉。所以教学过程中必须加强对学生学习情况的跟踪,尤其是要重点关注那些学习情况不太理想、平时与教师交流也不够积极的学生。除了雨课堂生成的课堂统计和分析数据,课程组每周还通过脚本程序自动统计Trustie 和EduCoder 上编程实践作业的完成情况,以可视化图表的形式直观反映学生的学习情况,跟踪学生学习状态。根据平台数据分析学生学习行为,适时调整教学进度,并对重点人员进行跟踪督促。
综上所述,在本次线上翻转课堂教学过程中,课程组通过自建或采用已有的EduCoder编程实训、Trustie 编程实践题目、微课等网络教学资源,充分利用视频会议平台、雨课堂、金山共享文档、LearnerHub 答疑社区、自编跟踪分析工具等信息化手段,顺利完成了本学期的课程教学。
二、教学效果调查
课程开始时进行了线上教学需求的问卷调查。课程完结后,组织了线上教学效果的总结调查。从调查结果来看,学生普遍对此次计算机程序设计课程的线上教学效果高度肯定(5 分制评分的平均得分为4.35)。很多学生对这种翻转课堂的教学模式印象深刻,认为在网络环境下课堂学习更专注、交流互动更及时、课后学习更自由。对于计算机程序设计这门课,相较于传统的课堂教学,有82.36%的学生更倾向于线上线下混合式教学,甚至是完全的线上网络教学。
表1 部分调查结果
对翻转课堂教学要求的课前预习工作,88.18%的学生全部完成或基本完成。每次完成这些课前准备工作,平均需要2.04个小时。对课程布置的课后实训作业,每周平均完成时间需要6.46小时。
此外,学生普遍认为此次线上教学采用的课堂共享屏幕、课堂限时编程测试、自学MOOC 课程、视频回放等教学手段的效果比较好。通过这门课的学习,学生觉得在C++编程语言学习、编程思维训练和程序设计调试等方面收获较大。
三、教学总结和改进建议
通过此次教学实践,笔者认为对于计算机程序设计这门课程,线上教学和翻转课堂相结合的教学模式是完全合适的。课前学生通过自学预习课程内容,课上教师基于视频直播平台梳理知识点、进行编程练习指导和交流互动,课后利用网络教学平台进行编程实践训练,全程综合使用多种线上交流方式开展答疑和辅导,达到了预期的教学目的。
但是,线上教学的客观条件在某些方面也确实影响了教学效果。如图2所示,教学调查的统计结果显示,学生认为影响学习效果的前三项因素包括:不能面对面跟教师、助教和同学交流,网络和教学平台不稳定,居家学习无人监督(自己不够自律)。
图2 影响教学效果的关键因素调查结果(多选题)
虽然通过网络进行交流能够克服时空和地域的限制,但是线上教学由于不能与学生直接面对面互动,代码分析和程序调试等教学环节不方便开展,教师无法直接及时了解学生的学习状态,学生一直面对屏幕学习也容易产生疲劳。所以,教师可以通过共享桌面、远程调试等技术手段在线上与学生一起分析程序代码,帮助学生解决编程过程中出现的问题。同时,在课堂教学过程中需要多安排问答、投票、简单测试等方式与学生交互,一般建议10~15 分钟安排一次,通过交互了解学生的学习情况,活跃课堂氛围,缓解疲劳。
另外,由于课堂时间有限,课后教师仍然需要通过班级微信群、答疑论坛等多种方式同学生持续交流。如图3的调查结果所示,在线上教学交互方面,大部分学生认为有效的交流方式包括:视频会议平台上直接语音或文字交流、课堂编程练习、课堂投票测试等。
图3 线上教学的有效交流方式调查结果(多选题)
由于网络不稳定、学生无法准时到课等不可控因素,线上教学要求必须录制教学视频,然后分享给学生,方便学生课后回放观看。由于居家学习无人监督,少部分自律性不强的学生与教师和助教的交流不够积极,完成作业也比较拖拉。所以网络教学过程中必须通过一些信息化手段加强学情跟踪,尤其是要重点关注那些学习情况不太理想、平时交流也不够积极的学生。
此外,从教学调查反馈结果来看,学生希望教师能够增加课堂编程练习,讲解习题难题,适当拓展教学内容,提高网络平台稳定性,提供更多学习资源等。有些学生期望助教能进一步加强交流、答疑和辅导工作。这些都是未来在教学实施过程中需要加强和改进的环节。
四、结语
此次新冠肺炎疫情对各个高校的教学实施提出了很多挑战,但同时也为教学内容改革和教学模式创新提供了机遇。在这次集中的线上教学过程中,针对计算机程序课程的特点和需求,我校探索了“五位一体”的线上翻转课堂教学,充分利用了互联网上的各种网络教学平台,并自研自建了多个信息化课程资源,综合运用了多种教学手段和方式,取得了良好的教学效果。未来,我们将结合教学实施过程中存在的问题,进一步研究线上教学的改进措施。