程序设计教学设计与学业考核模式改革
2019-12-19李斌
李斌
[摘要]课题组提出“多阶段、多方位”的教学模式,加强对学生平时学习的管理、监督、考核,提高学生主动学习能力,引导学生把学习精力重点放在日常课堂的积累上而不是期末的突击复习上,从而真正改善教师的教学效果。同时,课题组还研究了学生对任课教师的考核评价方法、形式,将学生对教师的意见和建议及时反馈给教师,从而提高教师的教学水平。
[关键词]计算机程序设计;教学设计;学业考核;教学模式
[中图分类号]G642 [文献标识码]A [文章编号]2095-3437(2019)12-0068-03
一、研究现状
总结高校以往多年的计算机程序设计类课程的教学,其教学环节大多表现为单一性。每周,学生上完理论课,教师布置上机编程作业;上机课,学生调试程序并上交作业,也会出现学生复制他人作业的情况;教师批改作业,或者有选择地批改作业,或者只是统计作业是否上传;期末考试前教师可能会发放一些复习题或者复习范围;期末考试分值占总评成绩较大比例,达到70%或80%。学生更注重期末阶段的死记硬背,而不是平时的实践学习,这样会导致学生并不能真正学好计算机语言课,也会大大影响教师的教学效果。另外,目前对教师的考评系统,教师关注更多的是考评的最终结果,而学生、教学督导对教师的考核评价信息、意见和建议,并不能及时甚至没有反馈到教师本人,也就达不到改善教学的目的。
笔者2016年在澳大利亚访学一年,了解了悉尼大学和悉尼科技大学的C语言课程教学情况。这两所名校,教学手段多样化,对学生的考核也是多样化。教师对学生的要求非常严格,更注重学生的平时表现,而期末考试仅占总评的35%,所以说学生如果平时不认真学习,他们是很难通过这门课程的考核的。另外,学校对教师的考核也很严格。学期末学生必须给自己的任课教师打分、评价、提意见和建议,然后这些信息会提交到教师所在系。如果教师教学有问题,则需要教师整改;如果连续两年学生对教师都有较大意见,那么这位教师就不能上这门课了,严重的话还会被调离教学岗位。
所以,如何严格要求学生和教师,如何评价学生的学习效果,以及如何考核学生和教师,也是各高校都在努力探讨的问题。为了本校“综合性、研究型、全球化”的建设目标,提高学生的素质势在必行。教师合理设置教学环节以及考核标准,监督学生平时学习,完善教师教学,也是趋势所在。同时,除了严格要求学生,也需要严格要求教师,完善教师考核制度,让每一位教师负责任地教授学生。
二、研究目标与解决的主要问题
程序设计课程是本校理工科专业非常重要的基础课程,是大一新生计算机教育的入门课程,也是学生后续一些专业课的先修课程,旨在锻炼学生使用计算机解决问题的计算思维能力和动手实践能力。
笔者希望通过创建“多阶段、多方位”的教学模式设计教学内容和考核内容,大大提高目前的教学效果;同时在学期中和学期末,要求学生匿名提交对任课教师的意见及建议,并迅速反馈到院系及教师,公平、公正、对等地完成学生对教师的考核,反过来也可以改善教师的教学。
综上所述,此教学改革欲解决的主要问题如下:
(1)如何设置程序设计课程(以C++高级语言程序设计、Python语言程序设计为例)教学体系,即教学内容应该分解成哪些环节?可以将教学内容设计成多个环节,有些环节在课堂内完成,有些环节借助网络在课堂外完成,以解决教学内容多阶段合理划分的问题。(2)在教学的每个环节,如何考核学生?各环节的考核权重是多少?不同的教学环节,采用不同的考核手段和考核标准,设置相应的考核权重,以解决教师对学生多方位有效考核的问题。
(3)学生如何评价教师的教学效果?在教学过程中,可以分阶段组织学生提出对教师教学上的意见和建议,并迅速反馈到教师本人,以解决学生对教师多途径及时考核的问题。
(4)如何有效改善教师的教学效果?通过以上几点,教师加强对学生各个阶段的考核,同時按照学生对教师的评价意见及时整改教学方案和教学内容,从而解决改善教师教学效果的问题。
三、研究思路及方法
参照笔者2016年访学澳大利亚悉尼科技大学时的教学模式,笔者设计了如下教学过程及考核标准:
(1)每周2学时理论课,1学时辅导(答疑,可使用诸如QQ之类的网络平台),2学时上机。
(2)上机实践课考核标准占总评的10%。
(3)一学期的上、下半段各进行一次阶段测验,取代以前的期中考试,考核标准各占总评的10%,总共20%。
(4)一学期的上、下半段各安排一次大作业,考核标准各占总评的15%,总共30%。
(5)针对每次上机作业,学生借助网络博客平台,记录该次作业的学习心得,包括碰到的问题、解决办法、启示等,考核标准占总评的5%。教师可以查看每个学生的学习博客内容。
(6)期末考试考核标准占总评的35%。
(7)学生在期中、期末两个阶段各完成一次对教师的考核评价,及时改善教师的教学效果。
由于没有哪一种教学模式是万能的,所以以上教学设计仅作为一个总的指导方向,在具体实施过程中还应根据不同教学环境、不同语种和学生的不同水平做适当的调整与改变,尽量做到过程科学以及因材施教。
四、高级程序设计小班化教学实践
我校2017年将部分教室改造成多功能讨论教室,为学生配备了移动桌椅、投屏等设备,方便老师教学过程中组织讨论活动。2018上半年,笔者申请了高级程序设计小班化教学,其理论课在讨论教室进行,每次授课对象为1个自然班即30人,且要求学生自备笔记本电脑。因本课程有一定难度,所以笔者在超星公司的网络教学平台——“超星学习通”上发布了每个章节重要知识点的教学视频,要求学生必须在课前观看这些视频,并且每次上理论课时笔者会公布学生的观看情况并进行提问,这也是对前述教学设计考核标准的一个调整。在上课过程中,第一节课通常会教授新的知识点和学生课前观看教学视频过程中碰到的难点,第二节课则根据知识点难易程度布置一至两道编程题,学生必须在讨论教室里使用自己的电脑现场完成,当然他们可以在编写代码的过程中互相讨论,这也是笔者使用讨论教室的初衷。同时,在第二节课最后15分钟,要求学生毛遂自荐上讲台讲解自己编写的程序,其他同学对程序提问或者发表自己的见解,最后笔者对该活动进行点评以及为演示的学生评分,这也算是因为教学环境的变化对教学过程的第二个调整。课后,鼓励学生在“超星学习通”平台上就自己的疑问发布讨论,其他学生可以跟帖回复,该平台自动为参与讨论的学生计分,笔者也会为回答质量比较高的学生奖励积分,但是也会为那些灌水无意义的回复扣分。为了巩固每章的语法知识,笔者在平台上布置了章节测验,仅包括单选题和填空题,要求学生在规定时间内完成,学生提交测验后平台自动计分并计入考核。另外,在期中、期末前两周,各布置一次有一定难度的编程大作业,以检查学生使用计算机编程语言解决问题的能力,也是对学生平时学习的监督,督促他们把被动学习转换为主动学习,也促使他们课前课后积极学习平台上提供的教学视频及其他教学资源。同时,对于大作业的完成过程,笔者要求学生自行申请博客,比如新浪Sina、专业IT技术社区CSDN、博客园Cnblogs,在博客上记录作业开始和结束日期、碰到的疑难问题、代码运行的错误信息、解决问题的方法步骤、代码的适当注释、本次作业的收获等。这本身是学生对程序编写思路的整理,目的是培养学生养成良好的编程习惯,因为一个程序如果要称之为作品,不仅需要高质量的代码,也要有适当配套的文档说明。从平台统计数据来看,一学期下来,学生总的学习访问量达到了18287次;从问卷调查及最终考核总评成绩来看,相比于传统的非小班化教学及以前相对单一的教学过程,学生的编程能力和笔者的教学效果均得到了提升。最后结课时,学生通过学校的教学管理与服务平台对笔者进行匿名考核,评分为97.8568分,得到了学生较高的认可。
五、Python程序设计基础课教学实践
Python是近年来在各高校开始流行的一门计算机编程语言。Python程序设计是一门新课,笔者正好借这次教改的机会将教学设计及考核标准应用到教学过程中,以检验前述教学模式的科学性。笔者将本课程考核标准做了一些调整,按照平时占10%,两次阶段测验各占20%,期末编程或者期末免试大作业占50%计算总评成绩,加大了平时学习(阶段测验)及综合能力(大作业)的考核力度。接下来笔者谈一下具体的实施过程。
(一)平时
课前在“超星学习通”平台(以下简称平台)上发布课程用到的PPT课件、需要掌握的知识点、教学视频及教材上未出现的而在网络上比较好的学习资源,同时在学生班级QQ群内发放下次课的授课内容及预习任务清单。课中前5分钟进行课前测,考查学生课前预习情况,接着讲解上次编程作业出现的共性问题。课中根据授课内容适当采取开展讨论、随机点名回答问题等手段,将课堂上能解决的学习问题尽量在课堂上解决。课后再将作业答案公布在平台上,供学生复习参考使用。笔者在批改学生作业时,会将学生代码中的典型错误发布在平台讨论区,鼓励学生发现代码中的问题,训练他们阅读并改正程序的能力。
(二)章节测验及阶段测验
与其他编程语言一样,Python语言也有它的学习规律,也需要学生课后不断地实践与巩固。所以,笔者依然在平台上定时开放所学章节的测验,通常是选择和填空题,并要求限时完成,同时计入平时成绩。阶段测验则是对多个相互关联的章节的整体考查,除了选择填空还有编程题,并且采用正式的考试形式,还要进行严格监考。两次阶段测验分别安排在上半学期和下半学期,所在总评成绩的比重也较高,目的是希望学生重视平时的学习。
(三)期末
期末考核有两种方式:编程考试和大作业。本课程最后4周为两个专题的介绍:网络爬虫和文本分析,目的是增加课程的趣味性与实用性,涵盖了前面讲解的大部分知识点,也体现了课程的综合性,不过从编程角度来讲,难度也有所提高。为了挖掘出更优秀的学生,课题组编制了4道大作业題,其内容覆盖了专题一和专题二,对学生计算思维和编程能力都有较高的要求。如果选择了大作业(任选一题),并且在规定的时间(两周)内提交了作业源码及相关文档,学生可以不用参加期末的编程考试(7道编程题,无选择填空题),直接参加大作业答辩,答辩成绩即为期末成绩。答辩对学生也有严格的要求,不可以出现相互抄袭的现象,不能使用课堂上已经讲解的例题,不能使用网络上已经有人完成的实例;答辩时学生需要使用Power Point展示自己的设计方案、编程思路、编程过程中遇到的问题及解决办法、参考文献或资料、下载的数据、程序运行过程中产生的数据文件、生成的图片以及个人感想;同时学生还要演示自己的程序,教师检查运行结果是否与Power Point中描述的一样,是否正确合理。从最后的答辩情况来看,大部分学生大作业完成得不错,有个别学生的大作业分析角度还比较独特,充分展示了他们的学习能力和毅力。
(四)学生对教师的考核
在整个教学过程中,为了及时完善自己的教学,笔者会在上半学期及下半学期在平台上发布无记名调查问卷,统计学生在学习过程中还未理解的问题、对笔者教学的意见及建议等,让学生也可以考核教师,从而改善教学质量。比如有学生反映Python中的字典数据类型编程题不太会做,编程思路不太清晰,笔者就专门安排一节课对字典类型的应用做重点讲解,并在上机实践课中加大对字典类型编程题的训练。也有学生建议课堂中再多讲一些例题,引导他们一起思考问题。还有学生建议适当介绍一些Python在他们专业中的应用,希望可以使用Python去解决与学生专业相关的实际问题。笔者认为这些都是非常好的建议,这些建议拓宽了笔者的教学视野,迫使笔者不断更新自己的教案与授课课件,尽量让学生可以做到学以致用。
六、结语
合理的教学过程设计及学业考核,多阶段设置教学内容,注重学生平时的表现在考核标准中的比例,会激发学生的学习热情。同时,笔者借助更多的网络信息平台,拓宽师生之间的交流,让学生有更多渠道评价(考核)教师教学,更主动地参与到教学中来,让学生有督促地学,也让教师有督促地教,使师生达到双赢。