CDIO工程教育模式在数据结构与算法教学中的应用

2014-12-11 22:16于波郭红李鹏
黑龙江教育·高校研究与评估 2014年12期
关键词:工程教育

于波+郭红+李鹏

摘    要:数据结构与算法是计算机、软件工程等专业核心的专业课程。文章针对数据结构与算法课程教学中存在的问题,基于CDIO工程教育模式以及软件工程师“构思—设计—实施—运行”系统所必需的能力模块,提出了数据结构与算法课程教学改革的措施。

关键词:数据结构与算法;CDIO;工程教育

中图分类号:G642.0          文献标识码:A          文章编号:1002-4107(2014)12-0027-02

一、数据结构与算法教学存在的问题

倪光南院士指出,中国如果能发挥人才优势,不久就可成为仅次于美国的世界第二软件服务大国[1]。高素质的软件人才是我们成为软件大国的必要条件。目前国内软件设计相关专业毕业的工科生多数仅仅熟悉了一两项软件技术,存在专业基础不扎实、分析和解决问题的能力薄弱、动手能力不强等问题,导致了软件行业存在需求大于合格应聘者的尴尬现象。这一现象的根本原因在于学生在校期间没有夯实好专业“内功”,像数据结构与算法这样的专业基础课程没有取得良好学习效果。国内外相关专业在进行本课程教学中存在的主要问题如下。

(一)教学内容过于抽象

本课程涉及的知识面比较广,各章节的知识点有相互关联的逻辑关系,教学计划的制定多以理论知识点的讲解为主,选取的教材多数抽象难懂,缺少具体的实践案例的讲解,学生只能停留在理解层面,无法学以致用。

(二)教学模式僵化

老师课堂讲授侧重概念、理论,导致学生只能从理论上掌握基本的数据结构及其相关算法,但难以通过计算机编程语言(如:C/C++)实践相关理论,更不会用所学知识解决具体问题。很多学生在学习该课程的时候不知道在实际中如何应用各种数据结构和算法,仅仅学会一些“死”的理论来应对考试。

(三)实验教学环节薄弱

学生在实验的过程中,只停留在书本上,模仿书上的代码,存在理论脱离实际、实践环节薄弱问题,学生往往产生“学而无用”的思想。

(四)教学效果不佳

由于上述几个问题,学生只会机械地实践,没有领悟专业知识背后的思想,导致学生不清楚学习本课程的价值何在,分析问题、解决问题以及编程能力都没有从根本上得到培养,从而导致专业素质未得到提升。同时,学生的团队合作意识、良好的编码习惯等工程化思想未得到培养。

二、CDIO工程教育模式的特点

2000年10月,MIT联合瑞典的三所大学成立了以Edward Carwley教授为首的跨国高等工程教育改革研究组,创立了工程教育模型——CDIO(Conceive构思、Design设计、Implement实现、Operate运行),是“做中学”和“基于项目教育和学习”的集中体现[2]。

针对工程师的培养,CDIO提出的根本出发点就是为了设计造福于人类的软件产品,所以学生必须能发挥一个工程师的作用。表1显示了在企业/社会环境下,工程师“构思—设计—实施—运行”系统所必需的知识、技术及态度的组成模块。对于技术工作感兴趣的成熟的个体应具备个人和专业的技能,这是培养实践能力的核心。为了开发复杂的增值工程系统,学生应掌握最基本的技术知识和推理能力。为了在当今团队环境下工作,学生一定要发展团队合作和沟通的人际交往能力。最后,为了能够在企业/社会背景下创造和运行产品,一个工科生必须理解“构思—设计—实施—运行”系统的相关内容。

表1  工程师“构思—设计—实施—运行”系统所必需的能力模块

三、数据结构与算法课程教学改革的措施

教师培养学生实施软件项目都是围绕“构思—设计—实施—运行”这一背景进行的。表2显示了软件工程师参与工程设计的过程与CDIO之间是有对应关系的,可以看出,CDIO的理念是渗透在软件工程过程的每一个阶段。因此,基于CDIO的教育模式以及软件工程师进行“构思—设计—实施—运行”系统所必需的能力模块,提出了数据结构与算法教学改革的具体实施措施。

表2  软件工程师工程设计过程与CDIO之间的关系

(一)“构思”

教师授课时要明确培养“软件卓越工程师”的目标,而不是“软件外包程序员”,所以要强调数据结构与算法作为专业基础的重要性,可以让学生修炼以不变应对不断更新的软件技术的“内功”。在学习每个抽象的知识点前,一定要提出为什么要学习它,能解决什么问题。培养学生在软件工程设计过程中,能发现、分析和澄清一个问题的能力。

(二)“设计”

主要培养学生在工程设计过程中“提出—选择—实证”方案的能力,是软件工程师最重要的技能。课堂上多采用启发式教育方式,让学生自己提出解决问题的方案,如:拟采用的数据结构模型以及相对应的算法。然后通过算法的时间复杂度和空间复杂度进行事前比较分析,选择最优方案。最后,将要解决的问题通过“分而治之”的思想划分为子模块,并应用决定使用的方案,进行实证分析,看是否可以解决原问题。这个阶段也是培养学生逻辑推理和解决问题能力的阶段。

(三)“编码”

主要培养学生将分析设计的方案及相关抽象的理论知识用具体编程语言实现的能力。根据CDIO提出的“做中学”的工程教育理念,将授课中每一个抽象的理论知识渗透到具有实际意义的案例中,升华技术知识的运用。从而,使学生的学习更有效,能够学以致用,培养其实际运用的能力。除了专业知识和个人技能的培养,教师在案例教学和实践教学过程中,更要注重培养学生养成良好的编程习惯,形成良好的、符合软件设计规范的编程风格,从而使学生设计的数据结构与算法容易理解,具有较强的可读性,这也是一名优秀的软件工程师与人交流的“代码语言”,也是其人际交往能力的组成部分。

为了使学生通过本课程的学习,能够设计出时间上更高效、空间上更经济的程序,通过竞赛为载体进行教学,鼓励学生参加学院、学校组织的编程竞赛、ACM-ICPC省级大学生程序设计竞赛以及全国软件专业人才设计与开发大赛、软件大赛等。这些程序设计比赛解决问题的方式是“构思—设计—实施—运行”的模式,也需要学生具备工程师所必需的能力模块。通过这些竞赛平台,丰富了实践教学的形式,让学生拥有“学以致用”的平台,使学生的学习更有针对性,提高学生学习的主动性和参与性。通过“做中学”的方式有效地夯实专业基础的同时,提升其分析和解决问题的能力,实践动手能力也得到极大加强。

(四)“测试与维护”

培养学生在软件工程实践活动中创造、运行软件产品的能力。在教学中,将学生组成项目小组,并且根据学生的特点分配不同角色,各自经过“CDI”三个阶段,一起通过团队协作完成一个软件系统的开发。培养学生在设计、编写相关数据结构和算法的时候,本着“高内聚,低耦合”的思想,设计合理的接口,便于最终系统整合。同时,强调学生设计的程序要有通用性和灵活性,便于后期的修改和维护。

四、教学改革效果

哈尔滨理工大学软件学院将CDIO的工程教育理念应用到数据结构与算法的教学中,在教学的各个环节实施相应措施,培养学生“构思—设计—实施—运行”系统所必需的能力。图1显示了在数据结构与算法课程中实施CDIO教育模式两个年级学生期末考试成绩的对比。其中,平滑折线代表11级采用传统教学模式的数据结构与算法课程的成绩(67人,平均值=53.4),点划线代表12级实施CDIO教育模式后的数据结构与算法课程的成绩(65人,平均值=66.6)。可以看出采用CDIO模式后,学生整体成绩有明显幅度的提高。

由此,可以证明在数据结构与算法教学中实施CDIO工程教育模式是非常有效的。下一步将继续研究通过该模式的指导有效提高学生的工程实践能力,培养符合企业需求的软件人才。

图1  实施CDIO教育模式前后学生数据结构与算法课程成绩的对比

参考文献:

[1]靳晓燕.中国有望不久成第二软件大国[N].深圳特区

报,2013-11-17.

[2]Crawley,E.F.The CDIO Syllabus:A Statement of

Goals for Undergraduate Engineering Education

[R].MIT CDIO Report #1,2001.

猜你喜欢
工程教育
“卓越计划”背景下工程导论课程教学改革研究
CDIO模式下JaVa程序设计课程教学改革探索
基于CDIO理念的计算机类人才培养模式改革探索
法国高等工程教育的早期发展