成都信息工程大学 何钰娟
自1972 年C 语言诞生以来,历经几十年,其间出现了许多其他的编程语言,但C 语言的地位却依旧稳固,一直保持活跃的状态。根据编程语言社区TIOBE 编程语言排行榜公布的数据,C 语言长居榜首前三名。2020 年5 月开始,C 语言王者归来,重新回到榜首,雄踞第一。C 生万物,是编程之本,C 语言不仅自身功能强大、应用广泛,学习C 语言还可以为学习其他计算机语言打下基础。
多年来,C 语言程序设计一直是我校理工类专业学生的第一门程序设计课程,通常在大学一年级开设。该课程的教学目标是教会学生使用C 语言进行程序设计,使学生掌握程序设计的基本思想和方法,培养学生分析问题和解决问题的能力。通过该课程的学习,学生应具备较强的程序设计能力,为后续课程的学习打下坚实的基础。
由于C 语言是我校新生的第一门程序设计课程,所面对的学生程序设计基础基本为零,而C 语言的学习内容包括两方面,一是熟悉、掌握并能灵活运用C 语言的概念和语法(包括运算符与表达式、输入输出、选择结构、循环结构、数组、函数、指针、结构体、文件等),二是学习计算机解决问题的方法,实现问题求解思维方式的转换,培养计算思维能力。这恰恰是本课程的难点,要引导初学者实现问题求解思维方式的转换,具有很高的难度。在传统的教学中,课堂教学主要由教师讲解C 语言基础知识,上机课由学生动手操作练习。而该门课程实践性极强,学生需要花费大量的时间进行编程训练以掌握程序设计的思想和方法,提升编程能力。但由于课内上机编程时间有限,学生在课外进行编程练习时,又无法获得教师及时的指导,无法与教师面对面进行充分的交流和更深入的探讨,学生难以突破课程难点。学生体会不到学习程序设计的乐趣,部分学生感觉学习越来越吃力,逐渐丧失信心甚至放弃学习。因此,我校对该门课程教学进行了新的探索和尝试。
如今,信息化技术已经渗透到社会的各个方面。教育领域中,一场信息化的颠覆性变革正在发生。在“互联网+教育”的新形势下,我们需要采取新的有效措施对传统教学进行改革。混合教学是将传统的课堂面对面教学和网络教学进行有机结合的教学方式,是学习资源、不同学习环境和虚拟网络环境的混合。自2012 年MOOC 大潮被掀起至今,已有很多名校名师提供了各类课程的优质MOOC 教学资源供人们学习使用,仅C 语言程序设计课程,中国大学MOOC 上就有多个学校提供的教学视频、配套课件等资源。既然网络上已有教学资源可以利用,而教师在课堂中讲授的理论课内容与网络上现有的视频课内容大同小异,并且如果给学生提供视频学习,学生可以反复观看。
为了在有限的课程学时下,提高教学效率和教学质量,学校将MOOC 和教师、场地资源有效融合,采用线上线下混合式教学的方式对课程教学改革进行了探索和尝试。
取消理论课,将原有理论讲授时间改为上机课,教师不再花费大量时间进行理论讲授,节约出的时间改为上机编程训练。理论课教学由学生在课外自主观看与教材配套的MOOC 视频完成(理论课的学习在线上完成)。线下上课(即上机)以学生编程练习为主,教师适当点评,让学生作为学习主体参与整个学习过程,让学生在做中学。上机课中,教师作为学生学习的教练,为学生制订学习与训练计划并进行指导,帮助学生解决困难,增加学生的兴趣与信心。学生课前学习MOOC 视频与教材并完成预习作业,上课时在机房实践、讨论并接受教师的答疑指导。
为了保证教学效果,学生的平时学习实行严格的过程化考核,课前会有预习作业,每次上机都会有明确的上机任务;课后会有课后作业,巩固所学内容;平时还会有阶段测试。每次作业和测试成绩均会详细记录,定期对学生公布,平时学习成绩差的,取消期末考试资格。
学生自主能力训练与过程化考核贯穿课程教学全过程,具体包括以下环节。
课前预习。要求观看指定的MOOC 视频、阅读教材,完成配套的预习作业(以选择题为主)以提升观看效果,加深对知识的理解。
上机教学训练。以编程为主,深化学生对知识的理解运用,教师现场答疑指导,学生可相互讨论。上机环境为系统禁用“U 盘和无关网络访问”,以避免复制抄袭。上机作业限时完成并计算成绩,以正反馈预习并促进上机效果。未能在上机期间完成的部分,延时到晚上在指定的防复制机房完成,成绩进行折算,以促进每次上机的教学目标能够较好地完成,避免学习拖欠。
课后作业。以编程为主,每周10 个左右编程作业,进一步巩固相关的知识点。
质量控制。上机教学时不定期进行20 分钟左右的课堂测试,检查课后作业效果并确定课后作业的可信度、作业成绩打折系数,3 次单元测试分阶段检查教学效果。课后作业可信度较差或单元测试成绩较差的,课后作业限定在防复制机房完成。
课前预习、课堂测验、上机作业、课后作业、阶段测验等成绩构成平时成绩,平时成绩低于60 分将取消期末考试资格,以此督促学生的学习,提升学习效果。
在课程教学中,采取以下措施对学生进行上机教学的指导和能力的训练。
首先,程序的编写是给别人看的,而不是只给程序员自己看。因此,学校参考了业界比较推崇的一些编程规范,制定了适合C 语言初学者使用的编程规范,目的在于培养学生良好的编程规范意识和素质,促进所设计程序的安全、健壮、可靠、可读与可维护。在编程中,要求学生注重程序编码规范,以良好的编码规范增强程序的可读性、降低程序难度、减少错误,程序编码有2 处以上不规范的,程序直接计0 分。
其次,设计相应的试题。通过让学生填写程序运行表(变量预期值与实际值、屏幕预期输出与实际输出、程序预期流程与实际流程、是否实现设计目标等)、设置断点查找运行错误行号等手段,增强学生对程序运行过程的理解,强化学生的程序跟踪调试能力。对于较复杂的运行表,教师可设置系统自动标记学生错填的单元格以提示学生。尽力将以前要通过教师教授的重难点转化为选择试题,让学生根据上机结果辅以简略的思考后自行得出结论,既节约了讲解时间,又能起到较好的效果。
最后,利用网络社交平台为学生提供及时的课后答疑。教师指导学生时,要注重对学生思维的启发和学生能力的提升,以及高效的教学效率。第一,精讲多练、做中学,以学生练习为主,教师巡视答疑,了解学生情况;普遍性问题和重难点、技巧精讲点评。第二,分级启发,教师不一步提示到位,鼓励学生自我创造、敢于猜想和实验、分析研究、发现和创造知识,体验收获,保护和建立自信。为少占用学生的编程时间,特别是照顾不同进度的学生,教师提前准备好作业的自顶向下、逐步求精的分级提示课件供学生自主使用,鼓励学生先看宏观提示完成作业,再看进一步的详细提示。第三,鼓励学生相互讨论,在讨论过程中注重对同学的启发。
贯彻编程实际讲究“简单、明确、易读、安全、可靠”的要求,线下的期末考试着重考查学生的编程能力和规范,不考语法、函数原型等翻看教材就可以解决的问题。考试不追求过于复杂、精练的表达式和语句,不追求掌握各种语法的灵活组合,考试中为学生提供MSDN 帮助及较多的电子资源。同时进行严格的考试管理,一方面严格监考,另一方面从技术上采取措施防止学生作弊。第一,学生考试的座位号由计算机随机生成,临近考试时间进入考场时,学生才知晓考试座位号,不同班级、不同专业的学生穿插安排;第二,每位学生的试题内容由计算机按一定的难度比例从题库中随机抽取,做到每位学生的试题内容不一样;第三,禁止使用U 盘等外部存储器。
在学期末进行的学生问卷调查中,学生对混合式教学的反馈较好,认为课程注重思维训练和自主独立学习能力的锻炼。MOOC 课程讲解十分详细,课后复习方便,学生喜爱这种线上课程讲解、线下教师指导训练的混合式教学方式,保证了教学效果。
程序设计课程的核心教学目标是培养学生利用计算机分析和解决问题的能力,学习怎样用计算机思维去思考和解决问题。程序设计不是听会的,也不是看会的,而是练会的。学生只有在编写大量程序之后,才能获得扎实的知识,找到程序设计的感觉,最后运用自如。
学校对传统的以教师为主体、以“教”为中心的教学模式进行改革,采用线上线下混合的教学模式,在教学过程中做到了以学生为主体、以“学”为中心,切实加强了学生实际动手编程能力的训练。课程的教学改革对提高学生的编程能力以及培养计算思维能力具有积极的意义。教学改革是一个长期的过程,需要教师不断探索研究、教学实践、总结经验,才能有效提高教学质量,取得理想的教学效果。