混合式教学模式下C语言课程的教学改革实践探究
作者: 曹雪能 吴雪 周鲜鲜 穆宽林
摘要:通过分析C 语言教学目标、现状及问题,着力打破传统的课程体系,探讨如何提高C 语言课程的教学质量,提出“线上线下+翻转课堂”混合式教学模式,对C 语言课程的教学方法、教学资源、实践内容、考核评价体系等提出了多项改革措施,并在学院内部实施,取得良好的教学效果,证实C 语言改革措施的有效性与必要性。
关键词:混合式教学模式;C 语言;线上线下;改革
中图分类号:G642 文献标识码:A文章编号:1009-3044(2023)17-0043-04
0 引言
从20世纪80年代初开始,计算机教学开始在我国高等院校相关专业推广普及。随着时代的发展,信息技术和国民经济的发展也突飞猛进,因此需要大批既熟悉自身专业技术领域知识,又能熟练应用计算机的新一代专业人才。计算机基础教育牵涉的专业面广、人数多,对我国社会各大行业、各种领域的计算机发展水平影响很大。C语言课程又是计算机基础课程的一部分,在计算机基础教育和应用中发挥着至关重要的作用。其课堂教学质量的优劣严重影响学生对今后专业课的学习以及在计算机等领域的开发能力和技术水平。由此看来,无论是计算机专业还是非计算机专业的学生,唯有学习并掌握了计算机编程,才能清楚计算机的工作原理,更好地激发科学思维,强化分析和解决问题的技能,最终才能具备利用计算机对实际问题进行系统分析、设计和编程的能力。
1 C 语言教学存在的问题及其原因分析
1.1 存在问题
1)教学目标与市场需求不同步。
2)传统的教学模式教育出的学生缺乏将技能应用于实际的能力,缺乏实践能力与自主创新能力。知识或可通过教学环节而传授,但技能必须通过实践训练才能养成。不充分的实训将会导致学生“茶壶煮饺子——肚子里有货倒不出”。
3)教学方法与认知规律不适应。
1.2 造成以上三点的原因
1)由于C语言涵盖了大量的基础知识,例如:数据的表现形式、运算符、表达式、三种基本结构、数组元素、函数调用等,每个知识点均具有大量繁杂的语法规则,这就使得教师在教学时过于关注语法细节,让课堂的教学不是以程序设计思想和方法为主要目标,而是以程序设计语言为主导来开展教授内容;学生在学习C语言各个知识点的时候也觉得比较枯燥,缺乏计算思维和逻辑思维能力,仅是机械记忆,导致前后所学知识点不能系统、连贯地融合在一起,更不会活学活用、举一反三,掌握规律。随着时间的推移,课程量的累积,知识量的增加,学生更加容易将所学知识点混淆、变得云里雾里,遇到问题不知道怎么去设计算法、编程思维难以转换、更不知怎么用编程解决。长此以往,学生会出现学习困难、成绩下滑以及厌倦学习,对学习这门课的主动性和积极性也不足。
2)课堂教学方式过于单一化,更多的是教师采用语言的阐述方式,学生被动地接受理论知识,使得学生并不能通过这些讲解分析问题、设计算法和构造程序,并且在整个课程的学习过程中教师也很少引入综合性的教学案例。
3)C语言课程内容全面、知识点繁多、实践性强,需要教师在保证教学质量的同时需要留给学生足够的时间进行大量的编程练习来保证学生的学习效果。
现在绝大多数高校C语言课程理论授课课时是36课时,实验为18课时,这就导致学生上机进行大量编程训练的时间较少,也很少有机会实践掌握程序设计的相关理论、方法。事实上,如何设计一个程序对于刚入门的学生来说是一个很大的挑战。
4)学生基础水平层次不一。由于区域性、学习习惯和学习能力的差异性,每个同学对知识点的掌握程度参差不齐。少数同学入学前可能接触过程序设计,因此对C语言的学习效果最好;大部分学生在入学前没有接触过程序设计,但是他们有比较好的学习策略,能理解C语言的相应知识点,思维也紧跟教师的教学节奏,努力学习,所以学习效果也不错;考虑到有一部分学生入学前鉴于各种各样的原因不了解计算机编程,这样在上课前就没有了充足的准备,也没有很好的学习方法以及接受能力,初学C语言觉得晦涩难懂,处于似懂非懂甚至完全不懂的状态,学习效果不佳。
2 C 语言改革与创新措施
为了解决C语言在教学过程中存在的问题,通过实践探索,提出了“线上线下+翻转课堂”混合式教学模式,打造“云课堂”。充分调动学生的主动性和积极性,培养学生解决实际问题的计算思维能力和创新思维能力,以下是改革的内容:
1)改善教学方式,适当淡化语法细节,多引用一些较有趣的举例来提高学生的学习兴趣同时达到活跃课堂的目的。专注于编程思想和方法,去掉比较复杂、比较难理解、很少用到、不太标准的部分。引导学生,培养学生的自主学习能力。通过例题中语法结构的示例题,让学生体验分析问题、程序性思维和构造的方法。在课程教学中,经常引入综合性的教学案例,使学生认识到如何分析和逐步提炼所要解决的问题。并编译合适的程序对问题进行实现。较难的思想理可以利用多媒体辅助教学:例如冒泡排序,选择排序等,可以通过制作小视频或动画演示化静为动,寓教于乐,将抽象问题形象化,与学生实现课上互动,现实演示的方法,加深对该程序的印象并得到一个充分的理解。
2)增加上机练习。在课堂上,学生可以带电脑上课,让学生可以一边学理论,一边自己动手实验,实现每一堂课都有“理论+实践”的教学目的。让学生有足够的上机时间,有更多的时间动手编写程序,同时可为学生推荐PTA等编程练习网页,这样学生才能通过大量的编程掌握程序设计的相关理论和方法。由于学生接受能力的参差不齐,在设计课程以及选编题目的时候,必须遵循因材施教的原则,根据学生水平的不同,针对不同水平的学生提出不同的要求。鼓励同学多多利用CSDN等开放社区,在CSDN中寻找自己上课不清楚的知识点,也可在其中寻找优质的源码,利用群智的思想解决问题。也可以向同专业学长学姐请教,从而得到共同进步的效果。
3)将教学重心放在分析解决问题的能力与计算机编程能力的培养上[1]。将分解、递归、迭代、回溯、动态规划、贪心算法等计算思维融入C语言的设计教学中,让学生学会从计算机的角度去思考程序怎样运行,比如通过顺序结构,把复杂的过程拆分成一系列更为简洁的工作过程,简化程序,降低程序负荷量;通过循环,复杂问题的处理将被拆分成一系列相似的处理,使学者更容易看懂程序;在实验课中,要求学生能够寻找出错误程序,找到问题所在,并能够自主解决。;同时教师可以对学生平时练习时常出现的操作性错误进行归纳总结,让学生对问题有更好的理解;鼓励学生学好英语,当前大部分的编程环境为Dev-C++,出错原因的提示均为英语,由此看来学好英语对提升学生的编程能力有着至关重要的作用;在教学过程中,教师可以对一个问题提出多种解决措施,举一反三,开拓学生的思维,培养学生自主思考的习惯以及编程的技巧和方法。
4)加强实践环节。如:①给定学生充足自由的完成作业时间,学生可以在老师设置的时间内完成作业并提交。然后上传自己的源代码文件。通过学习通等在线评判系统对学生的代码进行评估,并给出相应的评判结果。假如学生提交的程序代码有误,系统会自动打回,并显示出错原因,然后学生可以继续修改代码再重新提交;②组织比赛,以项目和竞赛为目标提升学生的创新能力。教师可以多多鼓励学生参加一些编程比赛,例如:蓝桥杯、计算机能力挑战赛、程序设计大赛等等。以调动课堂氛围和学生的学习动力。多参加比赛对于学生巩固编程知识以及提高编程能力有着很大的帮助,同时也能提高学生对该课程的自信心,勇于超越自我;③利用PTA程序设计类实验辅助教学平台,鼓励学生在平台练习与教学内容相关的编程题目,加大学生实践量,从而让学生构成相关逻辑,便于对学习内容有更深层次的理解;④通过留一些具有挑战性以及新颖性的题目,以供有兴趣的同学选作,并鼓励同学们相互协作,共同讨论解决问题,充分调动学生对该课程的兴趣,培养他们的创新性,增强学生的成就感。
5)增加课程趣味性,让学生喜欢学习该课程。尝试让同学做一些简单的小游戏,类似于控制台游戏或贪吃蛇等小游戏,与此同时也可以将一些枯燥乏味的打印程序改为让学生打印心形、打印一间房子、打印校徽等,赋予程序一定的趣味性,教师不妨设计一类闯关小游戏,游戏设定关卡攻略设定为C语言的习题,用此方法来激励同学们的学习。开启“实践+理论”模式,使课程生动形象,吸引同学们的注意力,让教学过程成为一个师生互动,相互促进相互学习的过程。
为了实现上述所述的四个改革目标,本文将会提出“线上线下+翻转课堂”混合教学模式,搭配“理论+ 实践”的教学思想。以“教师为副学生为主”的教育理念,打造全新的C语言课堂。同时以超星学习通、中国大学MOOC、PTA等相关实验教学平台为线上辅助,结合教师多种多样的教学方式,从而达到本次改革的目标,在课堂上真正实现趣味教学,让学生认为学习C 语言简单有趣,提高学生对C语言编程的积极性。
1)基于“线上线下+翻转课堂”混合教学模式
①混合教学模式首先离不开线上教学平台,慕课具有广泛的开放性所以学生只需要一台电脑就可以随时随地进行线上学习,同时也可根据学生的不同喜好、不同兴趣选择适合自己的课程,让每一位同学都能匹配到适合自己的老师,是一种高效的自主学习工具[2]。超星学习通(以下简称学习通)也具有丰富的学习资源,而且是集资源管理、课程学习和办公应用于一身的线上教学平台[3]。PTA程序设计类实验辅助教学平台(以下简称PTA)可以提供大量有关C语言的练习,具有丰富的题库,让同学们形成独立思考的习惯。
因此,慕课、学习通以及PTA可以为学生创造更为方便的学习环境[4]。并且,学习通有两个终端:教师端和学生端。教师可以在学习通上激活课程、班级,通知学生加入培养方案中相对应的课程和班级中。同时,教师可以随时将学习资料等上传到学习通,学生也能及时接收教师上传的资料,保证学生能积极参与其中。教师也可以在课堂上灵活使用学习通组织活动,比如实时签到、选人、随堂测试、作业设计、讨论和投票等,与此同时,学生可以在手机等移动设备上接收到教师发布的活动,教师也能根据学生的参与情况了解学生的学情。线上线下教学设计如图1所示。
②翻转课堂的本质便是混合教学模式,通过对课堂内与课堂外教学时间比例的改变,结合“理论+实践”的教学方法,从而解决传统教学方式与线上教学方式无法相互结合的难题。让课堂的主体转变为学生,老师只起到对学生的问题答疑解难的作用。将学习知识的过程化被动为主动[5],提高学生的自律性。
在此种教学模式下,课前,教师可以通过慕课和学习通等教学平台发布学习资料和课程视频,让学生课前自主学习、完成相关知识点的测试;课堂上,一部分时间教师和学生则用来讨论与解决课前预习时所遇到的疑难杂问同时讲解相对应的知识点,在讲解过程中,暂时用不到的生僻知识,可以略讲,不然会导致学生听不懂,降低课堂教学效率。另一部分时间,教师出1~2道综合性的题目,让学生以相互交流、分组讨论等方式来分析问题、设计算法以及编写相应的程序。课后,让学生通过课上的提升测试,总结、巩固和补充知识,同时,教师可以在学习通发布作业和知识的测试,让学生的规定的时间内提交作业,主观题由教师批阅,客观题系统会根据建题库时给定的答案自动批阅。根据学生的作答情况,以及辅助系统记录每位学生的答题情况,因材施教,教师可以对教学过程随时作出调整。这样不仅调动了学生学习的积极性和主动性,也弥补实践课时的不足。让每位同学都能学好C语言。具体实施如图2所示。
2)考核方式变革
这种“线上线下+翻转课堂”混合教学模式克服了之前在传统教学中对教学效果实施细粒度评价的难度[6]。通过学习通可以记录所有学生整学期的学习情况,包括签到、讨论、测试、作业、互动等。教师可以通过学习通中的统计部分设置每个考核点所对应的权重,然后学习通根据教师设置的情况自动计算学生每个目标相对应的成绩,从而实现细粒度分析。对于C 语言课程,平时成绩和期末成绩分别占40%和60%。