关键词:C语言;教学改革;实践教学;JupyterNotebook平台
作为一种面向过程的结构化程序设计语言,C语言因其功能丰富、灵活性强且兼有高级语言和低级语言的特点,成为高校理工科各专业的一门基础必修课。但由于C语言涉及的概念复杂、语法规则繁多、格式要求严格、数据类型和运算符丰富等特点,记忆和理解相对困难,易使初学者产生畏难情绪,学习情绪低落。同时新生处在高中到大学的过渡期,逻辑思维未形成,学习方式基本延续高中——被动式接受知识,自主学习能力低,而传统教学又属于“灌输式讲解”,造成前期知识未消化与新内容又源源不断灌输的矛盾日益突出,严重影响后续课程的进行[3]。同时实践教学方式单一,学生在上机时,没有重点、漫无目的的做习题,与实际问题脱节。以上这些原因造成了学生无法学以致用、“高分低能”等问题。针对上述问题,许多高校也积极致力于C语言教学改革,以帮助学生更好理解和掌握C语言,取得了一定的成效。本文在前人研究的基础上,结合自身学校的实际情况和教学平台,在学院自建教学管理系统的基础上,基于JupyterNotebook平台进行C语言的教学改革和创新教学方法。
1、JupyterNotebook平台
JupyterNotebook是一个交互式笔记本,支持运行C、C++、R、Python等40多种编程语言,脱胎于IPython,本质是一个开源的Web应用程序,可以创建和共享包含实时代码、数学公式、可视化和说明文本的文档。它支持以网页的形式分享,分享便捷,形式多样,用户可以通过电子邮件、JupyterHub和JupyterNotebookViewer等将JupyterNotebook分享给其他人。此外也支持导出HTML、Markdown、PDF等多种格式的文档。相比于TurboC、VisualC++等集成度高的软件,这种开源平台更能训练学生的逻辑思维,培养实践动手能力。
以JupyterNotebook为平台搭建C语言课程教学网站,教师可在平台上直接制作、分发课件,同时及时查看同学们的作业情况。而学生在跟随老师讲解的过程中,能按照自己的学习方式修改课件、标记重难点以及有困惑的地方,把课件变成自己的备课笔记,同时可直接在此平台上编写、运行程序,可以在此平台上边学习,边实践。可以增加学生自主学习的时间和空间、增强学生学习兴趣、提升学生动手实践能力、鼓励学生进行创新性实验、提升学生创新精神和创新能力、促进学生全面发展[1]。平台显示主界面如图1所示。
2、教学流程
本课程的教学改革是由“教师主导、学生主体”的案例式教学、“学生主体、教师指导”的项目协作教学与技能实践、多元考核评价三部分构成[2]。教学流程如图2所示。
3、教学改革
在整个教学改革中坚持以算法为基础,以应用为中心,以培养学生的实践能力为核心,帮助学生逐步构建以“算法”为基础的思维模式,培养学生抽象思维和逻辑推理能力,强调算法流程的分析与实现。不仅要让学生领会编程的思想,更要培养学生具有创造性的编程思维和解决问题的实际动手能力。主要分为三个阶段进行改革。
3.1第一阶段——案例演示,启发式教学
本着“精讲多练,案例教学,算法为主”的原则,我们放弃多媒体课件教学,采用实验室授课,人手一台电脑,实行“板书+电子课件”演示方式,教师边演示案例边扩充理论内容,讲授重点及难点。同学们也可对课件作出修改,以自己的方式标记学习内容,构建独属于自己的知识体系。案例由易到难,层层深入,让学生在启发中思考,在思考中解决问题,增强学生的学习兴趣和理解深度,提高学生的成就动机,使学生根据自己对当前问题的理解,发散思维,学以致用,从案例中获得知识和感悟。
此外,除课上教学外,为提高学生的自主学习能力,提倡学生多利用现有网络教学资源,比如慕课(MOOC)。作为课堂教学的补充资源,学生能自主选择课程目录,反复听自己不懂的地方,从而巩固自身理论基础。同时,除每周规定教学外,再增加一次课外上机,学生按规定的时间到实验室,自行选择上机内容,课上不设老师,只有研究生助教进行辅助答疑。
3.2第二阶段——项目驱动,小组合力完成任务
让学生带着真实的任务在探索中学习,改变以往“教师讲,学生听”的被动模式[3]。在完成任务的过程中,学生不断地获得成就感,更好地激发他们的求知欲望,进行自主探索和互动协作的学习。因此,在教学过程中,需要教师将教学内容巧妙地溶入每个任务之中,并在营造的模拟情境中提出任务,驱动学生开展学习,搜索相关知识,归纳完成任务的方法和步骤。任务驱动教学法符合探索式教学模式,能够培养学生的自主学习能力和相对独立的分析问题、解决问题的能力。
案例教学基本结束时,由教师公布难易程度适中的实践项目,供学生分小组选择。在实践过程中,结合任务需求引导学生搜集与查阅相关资料,同时辅助其解决疑难问题。对有争议的问题,由小组内讨论升级为课堂讨论来解决问题。在项目验收阶段,由学生分组交换验收和老师验收相结合,也锻炼学生的综合能力。最后上交算法、源代码、调试报告和心得体会。如有必要,可以对学生采用答辩的方式,以判断其是否独立完成任务。
3.3第三阶段——面向过程的考核方式,步步评测
考试是教学过程中的一个重要环节,其本质是检验学生的学习效果,但仅通过期末考试来衡量学生的水平是片面的,不能真正体现学生的学习能力和实践能力。传统考核方式包括两部分:“期末考试成绩*0.7+平时成绩*0.3”,7:3的比例分配容易造成学生对平时学习重视程度不够,考前突击背书背笔记,所以为避免学生通过“临时抱佛脚”来应付考试,考核方式重新调整为:“理论考试*0.4+上机考试*0.3+课后作业*0.2+上课表现*0.1”。采用笔试和机试相结合的方式,主要目的是考核平时表现以及实践动手能力。图3为平时成绩统计表:
图3平时成绩统计表4、结果及结论
笔者将2016级本院不同专业的C语言成绩进行比对。2016级信息管理与信息系统(信管)专业按照4:3:2:1模式进行全面考核,而图书馆学专业是按照旧的考核模式进行考核。成绩如表1所示。
表1成绩统计表通过表1可以看出,信管专业及格率明显高于图书馆专业,而且处于中上游的占绝大部分。可见与改革前相比,学生整体理论知识掌握水平有较大提高。并且在每年的9月份左右,我们会举办学院编程技能大赛,由编程技能大赛的结果可见教学改革后,同学们动手实践能力大幅提升。
5、结语
虽然在教学中取得了一定的成绩,仍存在其他问题,我们将在后续教学中不断创新、实践来解决问题。实践证明,传统教学方法不能很好适用于C语言教学,及时修正教学过程中出现的问题,才能让学生们更好地爱学、学会、学好、会用C语言。
参考文献:
[1]刘长宏,张恒庆,李洪磊,等.实验室开放教学模式的创新与实践[J].实验技术与管理,2010,27(10):188-190.
[2]黄德群.基于高校网络教学平台的混合学习模式应用研究[J].远程教育杂志,2013,31(3):64-70.
[3]刘美健.C语言程序设计课程教学改革实践[J].中国职业技术教育,2012(32):5-8.
作者简介:刘宏,副教授,辽宁师范大学管理学院,研究方向为:信息管理。王彦芳,辽宁师范大学管理学院.
★基金项目:辽宁省本科专业向应用型转变试点项目(2016年)。