林 宏,李 彤,张 雁,禹玥昀,杨微微
(1.西南林业大学 计算机与信息学院,云南 昆明 650224; 2.云南农业大学,云南 昆明 650201)
在高校本科教学中,学而不能致用是很多课程教学中存在的问题.毕业生的实践能力差,工程思维缺乏一直为社会和人才市场所诟病.主要原因有:①教学内容陈旧,已不能适应社会需求; ②偏重理论教学,对实践能力培养不够; ③知识点过于独立,工程思维培养欠缺; ④实验多为验证性试验,各实验内容之间缺乏关联,不能形成有机整体; ⑤对前导和后续课程之间的关联性关注不足.如何提高学生的工程实践能力和社会适应能力是值得我们探索和思索问题,也是近年来教学改革的重点.
CDIO工程教育模式是由麻省理工学院和瑞典皇家工学院等四所大学共同创立的工程教育理念,并成立了以 CDIO命名的国际合作组织.CDIO代表构思(Conceive)、设计(Design)、实现(Implement)和运作(Operate),它以产品研发到产品运行的生命周期为载体,让学生以主动的、实践的、课程之间有机联系的方式学习工程.CDIO培养大纲将工程毕业生的能力分为工程基础知识、个人能力、人际团队能力和工程系统能力四个层面,大纲要求以综合的培养方式使学生在这四个层面达到预定目标[1].
CDIO能力大纲共4部分3级70条400多款,是一个全面的工程师培养目标.将工程师必须具备的工程基础知识、个人能力、人际团队能力和整个CDIO全过程能力逐级细化,使工程教育改革具有更加明确的方向性、系统性.CDIO能力大纲[2]在重视理论基础的同时,也注重实践能力、职业技能、职业道德、沟通与合作等能力的培养.表1为二级能力大纲.
Java语言是目前市场上一门主流的程序设计语言.课程名称为《Java程序设计》,课程性质是专业基础课.主要任务是使学生掌握Java程序设计语言,理解面向对象程序设计的思路和方法,培养学生面向对象编程能力,注重对学生工程开发思想的培养[3].通过课堂讲解、实验、实践,要求学生达到以下4个层次:
1)掌握Java语言的语法.
2)形成良好的编程习惯.
3)深入理解面向对象程序设计思想.
4)培养工程思维和团队精神,提高合作能力,沟通能力,统筹规划能力.
该课程共78学时,分为课程和实践两部分.课程共48学时,其中理论授课24学时,实验24学时,实践30学时.于每学年秋季学期对计算机科学与技术专业开设,学生规模在50~60人左右.
表1 CDIO二级能力大纲
基于CDIO的改革思路是教学过程应以工程为背景,以工程为线索,以工程为目的,明确按照CDIO能力大纲的条款,每一个学时应该达到的目标.本文将课程按照内容分为4大部分,下面将详细介绍每一部分的授课内容、目的、学时分配、实验设计以及对应的CDIO能力.
基本语法部分是Java语言基础,包含教材两章内容.第一章《概述》,主要介绍Java语言的发展历史,应用范围,使学生了解学习对象的来龙去脉.有些教师或学生认为,这些知识不重要,在讲解时常常三言两语一带而过.事实上,这属于专业文化修养范畴,作为一名专业人员应当了解.教材通常在第一章内容中讲Java和面向对象的封装、继承、接口等特性和垃圾收集机制.本文认为,这部分内容应该调整到第二部分内容结束后作为总结来讲,以便于理解.第二章主要介绍Java的基础语法.之前学生已有C语言基础,Java语言在常量变量,基本数据类型,三大控制结构等方面与C语言相似,因此,这部分内容作简要讲解.本部分内容,学时分配及对应的CDIO能力大纲如表2所示.
表2 基本语法部分教学安排及对应CDIO能力大纲
面向对象特性部分主要详细介绍Java面向对象的封装、继承、接口3大特征,是本课程的重点讲解部分.包含教材的五章内容,分别是第三章《类和对象》,第四章《类的重用》,第五章《多态与接口》,第七章《异常》,另外包括Java API文档结构及使用,基础类库和常用类.本部分内容,学时分配及对应的CDIO能力大纲如表3所示.
本部分的讲解以一个项目来驱动,先提出项目的需求和业务流程,然后以面向对象的设计思想,引入知识点的讲解.这项目应该具有以下几个特点:1.学生接触较多,容易理解和想象的应用场景;2.知识点覆盖面宽.
尽管本部分的实验以验证实验为主,但教师在讲理论和安排实验时,应刻通过驱动项目刻意突出工程思维.比如,在讲解类和对象时,就可以将驱动项目中的类作为例子讲解.
表3 面向对象特性部分教学安排及对应CDIO能力大纲
本部分主要介绍Java的数据结构,包含教材中的两章内容,第六章《数组》,第九章《对象的集合》.其中,第六章《数组》主要介绍Java中的数据与C语言中的数组的不同之处,强调数组也是对象的概念.本部分内容,学时分配及对应的CDIO能力大纲如表4所示.
表4 数据结构部分教学安排及对应CDIO能力大纲
本部分主要介绍工程开发中常用的包和技术,包含教材中的三章内容.第十章《输入输出》主要介绍Java.IO中的各种流类及方法.第十一章《JDBC访问数据库》是用Java开发MIS系统必不可少的技术,主要介绍Java.sql包中的类及方法,以及如何在Java中嵌入SQL语句访问数据库.第十二章《Java图形用户界面》主要介绍java.swing包中的类和方法.本部分内容学时分配及对应的CDIO能力大纲如表5所示.
以上48学时的内容主要在于建立学生的基础理论,CDIO的能力大纲分布主要集中在基础科学知识和核心工程基础知识中.通过项目驱动,使学生对各知识点的应用有所体会,要求授课师重教视工程思想的渗透.下面将通过课程实践进一步学习和强化工程思想.
表5 常用的包和技术部分教学安排及对应CDIO能力大纲
本课程安排30学时的实践,学习方式为集中学习,一般安排每天6学时,连续5天完成.本阶段的目标是巩固Java语言编程,领会工程开发的思想和精神,锻炼表达、合作、沟通能力[4].实习之前,学生已经学习过《Java程序设计》,《数据库原理及应用》,《网页设计》,还未学习过《JEE架构》,《软件工程》等.
提供15~20个难度适中的项目供学生选题,项目应难度适中,工作量能够在实习期内完成.学生4~5人一组,每组完成一个项目.指导教师主要由企业的软件工程师担任,每位指导教师指导2个小组.交付给项目组的材料是一份详细的需求规约和业务流程.
实习过程中,指导教师将按照CDIO的思想“构思-设计-实现-运作”对进行指导.完成后验收每组的设计成果,由课程教师及所有项目指导老师打分和点评.为保证效果,由指导教师把关,制定详细的计划,严格按照软件工程思想指导和启发学生,保证每个阶段能够达到相应的CDIO能力大纲培养目标.实践过程中的教学环节可采用多种方式,如指导教师讲解、小组讨论等,由指导教师灵活掌握[5].
构思(Conceive)阶段是从软件工程的角度出发,详细了解开发需求之后,确定系统目标及要求,定义系统功能,论证可行性,安排开发任务,计划开发时间.
实践的构思阶段首先确定项目组成员,各小组确定项目经理.各组应推选技术能力较强,统筹安排能力强,协调沟通能力强的同学担任项目经理,确定项目选题.
由项目经理组织小组成员对需求进行讨论,明确系统的用户角色及权限,划分系统功能模块.分析工作重点和难点,论证系统功能在课程实践过程中是否能够完成.项目经理为组员分配任务,制定进度计划,明确时间节点上的项目进展程度.每个阶段的讨论结束之后,都应由一名小组成员负责向指导教师和小组成员进行一次总结汇报,形成文档.本部分内容,学时分配及对应的CDIO能力大纲如表6所示.
表6 构思阶段内容及对应CDIO能力大纲
设计(Design)阶段是根据构思阶段得到的系统功能定义对系统建模.对于一个信息管理系统而言,可分为3项设计内容:
1)类的设计.按照面向对象设计思想,抽象出类,设计类,确定每个类应该有那些属性及方法,类与类之间如何通信.
2)数据库设计.如果学生的选题涉及到数据库,则需要进行数据库设计.通过E-R图对数据库建模,确定设计哪些表,表的字段,表与表的关系和其他约束关系.
3)界面设计.根据系统的特点,讨论并确定系统的界面或页面风格和样式.
设计阶段的工作至关重要.学生由于工程经验缺乏,工程意识淡漠,通常不重视系统设计,在没有对需求深入分析和功能定义不清的情况下,就匆忙开始编写代码.导致后期发现设计与需求有偏差而返工.指导教师需要参加小组讨论,予以引导,协助项目组论证设计结果.本部分内容,学时分配及对应的CDIO能力大纲如表7所示.
表7 设计阶段内容及对应CDIO能力大纲
实现(Implement)阶段是具体实现设计阶段的成果,包括:①建立数据库和表;②编码;③视图层设计.由项目经理分工,分工原则按照功能模块划分,尽量做到平均工作量.比如:将所有页面设计分配给一位同学,将所有编码分配给另一位同学,这样的分工就不适合本门课程要达到的目标.应该确保小组成员都能够参与到页面设计,数据库设计,源代码编写工作中.
在测试过程中,开发人员应先测试自己设计的功能模块,然后再交叉测试,便于发现问题.本部分内容,学时分配及对应的CDIO能力大纲如表8所示.
表8 实现阶段内容及对应CDIO能力大纲
由于知识储备,开发经验,时间等条件的限制,学生在为期5天的学习中开发的软件系统,通常难以在现实环境中推广应用.每个小组都可在局域网中发布开发的软件,所有同学都可使用这些软件,然后以小组为单位,对每个软件提出用户感受和修改建议.如有需要,项目组可以对自己开发的软件作用户培训.本实践的意义在于使学生了解系统完整的生命周期,开发结束之后,还包括对用户的培训,系统的优化,演变及消亡.
项目验收采用答辩的方式,由全体学生和指导教师参加,指导教师作为评委打分.每组需对项目在构思、设计、实现、运行四个阶段的工作进行汇报,演示系统,总结,接受同学和教师的提问.本部分内容,学时分配及对应的CDIO能力大纲如表9所示.
表9 运行阶段内容及对应CDIO能力大纲
本课程改革之后,有3个变化:①注重工程思想的渗透,使学生时刻意识到工程学科的学习目标,工程开发理念在现代软件开发中的重要性.②将课程中各个知识点通过项目和工程的贯穿,形成有机的整体.③由学生以团队的形式自主开发,从形式、内容、时间上弥补了课程教育的局限,锻炼了课堂教育缺失的合作能力、沟通能力、领导能力、全局观等.
基于CDIO工程教育模式是一种更加适合工科学生培养的教学模式.从CDIO的12条标准和能力大纲来看,基于CDIO理念的教学改革,是对目前课程资源的一种的新的整合,甚至可以打破课程、时间、空间的界限,在有限的时间内达到更好的教学效果.比如,与Java相关的系列课程:《JEE架构》、《数据库原理及应用》、《网页设计》、《软件工程》,可以将这些课程组成和一个系列或一个单元,在其相交部分设定系统化的教学内容和目标,使不同的课程也能够以工程的思想有机的结合.
CDIO的理念不仅应该体现在每一门课程的教学过程中,更应该体现在一个课程系列乃至一个专业的教学计划中.