杨剑 张敏辉
摘要:“C语言程序设计”、“数据结构”、“面向对象程序设计”是工科院校计算机专业中开设的三门重要的专业基础课,传统的教学相对独立、分开授课,因此导致内容脱节,教学效果差。这三门课程对于应用计算机解决一个实际问题来说是缺一不可的,也是密不可分的,本文提出将三门程序设计类课程进行在教学大纲、教学方法、实践内容和考核方式进行融合,以C语言为主线,将各种类型的数据结构糅合其中,并辅助以面向对象的思维解决问题,使C语言与数据结构有机地结合在一起。这样能够很好地激发学生的学习兴趣,有效地提高学生的学习效率。学生在掌握基本理论和知识的同时,C语言的程序设计能力、程序的阅读能力、面向对象的思维和设计能力,数据结构的应用设计能力也得到了很好的培养。
关键词:课程融合;CDIO;程序设计;工程应用能力
中图分类号:G642.0 文献标识码:A 文章编号:2095-2163(2015)05-
Teaching and Research of Courses Integration in Program Design based on CDIO
YANG Jian
(Chengdu College of University of Electronic Science and Technology of China, Chengdu, Sichuan, 611731)
Abstract: "C language programming", "data structure" and "object oriented programming" are three important professional basic courses in Computer Science Specialty in engineering colleges. The traditional teaching is relatively independent and separate teaching, so the content is out of line and the teaching effect is poor. The three courses in computer application to solve a practical problem is indispensable, and also inseparable. This paper proposes three program design courses on the syllabus, teaching methods, practice content and assessment methods for fusion, using C language as the main line, various types of data structure of blend among them, and to assist with oriented object thinking to solve problems, therefore the C language data structure organically unifies in together. This research fruits can stimulate students' learning interest and improve their learning efficiency. While students master basic theory and knowledge, students also cultivate the ability in the C language program design, the program's reading, object-oriented thinking and design, data structure design.
Key words: Courses Integration; CDIO; Program Design; Engineering Application Ability
0 引言
“C语言程序设计”、“数据结构”、“面向对象程序设计”是工科院校计算机专业中开设的三门重要的专业基础课。从学科体系上说,《C 语言程序设计》着重讲授C 语言的语法和程序设计方法,《数据结构》主要讲授线性和非线性结构的逻辑结构、存储结构及相关算法,《面向对象程序设计》则重在讲解面向对象的思想以及面向对象在程序设计中的应用,现代软件设计的理论和实践中,从抽象数据类型和面向对象观点来讨论数据结构已经成为一种主流,使得“C语言程序设计”,“数据结构”和“面向对象程序设计”三门课程构成了紧密的内在关联。但是,传统的教学模式通常是将这三门课程分开排定在三个学期,第一学期开设C 语言,第二学期开设数据结构,第三学期开设面向对象程序设计,在以往教学中,这三门课程是相对独立、分开授课的,因此导致内容脱节,教学效果差[1]。
一般“C语言程序设计”课程只注重C语言的语法体系,因此学习过却不能用C语言编写程序的大有人在;“数据结构”则注重讲授抽象的数据关系和算法在计算机中的表示及实现,学生在纸上能写出抽象描述算法,上机实践应用时却无从下手。在实践教学中,教师规定的实验课题多是结合某个现实问题,要求使用教材中介绍的算法,采用编程语言加以实现,这样使学生的注意力集中在算法的分析与理解上,而忽略了数据结构的定义,尤其是剥离了所研究对象的数据与操作之间内在的联系。在“面向对象程序设计”的教学中,教师对课程的讲解多是基于语法体系的,重语法轻实用。在实践教学中,由于实验内容没有针对性,验证性实验多而综合性实验少,学生上机通常只是照搬书本上的程序输入到计算机,调试发现语法上的错误,最后得到输出结果。这样的方式只能让学生机械地记住一些编程语言的语法知识,不能够培养学生的自主学习能力,无法调动学生的积极性,编程能力实际上得不到充分有效提高[1]。
这种以学科知识体系为本位的教学模式违背了我校学生培养原则,已至于学生普遍认为C语言难学,数据结构更难懂,面向对象难用。首先,解决问题的完整过程被拆分。用计算机解决一个实际问题通常需要两个过程:解决问题的算法和用计算机实现算法。数据结构描述了解决一个问题的算法思路,C语言和面向对象程序设计可以将算法在计算机上实现,这两个过程原本属于共同的统一整体,却分开在三个学期,使学生将完整的过程分开学习,不符合学习的规律。然而这三门课程都以培养学生解决实际问题的程序设计能力为共同目标。因此,如何将这三门课程有机地结合起来,构建C语言、数据结构面向对象程序的程序设计的新体系,改革教学方法,提高教学质量,成了当前教学改革中亟待解决的问题。
从完整地解决一个实际问题的角度看,数据结构课程注重培养学生的逻辑思维能力和分析解决问题的能力,提供解决实际问题的算法思想,C语言作为一种语言工具,可以将算法用计算机付诸实现,而面向对象思想则展示提供了程序设计的思维的建立和对实际问题的解决。这三门课程对于应用计算机解决一个实际问题来说是缺一不可的,也是密不可分的。从课程内部的知识结构看,C语言和面向对象中体现了数据结构的思想,数据结构中应用了C语言和面向对象的知识。
国内外的经验证明CDIO的“做中学”适合大学工科教育教学过程的各个环节,CDIO教学模式以产品的研发、运行生命周期——构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate)为载体,让学生以实践的、主动的、课程之间有机联系的方式学习工程,以培养复合型创新人才为目标,在教学内容、教学方式和考核方式等教学环节对C语言程序设计、面向对象程序设计和数据结构等三门课程进行改革即已成为切实可行的研究思路和现实可用的方案探索[2-3]。
1 改革理念与思路
本课程的设计改变了以往“C语言程序设计”、“数据结构”和“面向对象程序设计”分开的模式,而是以C语言为主线,将各种类型的数据结构糅合其中,并辅助以面向对象的思维解决问题,使C语言与数据结构有机地结合在一起。这不但解决了数据结构中的算法描述问题,而且在算法的实现过程中用C语言为工具,以面向对象的思想进行程序设计,三者相辅相成,互相促进。学生更好地掌握最常用的数据结构,理解数据结构内在的逻辑关系,理解数据与关系在计算机中的存储表示以及用C语言描述这些数据结构的运算和实际的执行算法,提高了解决实际问题的程序设计能力,适应了学科迅速发展和知识更新的需要。
1.1整合后的课程目标
根据以上对三门课程传统教学的分析和课程间的内在关联,本课程改革的目标是:将C语言、数据结构和面向对象的知识内容有机整合,设计一些生活中常用的案例和项目覆盖教学知识点,在解决问题的同时学习知识,注重培养学生应用数据结构知识分析解决实际问题的能力和以C语言为工具应用计算机解决问题的能力。
1.2 课程整合的原则
在课程整合时本着“兴趣导向,应用为本,理论够用”的原则,抛弃按学科体系组织教学内容的传统模式,代之以“应用能力培养”为目标组织教学内容的新模式,案例和项目的选择既能激发学生的学习兴趣,又具有实用性,将三门课程中相同或相通的知识点有机有序地结合,以完整的案例和应用项目为依托将所有零散的知识难易适当、循序渐进、设置合理地分配、贯穿在其中。让学生在相同时间里掌握更多的知识,提高对编程语言和数据结构课程的理解。形成具有CDIO特点的全新的教学知识体系。
1.3 课程整合后的教学方法与教学手段
CDIO教育模式概括起来可以理解为“基于项目教育和学习”和“做中学”。(Project based education and learning)。在日常教学中,通过对学生的引导,让其主动学习,让学生明确所开设课程在本专业的地位及作用;让学生预先了解在学习该门课程时所需掌握的知识和能力。通过保障学生积极参与大量的设计性和综合性实验,来锻炼学生的实际动手能力,进而培养学生的主动学习能力。与此同时,也必将培养学生分析问题和解决问题的行之有效的学习应用能力。
本项目将基于CDIO,对融合后的课程进行教学改革,拟进行的课程改革整体架构如图1所示,在融合后的课程的教学中,应用CDIO教育模式。以“做中学”为出发点,探索“知识讲解案例化、课内课外协作化、实战演练一体化”的教学模式。
为实现CDIO模式所倡导的在“工程基础知识”、“个人能力”、“人际团队能力”和“工程系统能力”四个层面上进行综合培养的教学模式,本课程教学将由传统的教师引领课堂转变为以学生为主体,课本中的知识点转变为“项目”主导,如此即将传统的课堂模式转变为以实际经验为核心的情境建构教学模式。
2 改革具体实践方案
在培养方案中,研究仍将程序设计类课程放在前三个学期,把程序设计类课程分为三个部分,如图2所示,程序设计1——C语言程序实定在第1学期开设,64学时,讲授C语言的语法和程序设计方法,并同期开设16个学时的程序设计实践1,注重对给定问题的系统功能的实现。在第2个学期开设程序设计2——数据结构,64学时,讲授数据的逻辑结构、存储结构及相关算法,并同期开设16个学时的程序设计实践2,注重在上学期实现的系统基础上数据的组织和系统的重构。在第3个学期开设程序设计3——面向对象程序设计,32学时,讲授面向对象的思想以及面向对象在程序设计中的应用,并同期开设32个学时的实践课程:Java/C#/MFC应用开发(学生根据以后的学习方向,三选一),注重以面向对象的设计思想重构之前的系统并实现。
虽然程序类课程仍然分为三个学期,三门课程,但这三门课程采用了统一的教学大纲、统一的教学方法、统一的考核手段,有效避免了课程之间的脱节,加强了课程之间的衔接,使三门课程形成一个整体,重点突出,相互补充,使学生能学以致用。
2.1教学大纲融合
应用CDIO原则,针对学生的编程能力、项目开发能力实施重新规划,进而重新撰写教学大纲,在教学大纲中,需要明确指出该课程应该培养学生哪种方面的能力,而该能力又需要哪些知识体系,把能力培养和课程教学有机结合起来。同时,更要重新梳理课堂教学的教学内容。以能力培养为中心,分阶段、分层次进行教学。具体解析如下。
(1)教学内容分阶段。对应软件工程开发周期模型,将融合后程序设计课程的内容进行阶段式分解,形成一套完善连贯的剧本式教案。
(2)知识难度分层次。按教学大纲中知识难易程度,将教学内容难易分开,对不同层次的学生开展有针对性的教学。在各个阶段,融入不同能力培养目标,形成基本理论、基本操作、综合设计三大知识体系结构,基础、提高、综合运用三位一体的教学环节。
2.2教学方法融合
以CDIO中工程为载体的教学模式,引入项目机制,以案例驱动教学,采用“教、学、做”相结合的引探教学法,注重培养学生的动手能力、表达能力、协作能力和自学能力。在实施过程中综合运用了案例教学、分组教学、团队教学等多样化教学方法,教学手段上也同时采用阶段式、层次式、讨究式、互动式,使学生在学习过程中融会贯通。
在教学中,通过打破传统的章节划分,即以知识群为核心,并以完成一个具体案例为终期目标,重点讲授完成一个案例所需知识点,让学生在做中学,培养学生对具体问题的分析和解决能力。图3说明了融合课程的部分教学案例。
2.3实践内容的融合
在实践方面,进一步采用了课内验证性实验和单独开设的综合性实践相结合的方式。具体地,验证性实验加强学生对知识的理解和掌握,一般是小型的以知识点为核心展开的题目,以便于学生掌握相关知识的运用为目标,综合性实践采用贯穿性案例,在三个学期的综合性实践多将采用同一案例,在不同的阶段,提出不同的要求,程序设计实践1注重对系统功能的实现,程序设计实践2注重系统中数据的组织和系统的重构,Java/C#/MFC应用开发注重以面向对象的设计思想重构系统并予以实现,让学生掌握相关知识在实际问题中的综合运用。相应地,图4展示了一定制综合性案例——“航空管理系统”在三个阶段的实践中的不同要求。
2.4考核方式融合
研究中,一改以往书面考查的简单形式,以CDIO 倡导的“过程评价”为基础研发展开,关注知识、技能的学习过程,关注实践环节及工程应用能力,关注学生、教师不同主题的评价。侧重强调的是学生课程实践能力和解决问题能力,以课程项目和课程作业为主要考核指标。结合本院学生实际情况,采取将理论考试、上机测试与课程作业考核相结合的形式进行考核,如图5所示,图中实线矩形框表示理论考核,点划性矩形框表示编程和综合实践能力考核。
由图5可知,各类考核方式的含义内容可描述如下:
(1)理论知识的考核。将理论考试作为阶段性的测试,考核学生对核心知识能力的掌握程度。
(2)编程能力的考核。采用多阶段的综合测评编程考核。通过平时的上机测试,期末的编程能力上机测试,综合测评学生的编程能力、程序设计的逻辑思维和分析能力。
(3)综合实践能力考核。对学习进行综合实践能力的培养,实行分组教学,推进团队协作学习。以CDIO的思想进行综合实践能力的培养,培养学生的团队合作及工程项目研发能力,让学生在团队环境下获得较真实的软件开发经验,提高学生在项目规划、工作分配、成员交流等多方面的能力,培养积极向上的合作精神。在培养实践能力的同时,注重培养职业素养;为学生创建与工作环境相似的场景,以期更好地适应现代化开发团队和开发环境,提高工程能力。对于综合实践能力考核,则采取多元化的评价方式,对包括团队合作能力、问题的分析和解决能力、设计和编码能力、测试和容错能力、成果展示能力、设计文档编程能力等多种能力进行考核。
这样,过程考核变单一考核为复合考核,变静态考核为动态考核,既提高了学生对平时学习的重视程度,激发了学生学习的进取性,又考核了学生掌握知识的实际情况,让学期成绩能真实地评估学生在学习过程中已具有的编程能力,从而长足、显著地提升了学生综合素质。
3 结束语
将“C语言程序设计”、“数据结构”和“面向对象程序设计”三门课程有机结合的教学改革,能够深层激发学生的学习兴趣,进而有效提高学生的学习效率。学生在掌握基本理论和知识的同时,C语言的程序设计能力、程序的阅读能力、面向对象的思维和设计能力,数据结构的应用设计能力得到了首要、且主导性的培养。
教师在教学中将贯穿“C语言”、“数据结构”和“面向对象”三条主线,并将三门课程整合在一起,以任务驱动进行整体设计;采用“情境教学法”和“重建任务驱动法”进行单元设计。基于CDIO,采用做中学一体的形式开展课堂教学。这样提高了教学效率,使学生的技术应用能力、职业实践能力和创新能力得到了符合现实的理想培养,因而取得了良好的教学效果。
参考文献
[1]胡文龙. 基于CDIO的工科探究式教学改革研究[J]. 高等工程教育研究,2014,01:163-168.
[2]张士辉,祁芸,严玮. 基于CDIO的卓越工程师订单班课程改革实践[J]. 高等工程教育研究,2014,05:187-190.
[3]冯莹莹,周红志. 程序设计与数据结构课程的融合教学模式研究[J]. 重庆科技学院学报(自然科学版),2013,03:147-149.
[4]张培颖,郑秋梅,宫法明,朱连章. CDIO工程教育模式在软件工程核心课程教学中的应用[J]. 教育探索,2014,12:21-22.
[5]吕庆文,曹蕾,李远念,陈武凡. 基于CDIO模式培养复合型卓越软件工程师的探索[J]. 高教探索,2013,01:71-76.