APP下载

基于EPT-CDIO的课程教学改革研究
——以C语言程序设计为例

2017-04-06冯莹莹

赤峰学院学报·自然科学版 2017年6期
关键词:C语言程序设计编程

冯莹莹

(阜阳师范学院 信息工程学院,安徽 阜阳 236041)

基于EPT-CDIO的课程教学改革研究
——以C语言程序设计为例

冯莹莹

(阜阳师范学院 信息工程学院,安徽 阜阳 236041)

C语言程序设计是一门既重理论知识,又重实践能力的入门编程课程,在教学过程中如何培养学生的主动学习、解决实际问题的能力及团队协作能力至关重要.根据应用型创新人才培养的目标,将Engineering quality(工程素养)、Professionalism(职业素养)和Team accomplishment(团队素养)与CDIO理念有机融合,据此实现基于EPT-CDIO的全新的教学模式,从重置课程体系,灵活运用教学方法,加强实践教学及改革考核方式等方面进行了创新,教学效果得到了全面提升.

C语言;应用型创新人才;EPT-CDIO

随着计算机技术的飞速发展,人们的生活发生了翻天覆地的变化.作为21世纪的大学生,应紧跟时代步伐,调整自己的知识储备,做一个理论知识扎实、专业实践能力强的复合型人才.这就要求在教学过程中应遵循以下理念:面向应用需要;采用多种模式;启发自主学习;重视实践训练;加强创新意识;树立团队精神,培养工程素养.

1 本课程教学中存在的问题及现状分析

C语言是各专业所开设的第一门编程语言,是学好其他高级编程语言(如C++,VisualBasic,Java等)的基础.由于学生在此之前基本上未接触系统的编程知识的培训,再加上C语言牵涉的概念繁多抽象,语法纷繁复杂,形式灵活多样,程序设计的思路和方法难以掌握,不少首次接触该知识的学生感到难以入手.教师在传授过程中,课堂理论知识讲解很详细,语法分析透彻,上机实践安排过于简单,基本上都是一些验证性实验,不注重培养学生的实际编程能力和项目解决能力,只是一味的照本宣科.另外,在上机实践的过程中,学生并没有系统的形成“编写程序-编译程序-调试程序-运行程序”的良好习惯,在每一环节出现问题后不能独立的改正错误.

2 基于EPT-CDIO的课程教学改革

为了改变上述状况,切实提高学生能够利用程序解决实际问题的能力,并结合笔者多年的教学经验及应用型人才培养的目标,在教学改革中引入了EPT-CDIO理念.EPT是Engineering quality(工程素养)、Professionalism(职业素养)和Team accomplishment(团队素养)的缩写,将EPT融入到CDIO教育理念,目的就是在解决项目的过程(构思-设计-实现)中培养学生的工程素养、职业素养和团队素养.C程序设计作为理论与实践并重的课程,采用EPT-CDIO的教学模式从课程体系重置,教学方法,实践教学及考试方面进行了改革.

2.1 构建基于EPT-CDIO的课程体系

C语言程序设计课程是计算机专业开设的第一门重要的先导专业基础课,后续课程比如C++、数据库、数据结构、操作系统都跟C语言有着直接或间接的联系.学生在学习编程过程中的一个良好开端,必须从整个培养体系中优化、完善课程的内容体系.

课程组依据EPT-CDIO思想重构了本课程的课程体系.该课程体系的设置结构合理,体现了以素质、知识、能力为培养目标,以项目实践为主线,能够满足本专业企业需求,如图1所示:

图1 C语言程序课程体系设置

在图1中,将C语言的知识点划分为4个模块,分别为基础知识模块、逻辑编程模块、高级应用模块以及面向对象程序设计模块.每个模块并不是孤立存在的,是层层递进的.基础知识模块要求学生掌握C程序的运行步骤、C的数据类型、表达式等并能编写简单的应用程序;逻辑编程模块要求学生掌握程序的三种基本结构和数组的应用,并能够利用冒泡法解决学生成绩排名问题;高级应用模块,主要涉及到函数、指针、结构体的教学,本部分是教学的重点也是难点,要求学生能够利用函数调用、指针等方法解决学生成绩排名问题并能够利用结构体学会制作学生成绩单;面向对象程序设计模块,是C语言的延伸阶段,为学习面向对象程序设计打下基础,在此阶段要求学生继续完善学生管理系统的设计.该课程体系的设置将实践教学项目贯穿始终,既有简单的基础技能实验,又有综合性强的企业项目实践,必要的时候需学生分组合作完成,体现了EPT-CDIO的教育理念,符合学生的认知规律,提高了学生学习该课程的兴趣.

2.2 教学方法改革

课题组在C语言程序设计课程的教学过程中对传统的“老师为主,学生为辅”的灌输式传授方法进行了革新,灵活运用各种教学方法,取得了较好的效果.

2.2.1 基于问题的启发式教学

这是在基础知识模块与逻辑编程模块阶段采用的教学方法.该阶段不能够按照传统的教学方式按部就班的对大量的语法做细致的讲解,此阶段重点培养学生学习该课程的兴趣.如何培养学生的兴趣呢?教师在讲课的过程中,可以提出问题,学生通过讨论、思考等方式找到问题的答案.实践证明,带着问题的启发式教学方法调动了学生学习的积极性和主动性.

比如,在讲解下面的实例时,

(1)首先会让学生自己分析结果,绝大多数同学由于不知道变量的类型会决定变量的取值范围,想当然的认为该程序运行结果是32767,32768.

(2)为了验证学生的分析结果,运行此程序,结果显示32767,-32768.显然运行结果与学生的分析结果不一致,留给学生一定的讨论时间.

(3)解析该程序,由于基本整型变量的取值范围是-32768—32767,a的值加1之后超出了整型变量的取值范围,所以结果不可能是32768.根据补码知识得到-32768.问题解决,教师的教学目的也达到了.

2.2.2 程序设计方法为主的教学模式

在讲解本课程的过程中,重点培养学生的逻辑思维能力和将实际问题转换为程序设计的能力,这与学生的认知和学习规律是一致的.

下面通过一个C语言教学实例阐述教学方法的实施.

用C语言编程实现求1×2×3×4×5

步骤一:分析问题 可以先求1×2,再用得到的结果乘以3,以此类推,求5!共需要4步.但是如果把题目换成求1000!,按照上述方法需要999步,所以此方法不可取!

通过观察可以看出,参与运算的对象之间是有规律的,后一个数要比前一个数大1,我们可以假定变量t为被乘数,变量i为乘数,用循环算法求结果.

步骤二:画传统流程图 如图2所示:

从图2可以看出,先对变量t,i分别赋初值1,2,然后把t*i的结果重新赋值给t,变量i自动加1,加1之后判断i的值是否大于5,如果不大于5,继续进行t*i的结果重新赋值给t,直到i大于5成立,算法就结束了.

图2 传统流程图

步骤三:改进流程图,如图3所示:

图3 改进算法流程图

传统的流程图由于对流程线的使用没有严格限制,在解决一些复杂问题的时候显得力不从心此流程图要比传统流程图简洁,阅读方便.

步骤四:C语言编程实现

步骤五:问题延伸 假如要求10!,只需要把判断条件(i<=5)改为(i<=10);假如要求1*3*5*7*9,只需要将变量t,i分别赋初值为1,3,将循环条件(i<=5)改为(i<=9),递增表达式i=i+1改为i=i+2即可.

从上述实例的教学方法可以看出,学生不仅解决了一道题目,而且通过发散思维,掌握了解决同类问题的解题思路.

2.2.3 教学过程中引入竞赛机制

为了培养学生学习该课程的兴致,提高学生的动手实践能力,在教学过程中我们选拔了部分同学参加全国“蓝桥杯”软件设计大赛与“飞思卡尔”智能汽车大赛,并取得了优异成绩,激发了学生的学习热情.同时在组织、培训学生的过程中,教师的实战能力有了进一步的提升.这种以赛促学、以赛促教的教学方法使学生和教师受益匪浅.

2.2.4 项目引领、任务驱动

在实践教学的过程中,以项目开发作为主线.按照企业项目的开发规范要求每个学生完成自己项目组中所分配的任务,最终合作完成一个项目,比如,在开发“学生信息管理系统”时,首先要明确该信息系统包括成绩信息管理模块、课程信息管理模块、班级信息管理模块、学籍信息管理模块以及系统管理模块.各模块之间存在什么样的联系,如何实现该系统的数据库设计,模块设计、程序实现等等.在此阶段培养学生的动手实践能力与团队协作能力.

2.3 实践教学改革

为了配合理论教学,使教学效果达到最优,按照EPT-CDIO的思想,我们对实践教学进行了改革.实践教学主要培养学生的动手实践能力和综合运用所学知识解决实际问题的能力及团队协作能力,为此,我们把实践教学分为“两个宗旨三个部分”:两个宗旨旨在提高学生的程序设计能力和系统工程项目实践能力;三个部分指的是实践教学的安排包括(1)基础和验证型实验,(2)设计和开发型实验,(3)研究与创新型实验.

在提高程序设计能力方面,由于C语言程序设计兼具“专业”与“基础”两个特点,故C语言本身的语法知识与程序结构必须要掌握,除此之外,通过该门课程的学习能够掌握一定的算法并解决一些实际问题比如数值计算和非数值计算等,为后续课程打好基础基于上述因素,实践教学的安排要体现学生编程能力的培养.我们可以将编程能力进一步分为基础能力和可扩展能力,“基础能力”是学生在该门课程中必须掌握的能力,“可扩展能力”是通过实践活动进一步提高的能力.

在系统工程实践能力方面的培养,要以实训项目的开发作为主线.实训项目的设计应切合实际、由简入深、不断拓展,学生在实践的过程中逐步培养起基础的工程项目开发能力.对于特别感兴趣又有着强烈求知欲的同学,可以对实训项目继续延伸或者把企业项目引入实践活动中,进一步提高他们的开发能力.

所涉及到的三个部分包括(1)基础和验证型实验,主要涉及本课程的基础知识,实验目的是使学生理解、验证、巩固并掌握课内所学的教学内容;(2)设计和开发型实验,此类实验有效的培养了学生的综合应用所学知识与技术的能力,培养学生自主学习,带着问题寻找答案的能力;(3)研究与创新型实验,针对部分学习兴趣高、编程能力强的学生,重点培养学生的科研创新能力.

将“两个宗旨三个部分”引入到实践教学活动中,教师在这个过程中仅起指导作用,项目的设计与实施以学生为主体,以市场需求为导向,分工合作完成,锻炼了学生的科研创新能力、团队协作能力,真正提高了教学质量.

3 特色与创新

3.1 以可编程智能车为实践平台

以可编程智能车为实践平台,这在现有C程序设计课程的实践平台方面具有独到之处.本课程将“静态”的编程语言与“运动”的智能小车结合,让C程序的运行效果不再是“黑底白字”或简单的图形设计,让学生在有趣、实用的嵌入式软件项目开发过程中学习C语言,将学生的注意力从枯燥的程序代码转移到生动的程序实现效果上来,很大程序上提高了学生对程序设计的兴趣和自主学习能力,使学生将C程序设计在一个新的实用化领域——智能电子产品开发中学以致用,做到“软硬结合”,培养学生利用编程技术解决实际应用问题的能力和创新设计能力.

3.2 按企业软件开发流程组织教学

按企业软件开发流程组织教学,在现有C程序设计课程的教学形式上具有鲜明的特色.嵌入式软件开发是目前和将来就业的热点方向,是C程序设计的重要应用领域.本课程面向嵌入式软件开发的工作过程,围绕项目展开教学,以解决实际应用问题为目标,将学生组成项目开发团队,撰写项目计划书,划分项目开发模块并分配开发任务,设计算法,编写与调试程序,提交项目开发文档,最终进行产品展示和项目验收,让学生体验基于C程序设计的企业软件项目开发的完整流程和规范,培养了学生的就业技能、团队协作能力和产品开发能力.

〔1〕顾学雍.联结理论与实践的CDIO——清华大学创新性工程教育的探索[J].高等工程教育研究,2009(1):11-23.

〔2〕林海斌,叶汝军,高树昱.CDIO理论基础综述[J].商场现代化,2010(13):189.

〔3〕张兴强.CDIO高等工程教育模式的研究与应用[J].中国科技信息,2008(23):55-56.

〔4〕查建中.论“做中学”战略下的CDIO模式[J].高等工程教育研究,2008(3):1-6,9.

G642;TP312

A

1673-260X(2017)03-0216-04

2016-11-09

安徽省阜阳师范学院校级教研项目(2014JYXM49);阜阳师范学院教学研究项目(2014JYXM41);安徽省质量工程项目(2014zjjh079);安徽省重大教学改革项目(2016jyxm0777);安徽省自然科学研究项目(2015FXTZK02);安徽省重大教学改革项目(2015xdjy196);安徽省教学研究项目(2015jyxm728)

猜你喜欢

C语言程序设计编程
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
基于Visual Studio Code的C语言程序设计实践教学探索
纺织机上诞生的编程
从细节入手,谈PLC程序设计技巧
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
PLC梯形图程序设计技巧及应用
论子函数在C语言数据格式输出中的应用