董 薇
哈尔滨理工大学 黑龙江哈尔滨 150080
程序设计基础是我校计算机相关专业的一门重要的基础课,是传授程序设计基础知识和培养学生逻辑思维能力、问题抽象能力和程序设计基本能力的入门课程。在计算机相关专业中,可以把程序设计基础的学习看作学生进入行业的起点。该课程开设在大一第一学期,主要讲授程序设计语言的基础知识、基本语法和结构化程序设计方法。程序设计基础是程序设计语言课,也是算法设计分析课的先导课程。该课程的教学效果将直接影响学生对后续课程的学习。2018年的新生主要以“00后”为主。“00后”的大学生对话语权要求更高,知识面宽广,个性张扬,追求个性化生活与学习。他们对大学专业选择的自主性,比往届学生更强。成长伴随着互联网的发展,能够熟练使用各种工具。面对“00后”的学生,作为一线教师,必须及时调整教育思想理念,在教学中扩大课程容量,完善教学方法,跟上学生的脚步,与学生共同进步[1]。
首先,教师在进行具体的教学的过程中,往往忽略实验上机环节的教学,使得学生最后仅仅是掌握了概念和语法,动手能力差。其次,学生由于没有适应高中学习向大学学习的转换,被动和懒散,过分依赖教师,教学效果不理想。学生普遍感到课程难学枯燥、不易学。上课时听得明白,但不能独立完成实验题目。虽然主观上非常重视对它的学习,但常常有一种茫然的感觉,不知道自己该如何学习,所以当课程逐渐深人时,就容易失去对它的兴趣。部分学生到课程结束时,还不知道自己到底学了些什么,学了有什么用、怎么用。会出现一部分学生掉队,直接影响后续课程的学习。例如,数据结构是以程序设计基础为先导课程的,教学内容多以程序设计基础课程中的指针、结构体和文件为基础。而实际在数据结构教学过程中发现,课程初期有超过半数的学生不能熟练运用指针对链表操作,降低了数据结构课程实践环节的教学质量[2]。分析这些现象后,主要的原因有以下几点。
程序设计基础是相当重要的一门课程,但学习是有一定的难度,要求学生具备良好的思维、创新、学习能力。程序设计基础教学对教师、学生都是比较大的挑战。大部分学生重视理论学习,轻视实验环节。学生前面的知识还没有完全理解,新的知识就接踵而至,形成问题堆积。我校全国招生,学生在大学前接触计算机的程度差别非常大。学生分析问题、解决问题的能力有差距,学生学习能力、学习热情两极分化非常严重。
实验内容设计不够合理,覆盖面小,实验学时不足,难以适合所有学生。教改前程序设计基础课程的实验教学是与理论授课同步进行的,实验课教师布置实验习题,实验习题大部分来自书本习题,利用相应章节的理论知识编程实现,难以调动学生学习兴趣。实验教学中验证性内容偏多,设计性、综合性和探索创新性实验内容偏少,影响学生探讨问题的积极性和创新能力的提高,容易使尖子生缺乏兴趣,后进生失去信心。
实验指导难以满足大部分学生需要。程序设计基础是计算机相关专业重要的专业入门课程,课程安排在大一第一学期。学生刚从高中毕业进入大学,在适应大学的学习方式时,需要任课教师的指导以及与教师有更多的互动。学生在程序设计基础实验课过程中经常会碰到许多调试问题,有时很小的问题就会被难住。但由于师资力量不足,一名教师需要同时指导几十名学生进行实验,导致大部分学生的问题无法得到解决。
当前实验教学的考核主要是通过实验报告。而程序设计基础课程采用“教室学习理论、实验室动手实践”的教学模式和“期末考试为主、平时作业实验报告为辅”的考核方法,教师很难了解学生对知识与技能的实际掌握情况,单独凭借实验报告并不能客观真实地反映学生的实际编程能力。
程序设计基础课程的实验教学环节非常重要。一方面可以通过实验环节促进学生对理论知识的消化和吸收;另一方面通过实验环节培养学生解决实际问题的能力。既要培养每名学生的计算思维和基础编程能力,也要发现、选拔并培养部分对程序设计有强烈爱好、能独立解决有一定难度的实际应用问题的学生。培养完善学生独立的程序设计能力,全部实现初始级,大部分学生能够达到技能级,并通过后续专业课的学习逐渐达到工程级和创新级[3]。为此,对程序设计基础课程的实验教学做了如下改革。
程序设计基础课程在教改前上机学时只有16学时,16学时在每学期的教学安排时,由于授课对象是大一新生,要有新生教育和军训的教学安排,只能在第4周以后安排上课,通常第5周又是十一长假,第18周以后学院的实验室资源又要统一为集中性实践性课程设计和上机考试服务。实际的上机实验教学一般只能安排在6到17周,在大学的教学活动一般是以2学时为单位。16学时8次实验安排在12周内,平均一周都不能完成一次实验课。把程序设计基础课程安排为全学时实验教学,在实验室完成教学与实践的全部72学时。教师精讲、学生训练相结合的全学时模式。重在培养学生主动获取知识的能力。教学过程中,可以给予学生充足的上机动手时间,让学生主动发现问题、提出问题;同时,教师通过个别指导和讲授共性问题并总结而提高教学效率,最终可以达到在学生脑海里构建出清晰的知识结构的目的。
通过网络平台存储与程序设计基础教学相关电子资源,包括重点讲解基础技能点的课件,教师布置指导设计性、综合性实验过程所录制的小视频,C,C++使用的编译工具及使用说明,在程序设计领域比较经典的电子书。OJ平台下,每个学生一个账号,作业实验练习训练都通过平台完成。学生通过OJ平台随时随地扩展学习范围。通过网络平台的使用,学生可以全程保持紧张的学习状态,完成自由、自主、自知、自觉的学习过程。对每个学生的自控能力、学习能力、表达能力、思辨能力、合作能力都会有全面的提升。教师通过OJ平台随时了解学生学习情况与进度。通过学生在网络平台的活跃度,教师可以适当调整教学进度与难度,及时进行提问、反馈。通过有限的全学时教学与无限的网络平台互相补充,改变了传统程序设计基础课程的教学模式。
在程序设计基础的实验项目设计中,需要教师综合考虑学生的基础、学习能力、抽象思维、接受能力等各方面的差异性。尤其采用全学时实验后,原有的实验指导书已经不再适合。重新撰写以实验技能点为基础,任务驱动为核心、分层次教学为辅助、适用全学时实验的指导书。以2015版程序设计基础课程教学大纲与实验大纲为标准,以任务驱动为核心,重新设计实验内容,把基础性实验分化出不同的实验技能点[4]。对应每个实验技能点任务细化,围绕技能点,形成学习与总结的循环,循序渐进地增加难度。综合设计型实验、研究创新型实验适用于分组训练,在教师指导下完成团队合作。整个全学时模式教学过程是实践与总结的循环。
程序设计基础课原来是通过“笔试+上机实验”的模式考核学生对该课程的掌握情况。在这种模式中,笔试成绩的比例为90%。这种考核方式不能全面考核学生的真实水平和编程能力,也不利于引导学生注重平时的学习过程,因此必须对课程考核方式进行必要的改革。程序设计基础全学时实验模式下,考核分为平时考核和期末考核,各占总成绩的60%与40%。平时考核又分为课上实验、课后作业、阶段性测试,分别占总成绩的20%,合计60%。期末进行上机考试,占总成绩40%。课上的实验、测试、课后作业、期末考试都是利用学校现有的OJ平台进行上机考试,试题只有一种题型—编程。课上实验、测试、课后作业考核标准都以程序代码是否AC(通过)作为唯一标准。期末考试考核,如果没有AC,教师要阅读代码,按照评判标准给出成绩。评价体系贯穿整个教学各阶段,符合我校教学质量评价体系的要求。
在整个实验教学质量评价中,过程质量决定了结果质量,因此实验教学质量评价应从结果质量评价转变为过程质量评价,而实验教学过程质量应主要体现在实验教学能力、实验教学方法和实验教学效果等方面[5]。
学校自2016年9月以来,不断进行程序设计基础课程的教学改革,先后进行了教学内容优化、考核方式无纸化、翻转课堂教学模式等工作。2018年9月开始全面实施程序设计基础的全实验教学改革。在全学时实验模式下,有效利用网络平台,关注教学目标、教学设计,掌握学生状态。通过大量的实验、作业、阶段性测试,大幅度提升了学生编写完整程序的能力、分析解决实际问题的能力。期末考核成绩和学科竞赛的获奖比例有了显著提高。这种教学模式的优点会在后续数据结构、操作系统、编译原理等课程学习中明显体现。而近期最显著的成绩在2018年12月初,在针对大一新生举办的多校联合新生训练赛上,取得了非常好的成绩。12月中旬,第八届校园团队赛中个人获奖名单上,全校大一新生共获得3个二等奖、58个三等奖,其中计算机专业大一新生二等奖3人、三等奖31人。大一新生,正式进入课程学习的时间应该是十一长假后,两个多月的学习,就能在竞赛中取得好成绩。对比近几年的数据,能够得到结论,程序设计基础的全学时实验教学改革是可行的、有效的。在硬件设施、师资力量充足的情况下,可以在计算机相关专业的程序设计基础课程下推广实施。