芦彩林
(晋中学院信息技术与工程系,山西 晋中 030619)
国内多所大学采用了CDIO(构思、设计、实施、操作)教育理念进行了一系列教学改革,在某些专业核心课程中推行了CDIO 培养模式改革,使得培养的学生在毕业时能够最大限度地逼近社会需求,且能够与不断变化的社会需求相适应。[1]
“C 语言程序设计”是计算机类专业的必修课程,如何提高“C 语言程序设计”课程教学质量,培养学生解决实际问题的能力,为后续软件开发类课程打好基础是亟需解决的重要问题。在近几年的“C 语言程序设计”教学中,按照CDIO 标准和大纲进行了一系列教学改革,学生的培养质量明显改善。
传统“C 语言程序设计”教学以教师为中心,以课堂讲授内容为驱动,侧重讲解C 语言的各种语法,并通过相应的例题对语法进行解释说明[2]。学生只是被动接受教师的安排来完成学习,学生学习主动性差,教师往往不能及时发现教学中的问题,课程的教学质量难以保证。
由于采取大班教学,学生人数较多,课堂教学结束后,教师无法监督学生是否在课后进行了实践练习,也不可能批改全部学生的作业,导致教师不能及时发现教学中存在的问题,得不到学生及时的反馈,不能及时了解学生学习状态,也不能对学生个体进行针对性辅导。这样,学生是否去实践练习主要靠学生的自觉性,实践能力的培养效果较差。
整个教学过程以项目为主线,课程知识点与项目紧密结合,实践与理论教学并行[3]。设计的教学项目涵盖教学内容的所有知识点,贯穿整个教学过程,并按照软件工程思想从需求分析、概要设计、详细设计、编码测试、交付与验收的流程指导学生进行项目设计,使学生掌握了使用C语言进行软件开发的基本技能,形成了以软件工程的思想解决实际问题的思维方式,具备了软件工程师的基本素质。
设计教学项目“工程师工资管理系统”覆盖教学内容的所有知识点,提供工资信息录入、工资统计分析、工资查询、工资修改、工资排序、将工资保存到文件等功能,并随着教学过程的进行逐步实现该项目的各个功能。在教学的不同阶段,应用所学知识点完成项目相应的功能,并指出其中存在的问题,引导学生思考如何去解决,从而引出后续的知识点,指导学生应用新的知识继续改进项目。整个教学过程中会形成项目的多个不同的版本(见表1),例如,没有学习函数之前,所有的项目功能实现全部在main()函数中完成,使得main()函数代码较长,维护比较麻烦;学习函数以后,学生了解了模块化的程序设计思想,就可以将各个功能分别用不同的函数实现,整个程序结构清晰,代码复用和维护容易。通过项目的不断演进,学生逐渐理解各个知识点的用法,掌握了程序设计的方法。
表1 项目版本说明
在项目实施过程中,通过多媒体教学软件引导学生边学边做,与教师一起完成项目,真正做到了“做中学,学中做”。
EduCoder 在线实践教学平台为高校提供智能化在线实践教学服务。平台提供了针对 C 语言各个知识点的实训项目,教师可以根据教学进度选择合适的实训项目发布给学生,并规定项目完成的时间,约束学生必须在指定时间内完成。每个项目可以包含多个任务,每个任务的分值由教师设定,任务采用通关的形式,完成任务1 才可以进行任务2,这样能提高学生的实训兴趣和意志力。学生登录平台完成项目中各个任务,平台能够使用测试数据运行程序,并根据运行情况给出成绩,记录通关时间,分析学生的学习效率和能力,如图1-2(p114)所示。图1 中小圆点代表学生的学习效率,水滴表示当前学生的学习效率值,小圆点越高,学习效率越高;图2 中小圆点代表学生的能力值,红色水滴表示当前学生的能力值,小圆圈越大,评测次数越少。
图1 学习效率
图2 学习能力
通过该平台学生利用课余时间完成实训项目,提高了实践动手能力,能真正掌握编程技术。教师可以通过平台了解学生对知识点的掌握情况,程序设计能力形成情况,有针对性地开展教学和辅导。
将平时成绩考核以考勤、课后作业为主的模式,改为考核以educoder平台实训成绩为主,并结合课堂小练习成绩,引导学生以实践能力提高为学习目标。
期末考试采取机试的方式,设置程序改错、程序填空、编程题三种题型,分别考查学生阅读程序、调试程序、设计程序的能力。这样,学生在考试中不再依靠记忆,而是靠理解和实操。
按照CDIO 理念进行教学改革以后,从教学到考核整个过程强调的是实践能力的培养,学生用C 语言解决实际问题的能力得到了提高,为后续学习数据结构和面向对象程序设计打好了基础。近几年,我系学生参加“蓝桥杯”“软件杯”等学科竞赛获奖等级和人数逐年提高,这些成绩的取得证明采用CDIO 理念进行教学改革的正确性和必要性。今后,将进一步设计更加合理的教学项目和实训项目,进行线上线下混合教学方式改革,提高教学质量。