APP下载

CDIO模式在C语言教学中的应用研究

2018-01-31张白吴国强韦海成肖明霞

中国教育技术装备 2017年22期
关键词:项目驱动任务驱动

张白+吴国强+韦海成+肖明霞

摘 要 基于CDIO教育模式,构建项目驱动与任务驱动相结合的C语言教学方法,以综合项目为总体目标,以语法知识为主线,通过函数封装教学过程成果,通过综合项目集成学生教学过程成果,提高学生学习成就感。并以数学分析软件项目为例,阐述如何实施基于CDIO的C语言程序设计教学改革。

关键词 CDIO;项目驱动;数学分析软件项目;任务驱动

中图分类号:G642.0 文献标识码:B

文章编号:1671-489X(2017)22-0098-03

Research on Application of CDIO Mode in C Language Teaching//

ZHANG Bai, WU Guoqiang, WEI Haicheng, XIAO Mingxia

Abstract The CDIO teaching mode based on project driven is intro-

duced in this paper, C language teaching method combining with task

driven method and project driven method is constructed, it has a

comprehensive project as the overall goal, and grammar knowledge

as the main line, through the packaging function of teaching process

achievements, then integrated students teaching process achieve-ments into the comprehensive project, finally improved students learning achievement by these way. Taking the mathematical analy-sis software project as an example, this paper expounds how to im-plement the teaching reform of C programming language based on CDIO.

Key words CDIO; project driven; mathematical analysis software project; task driven

1 引言

C语言程序设计是测控技术与仪器专业的一门重要专业基础课,是所有程序设计相关课程的基础,如单片机、智能仪器、测控电路等重要专业课程。当前以数据类型、运算符、选择结构、循环结构等基本语法知识为逻辑的教学方法在C语言传统教学中广泛采用[1]。这种线性教学模式可以循序渐进地把教学内容传授给学生,但是很难锻炼学生的逻辑思维和解决实际问题的能力。传统以语法知识点为主的理论教学,学生普遍反映知识点零散繁多,解决实际问题困难。同时,C语言常常采用笔试为主的考核方式,注重语法知识等记忆性内容的考核,却忽视了对学生实践编程能力的考核,造成很多学生会阅读程序但不会编程[2]。因此,改进C语言教学方式,提高学生学习兴趣,促进学生对理论知识的掌握与实际编程能力的提高,培养学生逻辑思维,成为任课教师的研究重点。

CDIO(Conceive,构思;Design,设计;Implement,实现;Operate,运作)作为一种新的工程教育理念,在教学过程中贯彻项目开发的思路,旨在重点培养学生熟练运用专业基础知识的能力、工程分析和解决问题的能力、团队协作和交流的能力[3]。借鉴CDIO工程教育模式,通过项目驱动教学法与任务驱动教学法的结合,宏观教学过程采用项目驱动教学方式,微观教学过程采用任务驱动教过方法,充分结合项目驱动教学的明确目标性与任务驱动教学的清晰逻辑性的优势,并对C语言程序设计课程教学内容进行精简,期望调动学生的学习热情,提高学生的实际编程能力,达到C语言课程的教学目标。

2 C语言教学现状

学习兴趣低 由于当前JAVA、C++、C#等高级程序设计语言的流行与就业需求,学生对于学习C语言这类基础性编程语言的兴趣越来越低。特别是学习主动的学生,他们对于当前软件开发中常见的快速界面开发平台的兴趣远远高于C语言;而学习被动的学生,枯燥的语法知识也难以提升他们的学习兴趣。

学习主动性差 当前学生学习积极性偏低,以北方民族大学测控技术与仪器班级为例,课前预习与课后复习寥寥无几;课前预习的空白是造成课堂教学效果削弱的主要原因之一,课后复习的缺失是造成学生语法知识薄弱的关键因素之一。

过度注重语法 C语言教学中以语法为中心开展教学,往往造成重语法而轻算法的问题。笔者在以往的教学过程中发现,部分学生虽然对语法基本掌握,但就是无法编写实际程序。这与英语教学中存在的单词量足够而无法实际应用的问题极其相似。事实证明,编程实践是掌握语法细节的关键途径。

注重卷面考试 现行C语言考试以笔试考试为主,忽略实际编程能力,这直接造成学生考试前突击复习的现象。大量通过死记硬背的方式通过考试的学生基本不具备实际编程能力,这对于C语言课程以及基于C语言的其他专业课教学带来极大隐患。

3 教学探索与实践

分组教学模式 由于C语言程序设计的灵活性,同样的问题可以有多种多样的实现方式,这就为开展分组教学提供了良好的条件。将教学班级分为若干小组,通过小组讨论交流的方式提高學生的参与度。为实现锻炼同组学生的逻辑思维能力,要求每组学生设计不同的程序实现任务要求,通过组成小组讨论完成学习任务,相互学习、相互监督、相互借鉴。同时,为避免学习能力弱的小组成员抄袭他人程序,允许无法独立设计不同程序的学生在认真分析小组其他学生的程序的基础上,对程序进行详细注释,加深其理解,提高学习质量。endprint

项目驱动教学模式 传统以语法知识为重点的C语言教学过程以例题为依托,阐述相关算法,讲授相关语法知识。但演示例题多且相对陈旧,例题之间关联性差,往往都是独立题目,难以实现代码的复用,难以增加学生的学习成就感。同时,当前学生普遍存在的课前不预习、课后不复习的学习问题,也造成传统教学效果越来越差。因此,引入项目式教学,打破以语法为中心的传统教学,设计综合性项目,以任务涵盖语法知识点,以多任务函数构建综合性项目。

1)项目的选择及任务设定,单纯的项目式教学法难以适用于C语言教学,过大的教学项目难度过大,学生难以接受,过小的教学项目又难以起到项目驱动教学的目的。而任务驱动教学适合通过小型项目或任务讲授理论知识与编程技巧。因此,通过结合项目驱动教学与任务驱动教学,宏观上采取项目驱动,微观上采取任务驱动,灵活开展教学。由于C语言知识点散,一个项目难以覆盖所有知识点,为此,首先将教学内容划分为若干个项目子任务,每个子任务覆盖主要语法知识点,并以函数实现封装。

如循环结构项目任务,设计奇数和与偶数和的求取,要求分别采用while、do-while和for实现。在进行理论教学时,由教师先对任务进行算法分析与设计,在讲解过程中引入若干问题,以问题引导学生思维,重点阐述算法逻辑思路,让学生在上机实验中加深语法知识点认识与建立算法逻辑思维。

C语言教学综合项目设计为数学分析软件项目,项目包含的功能函数由运算功能、选择功能、数据排序、数据求和、平均值计算、面积体积计算、矩阵计算等。学生在练习的过程中,不断积累数学分析软件的函数,完善数学分析软件功能,并在项目子任务综合过程中加深对原有学习内容的认识,增加学生的成就感。

2)项目的实施,项目以函数的形式予以实施,教师在教学过程中仍然按照现有教材的组织顺序进行教学,但将每章内容中的语法嵌入项目子任务中,例如:运算功能通过函数封装实现C语言支持的所有运算符,要求不同小组实现不同运算符的运算;选择功能实现不同输入下选择不同的功能,要求不同小组实现不同结构的选择;数据排序功能通过函数封装实现数组数据的排序,要求不同小组实现不同循环结构、不同数据结构的排序;平均值计算功能通过函数封装实现数组的平均值计算,要求不同小组实现不同数据类型、不同数组结构的平均值计算;面积体积计算功能通过函数封装实现几何体的面积与体积计算,要求不同小组实现不同几何体的面积与体积计算;矩阵计算功能要求通过函数封装实现矩阵的简单运算,如矩阵的和、差、乘积、逆与行列式等。

项目采用开放性任务,对任务本身不做过多约束要求。同时,小组可以提出自己的任务题目,充分发挥学生的创造性与主动性,增强学生的学习效果。最终,学生可将教学过程中设计的各函数集成在一起,构建一个综合数学分析软件,通过选择结构实现不同功能的调用,使得学生有充分的学习成就感。

任务驱动教学模式 传统的理论教学过程以教师讲授为主,学生参与不积极,学习兴趣不高,教学效果难以达到教学目标[4]。特别是C语言程序设计涉及庞杂的语法规则与灵活多变的算法设计,传统的课堂教学更难提升学生的兴趣与学习欲望[5]。因此,根据学生的学习基础,调整教学内容与例题,以最精练的教学例题展现语法知识与算法设计思路,通过问题引入知识点,通过知识点构建项目子任务,并在小组实践中运用并巩固理论知识点。

如选择结构中,首先提出在软件设计中常常面临二元选择或者多元选择的问题,如教务系统登录时的身份选择就是典型的选择结构。课堂教学示例以项目驱动教学采用的教学综合项目为目标,各子功能的经典结构作为教学实例,引导学生使用语法知识点与设计算法。并且学生独立实施子功能时,进一步练习语法知识点,锻炼逻辑思维能力与实践应用能力。对于学生遇到的瓶颈问题,通过小组讨论,发挥学生的积极性与创造性;对于小组无法解决的问题,教师帮助梳理思路,学生负责编程并验证结果;对于学生共同存在的问题,通过讨论群或者课上有针对性的系统讲解,加深学生算法设计与编程实现的能力。

4 考核方式

C语言程序设计注重学生的实践编程能力,传统的笔试评价难以充分反映学生的实践编程能力。为此,本课程注重过程评价,加强实践能力考核,弱化笔试考试。考核方式包含平时成绩10%、上机考试20%、实验成绩20%和期末成绩50%四部分。其中,平时成绩包括上课出勤与作业;上机考试与实验主要考核学生的实际编程与调试能力,而为了提高学生对于项目的重视程度,上机考试内容来源于数学分析软件项目中的子任务,采用随机抽取的方式进行考核。

5 结论

本文借鉴CDIO工程教学模式,构建项目驱动与任務驱动相结合的C语言教学方法,形成以综合项目为总体目标,语法知识为主线,通过函数封装教学过程成果,通过综合项目集成学生教学过程成果,提高学生学习成就感。精简教学内容,通过任务驱动实现项目子任务的内容,通过综合教学项目提升学生学习的成就感,梳理繁多的语法知识点,通过开放的任务要求激发学生的创造性和积极性。笔者通过这些教学方法和评价方法的改进,学生学习的积极性有显著改观,实践编程能力较往届有明显增强,综合应用知识的能力得到了提升。

参考文献

[1]张蕾.基于项目化教学的“C语言程序设计”课程改革[J].计算机教育,2013(2):17-20.

[2]于延,周国辉,李红宇,等.CDIO模式下C语言程序设计实践教学改革[J].计算机教育,2016(2):122-126.

[3]姜大志,孙浩军.基于CDIO的主动式项目驱动学习方法研究:以Java类课程教学改革为例[J].高等工程教育研究,2012(4):159-164.

[4]张白,周春艳.CDIO模式在智能仪器教学中的应用研究[J].中国教育技术装备,2015(22):92-93,97.

[5]王重英.C语言程序设计教学改革与实践[J].软件,2012(5):111-112,118.endprint

猜你喜欢

项目驱动任务驱动
依托工作室的软件工程实践教学研究
基于物联网项目驱动的嵌入式系统教学改革的研究与实践
基于“红色之旅”项目驱动的《调酒与咖啡》工作室制人才培养机制探讨
任务驱动式教学模式在电子技术课程中的应用
任务驱动教学法在《网络应用服务管理》教学中的应用
任务驱动教学法在中职信息技术教学中的运用
试论基于项目驱动的机械制图教学改革