罗荣良,吴明晖
(浙江大学城市学院 计算机与计算科学学院,浙江 杭州 310015)
互联网技术的快速普及,对现有高等教育的教学模式产生了较大的影响,特别是MOOC(Massive Open Online Courses,慕课)的广泛应用,为普通应用型本科高校提高教学质量提供了很好的解决方案。笔者所在学校面向对象程序设计课程采用Java 语言作为开发语言,主要讲述Java 语言基础和面向对象设计方法。学生通过课堂学习和实践,掌握面向对象基础知识和基本技能,为计算机专业相关的课程打下基础。
面向对象程序设计语言是计算机专业的核心专业基础课,如何让学生更好地树立计算思维,并具备基本的程序开发能力,对学生后续课程的学习起到非常关键的作用。部分同学因为程序设计基础没有学好,导致后续一系列课程都产生了困难,部分严重的同学甚至不能顺利地完成学业。如何能在学习程序设计阶段让每位同学都能较好地掌握基本的程序设计思维和开发能力,是一个非常值得研究和探索的课题。
以笔者所在学校计算机专业面向对象程序设计课程为例,课程在大二第一学期开设,采用2-2 的形式,每周2 节理论课加2 节实践课共64学时。因为每个班级上课的学生较多,一般在70 人以上,如何保障每位同学都能达到课程目标,依靠传统的教学方法进行了多次尝试,但效果都不是很明显。分析其原因,在理论课中教师根据事先准备好的课件在上面讲解,而下面听课的学生缺乏参与度,会造成部分自控力差的同学拿出手机,一旦拿出手机,在没有人去制止的情况下很难停下来。教师因为要讲解课程,很难分出精力去阻止这些情况的发生,导致了学习效果不明显。教师的讲课内容主要针对大部分同学,这导致部分学习好的同学感觉进度偏慢,而部分接受能力较弱的同学则感觉跟不上。特别是前面几次课程,如果同学不能很好地跟上进度,则后面大半个学期就很难跟上课堂的节奏,甚至自我放弃。学习动力动机决定了学生的学习方向、学习态度和学习进程[1],如何让学生有持续的学习动力,值得教育工作者不断地探索。
在实践环节,因为学生人数问题,教师忙于解答学生在实验过程中的问题,没有时间仔细查看每位学生所编写的代码,有时候即使老师看一下代码,如果不是特别仔细地分析,也难免未能及时发现程序中不完善的地方。在这种情况下,学生在编写完成代码后,看到运行结果正确,就认为程序真的正确了,而实际上没有考虑周全,存在很多不够完善的地方,而这些地方却是程序设计中更需要关注的。另外,实验过程中因为教师较难在课堂上及时检查和反馈所有学生的作业情况,需要学生把作业作为附件的形式上传到FTP 平台,教师再下载然后一个个去批阅,找出在检查过程中发现的问题,并给学生打分。这种检查作业的方式使学生不能及时获得反馈,也花费教师大量的时间,学习效果不明显。
目前工业企业在大规模的采用自动化手段来提高产品的质量,并有效地提高了工人的工作效率,教学上如何提高培养学生的学习质量和学习效率也是一个值得研究的内容。互联网技术的发展为教学效率的提升提供了技术支持,MOOC 上有很多优质教学资源可以利用,而学生又很想获得优质教学资源,通过课程改革实践使得两者之间能够很好地结合起来,如图1 所示。只在课堂教学阶段采用MOOC 资源,并未达到真正的“混合”教学的预期效果[2]。同时,在工程教育专业认证中非常强调人才培养的明确性、可衡量性,而程序设计实验辅助平台为程序设计课程效果的明确性和可衡量性提供了技术支撑。
在实验过程中采用部分自动化的工具或平台来提高检查作业的效率,快速给学习者以反馈,让学生知道程序中存在的问题,非常有利于提高学生的学习效率,也提高了教师检查作业的效率。在实践环节利用PTA(Programming Teaching Assistant,拼题A)程序设计类实验辅助教学平台提供的课堂测试功能和代码评测功能,可以快速地检验学生掌握的情况。利用平台的测试功能在上课开始的时候进行测试,检验学生MOOC 和翻转课堂教学中学习情况。这样做有多方面好处,首先能够督促学生认真地学习MOOC 课程,提高学生的在线课程学习的参与深度和广度;其次,教师可以了解大部分学生的知识点掌握情况,为课程的开展和实验题目的选择提供了很好的依据,还可以及时发现部分知识掌握明显有问题的学生,及早进行干预,避免以前要到期中考试才发现问题,这时候去干预就为时已晚;最后还可以作为到课情况统计,进行课前测试后,学生上课迟到现象基本上得到制止,还能使学生很快进入上课状态。
图1 基于MOOC 平台和PTA 平台的课程教学流程
通过测试和练习结果,实时了解学生的习题完成情况,掌握学生普遍存在困难的题目,有针对性地进行讲解和指导。根据实验情况,及时调整课程进度,并设置针对性的内容在理论课上讲解,也可以提出专题让学生讨论。同时测试和练习的结果作为平时的学习成绩记录在册,做到了全过程评价。
Java 类面向对象程序设计课程作为核心专业基础课,在MOOC 平台上开设课程的教师比较多,有较大的选择范围,要找到和本单位教学任务非常匹配的高质量MOOC 也不是一件非常容易的事情,还需要对部分内容和课时进行调整、补充和裁剪。在开课前一个学期,选择几门MOOC 课程作为备选课程,自己作为学员亲自完成课程的学习过程,深入体会课程的特点,为接下来的正式引入课程做准备。选择课程的过程,主要通过查看课程概述、授课目标和课程大纲等,找出几门内容较为匹配的课程,再对课程进行试听和跟随学习。通过比较,可以选用中国大学MOOC 平台北京大学唐大仕老师讲的国家精品课程《Java 程序设计》,选择唐老师课程的原因主要包括课程质量非常高,能够深入浅出地进行讲解,很好地贯穿多个知识点。课程的时间进度和笔者的课程比较匹配,内容上也覆盖了本课程教学计划内容,并有较多拓展内容,有利于学有余力的同学拓展知识。
和传统课程相比,理论课大幅增加了课前预习任务,需要学生在上课前先完成视频的学习和MOOC 作业,准备教师布置的课前活动,课堂上也由教师讲解变成了同学间的讨论交流,具体的课前、课中和课后活动见表1。
在翻转课堂开展过程中,教师不再是知识的传播者,而更是学习活动的设计者,学生发展的评估者[3],学习方向的引导者。表2 为“对象和类”这次课中的一小节活动表设计样例。
实验环节采用PTA 平台,该平台上有很多高校教师贡献的题目,除了传统的判断、选择、填空等题型,重点还支持程序填空题、函数题、编程类题目。编程类题目支持C、Java、Python等20 多种语言,还可以选择不同版本的编译器。教师在测试过程中还可以选择是否限定学生所使用的语言种类。学生根据题目的要求完成代码的编写后,把代码提交到教学辅助平台上,平台可以及时反馈完成对错、运行时间、所耗费资源等信息,通过整体性的测试数据,为学习效果的评价提供支撑[4]。这样学生可以很快知道代码的正确性,改变了以前代码完成后也不确定正确与否的状况。实践环节主要复习课程中的知识点,并培养学生实际设计开发能力。教师和学生在不同阶段的主要任务见表3。
表1 教师和学生在理论课的任务
表2 课堂活动流程设计详表
表3 教师和学生在实践课的任务列表
在每次上课前,根据本周教学计划,在PTA平台上设置题目,一般包括客观题和编程题。客观题主要涉及视频上讲解的概念、翻转课堂中讨论的内容,编程作业主要包括这周需要掌握的编程知识和所需要培养的设计能力。题目来源可以是其他高校教师共享出来的题目,也可以自己编写题目,因为有不同层次高质量的题目可以引用,对提高各类不同水平的高校起到较好的借鉴作用。
在实践课时,一开始上课就先让学生登陆PTA 平台做客观题,采用这种方式后学生迟到和缺课现象变得非常少见。在课程进行中,教师可以及时看到学生的总体编程答题情况,也可以看到学生每一次提交的程序代码。学生通过在平台上提交代码,马上就能知道自己的代码是否存在问题,并及时进行修改完善。
通过每一次的测试和实践环节,都可以获取到每位同学的测试结果,并作为平时成绩记录在册。在课程进行过程中,根据学生的答题情况及时进行指导,特别是对普遍存在的问题,马上进行讲解。
传统的课程期末考试的分值占比较高,一般平时成绩和期末成绩为4:6,采用MOOC+PTA的形式后,更加重视学习过程,过程性的学习、测试和作业的数据更加全面,总评成绩权重调整为6:4。期末总评成绩按照MOOC 线上成绩15%,课堂讨论和展示10%,PTA 实验辅助平台中的课堂测试和编程实验成绩35%,期末测试成绩40%的比例计算期末总评成绩,因为平时的测试和PTA 上作业比例比较高,学生普遍比较重视。这种评分模式产生的新问题是个别同学存在实验编程代码抄袭现象,计划在后续课程中增加题目种类,启用代码查重功能,加强实践过程的监督管理等形式予以解决。
通过实施MOOC 线上线下混合教学和PTA实验平台实践,学生普遍感到这门课上花费的时间要比其他课程多,实践课变得很紧张,担心下课前完不成任务。通过教学实践,和同专业平行班相比,期末总体合格率和卷面成绩都有较大提高,特别是能够通过MOOC 学习并获得证书的同学期末成绩全部合格,大作业的质量也比没有采用这种模式有明显提高,有效地促进面向对象程序设计能力的提高,总体效果良好。
表4 试点班和其他班级期末成绩比较
通过引入MOOC,学生能够提前学习课程基础知识,通过翻转课堂等形式提高学生的参与程度,使得学生的知识掌握程度更加深入,学生的专注度也有较大提高,课堂气氛变得更加活跃。通过PTA 系统的使用,实现了程序设计过程的实时反馈、实时评价,学生开发能力得到较好锻炼,实验课的效果有较大幅度提高,课程总体质量有较大提高。合理利用MOOC 资源和程序设计类实验辅助平台,充分发挥两者的优势,能较大幅度提高程序设计课程的教学和学习效率,教学质量得到明显提升,学生动手能力得到较大提高,具有较好的现实意义。