APP下载

基于CDIO模式的《程序设计基础》课程教学改革的研究

2019-12-19童端吕捷刘凌波

科技创新导报 2019年22期

童端 吕捷 刘凌波

摘   要:在CDIO教育理念的指导下,通过分析传统的程序设计基础课程教学中的不足,针对学生的被动学习、实验操作能力弱、课程实验与企业实际所需人才要求相脱节的情况,提出和实施了以真实项目设计为核心、创新和个性化教育为主的教学改革方案和多元化的考核方式,培养了学生的团队能力和团队精神,大幅提升了学生的学习兴趣和自主学习能力。

关键词:程序设计基础  基于项目的教育和学习  蔡勒公式  创新和个性化教育

中图分类号:G712                                   文献标识码:A                        文章编号:1674-098X(2019)08(a)-0214-03

1  现状与背景分析

现有的《程序设计基础》课程的教学内容包括理论教学和是实验教学。一般采用“理论学习+课程实验”的教学模式,学生根据“课后习题+实验指导书”的安排进行实验。这种传统的教学模式中学生大都比较被动[1],存在如下不足:

(1)理论教学时学生觉得教师的讲解枯燥无味,因而学习兴趣不够浓厚,导致学生进行实验操作时的手足无措和无从下手,进而导致学生解决实际问题的能力太弱[2]。

(2)教学内容大多来源于教材中的实例,而没有来源于实际市场,因此,存在着课堂教学内容与企业实际所需人才要求相脱节的情况。这种情况导致学生学习目的性不强,学后不能达到学以致用的效果,而且实验的形式也比较单一。

(3)以个体为中心,学生独自完成程序设计,忽视了软件行业所需的团队精神的培养。

本文旨在通过以真实项目设计为核心、创新和个性化教育为主的课程教学方法的改革来解决这些问题,从而取得更好的教学效果。

2  教学改革方式和策略

2.1 以真实项目设计为核心的课程教学内容的改革

CDIO是“做中学”原则和“基于项目的教育和学习”的集中体现[3]。真实项目来自企业,或是学生感兴趣的游戏等,比如:简易计算器、电子万年历、画图游戏、贪吃蛇游戏等。考虑到学生的个性化培养,学生在训练的时候,可以分组选择不同的项目。基础性实验、设计性实验、综合性实验、真实项目设计这四个层次的实践环节贯穿于整个课程教学过程,较好地实现了CDIO教育理念中的培养学生构思、设计、实施和运行这四方面能力的要求。

案例分析:用C语言做一个基本的电子万年历程序,要求能根据键盘所输入的年份和月份信息,输出显示某年某月的日历和星期之间的对应关系,基本要求如图1所示。

总体来说,该项目可以依次拆分成以下四个子问题:(1)闰年的算法,涉及到分支程序设计;(2)如何计算某年某月的第一天是星期几,主要涉及到循环和分支程序设计的综合运用;(3)如何循环输出指定年月的全部日期和星期之间的对应关系,涉及到多重循环和break、continue等特殊分支程序设计的综合运用;(4)如何设计程序使其能根据所输入的内容y/n来继续正确的输出万年历或是结束运行,这一步看似简单的大循环,实际是基础知识和循环程序设计的综合运用,如果基础没掌握好,相应变量的初值没清零或重置,后续日历的输出都将会错位。这4个子问题中,第1个子问题属于基础性实验内容,其他3个子问题都属于综合性实验内容。整个项目开发实现过程中,根据不同小组的做法,还会涉及到本课程中的其他知识点,比如用多函数多文件实现模块化的程序设计思想和多文件系统的联调;使用指针做形参、数组名或数组元素做实参等数组和指针的综合运用等。因此,学生在完成这一个项目的同时,就掌握了C语言中绝大部分基本知识要点如常量变量的使用、C语言中的5类常用语句和3种基本的程序设计方法等,同时也熟练运用并掌握了重难点知识,比如数组、函数、指针这三者的结合。

各小组在做这个项目时,在第1,3,4这3个子问题上没有太大差别,在第2个子问题的求解上,用到的方法比较多,其中有代表性的是以下两种。

方法一:首先找一个参考日期及其所对应的星期,然后计算要给定日期和参考日期之间的闰年个数,算出某年某月的第一天是星期几,从而显示该月的日历。该方法的重难点在于输出日历时如何正确处理某月1号与星期之间的对应关系以及如何正确使用特殊符号进行对齐设置,比如制表符或空格符的运用。部分学生在处理对齐时用到switch…case语句,也有学生使用的是多重循环。

方法二:蔡勒公式,使用公式计算某年某月的第一天是星期几的做法如下:首先用一个变量记录星期与年份和世纪之间的对应关系,比如下面这种写法:iweek=(y+y/4+c/4-2*c+26*(m+1)/10)%7;然后判断这个表达式的值为正数还是负数,如果是正数,后面的程序中直接使用,如果是负数,要通过加7循环变成正数。这种方法看似简单,只要简单的套用公式,但是关于世纪和年份之间的关系要特别注意,尤其对于类似于2000年和某些年份的3月这样的特殊日期,学生如果考虑不周,就很容易导致输出的日历出现错位的情况。

2.2 创新和个性化教育为主的教学方法的改革

大力探索并改革不适应新时期形势的教学模式,提出依据科学理念设计课程教学程序、优化教学过程、指导实验方法、培养创新能力的“引导-探索-实验-创新”的教学模式。突出学生的主体地位,使学生主动参与教学和实验。让学生独立自主的设计实验,利用实验过程,发挥学生的主观能动作用,由学生互相讲解学习方法和设计思路,讓学生互相学习和监督,最大限度地调动学生自主学习的积极性和主动性。变单向信息传递为双向式、多向式信息传递与交流,在教学和实验中,加强对学生实验方法和创新能力的培养。

采用分类汇总和数据透视表的方法,综合分析了学生的上机实验、期中测试、项目答辩、期末考试的成绩和表现,结合近5年来的教学情况,统计分析了教改实施前后,学生对课程知识点的掌握情况和学生的编程能力以及综合运用能力,对比表如表1所示。

表中数据的百分比根据统计人数计算得到,教改实施前大约500人,教改实施后大约400人。

3  主要目标和特色分析

3.1  团队能力和团队精神

团队能力是CDIO教育理念要求工程毕业生必備的一种能力,也是考核学生的一个重要方式[4]。在实际教学过程中,根据项目的难易程度,学生按2~3人分为一组。每个学生在项目设计中完成自己的学习和实践任务,做好自己的模块分工。同一个项目组的学生还可以就共同的学习任务和计划进行沟通并协商解决,这既符合CDIO理念中的团队精神,又能让学生提前适应团队协作,为以后的工程学习和工作提供良好而扎实的基础。

比如上述的万年历问题,有的团队是3人一组共同完成的,项目负责人把项目分成3个模块,互相商量好模块之间的接口,然后由3个成员分别按照要求完成自己的部分,最后进行联调。在整个过程中,学生不仅学会了如何把复杂问题或大项目分解成若干个简单的子问题进行求解,还学会了团队合作和多文件的联调。学生们普遍反映在项目设计实现过程中,不断的联调和细分就把以前不太懂的问题全都弄清楚了,有的甚至能举一反三,学习的劲头大大增强。甚至在整个项目设计过程中,还碰撞出新的火花,深刻理解了指针在程序设计中的妙用。

3.2 对团队集中验收和对学生个体进行评估验收的双重验收模式

对学生个体进行评估验收是CDIO教学模式的标准之一。考核的形式可以是多样的,比如采用“分组答辩+个体提问”的方式,由学生演示程序的运行结果,然后针对自己在小组中的分工情况,详细介绍具体代码和遇到的问题,最后提交项目总结报告。为了让学生充分参与到项目中,最终的成果验收采取小组长总结式汇报和小组成员依次汇报的方式,目的就是要让参与到项目中的每个人都能在动手能力和编程能力上有很大程度的提高。项目组的每个成员必须清楚的意识到本人所做的模块对整个项目的作用,从而在一定程度上提高学生学习的积极性和团队精神。

3.3 考核方式的多元化

本次教学改革中的考核方式采取以“平时上机实验+期中无纸化编程测试+期末闭卷考试”为主,“项目设计及答辩+期末闭卷考试”为辅的方式,让教师在考核过程中起到主导作用,站在IT企业或用人单位的角度来设立问题,将学生置于一个大的企业环境中,引导学生自主学习和设计,使其具备业界所需的素质和能力[5]。考核方式的多元化也能让一些动手能力较强的学生能更主动深入的学习,提高他们的学习主动性和积极性,进而让他们参与到大学生创新性实践活动中去,把课堂所学知识真正用于实践中,服务于社会。同时也让一些理论知识比较扎实的学生能发挥他们的长处,不至于在自己不擅长的领域花费较多时间,真正的体现创新和个性化教学的课程改革宗旨。

4  结语

本文针对现有的《程序设计基础》课程的问题和课程特点,在基于项目的教育和学习的CDIO教育理念的指导下,提出了创新和个性化的教学方式和考核方式,并给出了可行性教改方案。课程改革已经应用在两届共400人的学生身上,学生的自主学习能力和团队协作能力得到了大幅度提升,学生愿意参与到大学生创新实践项目中去的意愿也在不断增强。有理由相信,随着CDIO工程教育理念的不断深入和基于此理念的改革和探索,学生的学习效果和动手能力都会得到更大程度的提高。

参考文献

[1] 王军英,马红梅.C语言程序设计教学存在的问题与对策[J].教育理论与实践,2015(3):63-64.

[2] 王星魁,相洁,孟东霞,等.程序设计技术基础课程考试改革的研究与实践[J].教育理论与实践,2019(12):47-49.

[3] 曾晓辉,文展,付琳.CDIO教学模式在编程类课程中的改革与评价探索[J].当代教育理论与实践,2016(8):123-125.

[4] 叶冬芬,范伟,杨明霞,等.计算机程序设计类课程实验教学改革的研究[J].福建电脑,2010(11):32-33.

[5] 刘丹.基于CDIO的教学模式在“数据结构”课程中的研究与应用[J].工业和信息化教育,2013(5):29-32.