基于多课程交叉的程序设计教学改革
2017-02-27冯潇
冯 潇
(重庆邮电大学 计算机科学与技术学院,重庆 400065)
基于多课程交叉的程序设计教学改革
冯 潇
(重庆邮电大学 计算机科学与技术学院,重庆 400065)
提出利用多课程交叉实现程序设计类课程的教学改革,探讨课程的教学内容、课堂教学方法改革和配套教材建设情况,说明多课程交叉改革取得的效果和下一步改革方向。
多课程交叉;整洁代码;知识发现;活代码
1 背 景
2003年,根据华为、中兴、上海贝尔等国内多家知名IT企业的内部培训资料整理出版的《高质量编程指南C++/C语言》指出:“国内大学的计算机教育压根就没有灌输高质量程序设计的概念”“在企业内部测试过近百名新老程序员的编程技能,质量合格率大约是10%”“高质量程序设计非常重要”[1]。
2010年,软件工程领域的领袖Robert C. Martin,根据多年软件开发和管理经验出版了《Clean Code》,站在软件学科建设和软件行业发展的高度,提出代码整洁度直接影响软件的生命力。Robert C. Martin进一步指出,应将书写整洁代码的相关方法、技巧视为基本的程序设计能力。该书中文版译者韩磊更是明确指出:“代码整洁性的缺乏是职业素养和基本功的双重缺陷。”[2]可见,企业更需要知识、能力和素质兼具的人才。
教育部高等学校计算机科学与技术教学指导委员会(2006—2010)制定了《计算机科学与技术专业发展战略、规范及认证》,指出:“高等学校计算机类相关课程在满足社会需要方面的针对性不够强,课程内容和课程模式必须进行大力度的改革。”
2006年,教育部高等学校计算机科学与技术教学指导委员会发布了《关于进一步加强高等学校计算机基础教学的意见》(简称白皮书)。白皮书以目前主流的程序设计语言C、C++、VB为例,详细罗列了程序设计语言的基本知识、语法、初步的调试能力。
必须指出的是,白皮书中的程序设计教学重点是知识和语法,属于狭义上的“程序设计”,即软件生命周期中的下游环节——实现(编码)。广义上讲,程序设计是针对现实中的特定问题进行建模并最终利用计算机求解或控制。该过程可分为建模和实现两部分,从软件质量控制的角度来讲,建模和实现都必须遵守软件工程的相关规范、原则、模式,也就是说,建模、实现和规范(原则、模式)是程序设计的三要素,是相互联系的有机整体,如图1所示。
由于建模、实现各自涉及不同的理论方法,通常将建模、实现和软件工程设置为多门课程:一般在一、二学年设置以C、Pascal为代表的面向过程程序设计课程,以C++、Java为代表的面向对象程序设计课程;在三、四学年设置面向对象分析与建模、软件工程、算法分析与设计等课程。
教育者必须清楚地认识到,即使把建模、实现和软件工程设置为不同的课程,也不能割断其天然的、内在的联系,广义上的程序设计其本质特征就是“多课程交叉”。基本的程序设计能力的培养不仅应包含程序设计相关知识的传授,更应包括软件工程基础实践技能的培养、基础的系统设计和优化原则、模式的运用。
目前,高校的程序设计课程从课程内容、教材建设、教学方法来讲,多数都是单一的知识传授,忽视了基于交叉课程的能力和素质培养。程序设计教育应摆脱单一的知识传授功能,做好知识、能力、素质的无缝衔接。
图1 程序设计三要素
2 多课程交叉模式教学改革思路
改革的主要目标是针对程序设计初学者改革课程内容和教学模式,帮助学生在学习程序设计之初,就树立高质量编程的意识,能初步运用基本的软件工程实践技能、基础的系统设计和优化原则、模式,提高程序质量。
围绕改革目标,首先确立“多课程交叉”的知识范围,将其有机组织为课程内容。由于软件工程和建模领域涉及的知识具有极强的实践性,因此这些领域的知识在程序设计课程中往往以例题的形式出现,求解时常常需要多次迭代同一个例题,引出更优的建模方法和更好的软件工程实践规范。因此,“多课程交叉”模式的教材建设和课堂教学方法是改革中极为重要的一环。
从实践角度讲,程序设计能力的培养离不开多读、多写程序,因此,必须改革实践和考核环节,以动手能力和团队协作能力为实践环节的主要评价标准,使之更面向能力的训练和素质的培养。
3 多课程交叉模式教学改革实践
自2011年起,在重庆邮电大学范围内,以计算机专业的限选课程面向对象程序设计C++、非计算机专业的全校任选课程C++程序设计作为试点,进行了“多课程交叉”模式的教学改革实践和探索。
3.1 “多课程交叉”模式知识板块设计
在多次教学实践活动中我们发现,交叉课程里反复涉及的内容有设计模式、敏捷软件开发(主要是测试驱动开发、简单设计)、整洁代码,而程序设计的三要素中,建模主要涉及面向对象分析与建模课程,实现主要涉及面向对象程序设计课程,软件工程不仅涉及基础的实践技能,更需引入初步的敏捷软件开发技能,如图2所示。
图2 “多课程交叉”模式知识板块设计
这里,引入整洁代码相关规范和技能,将软件工程和面向对象程序设计衔接起来,提高编码的规范性和整洁度;引入设计模式,将软件工程和面向对象建模衔接起来,强化训练可复用面向对象程序设计的能力;引入敏捷软件开发中的测试驱动开发和简单设计,采用更符合学生思维特点的方式进行建模能力训练。
3.2 “多课程交叉”模式课程内容设计
C++程序设计课程的内容由各知识板块和对应实例构成,如图3所示。实例为知识服务,通过学习知识、完成实例,学生能理解、掌握、初步运用知识。所以,可以将课程内容视为平面结构,其主要目标是知识的单向传授。
图3 以知识传授为目标的课程内容设置
为了实现“知识、能力、素质”的无缝衔接,课程内容改革着眼于实例改革。具体地说:为每个知识板块精心挑选实例,通过逐次迭代,为同一实例建立更优的模型。模型优化的指导思想是相关交叉课程——设计模式、整洁代码、敏捷软件开发。这种在实例基础上反复迭代、优化模型的方法,做到将知识、软件工程基础实践技能、初步的系统构建和优化原则运用作为整体的基础程序设计能力同步传授给学生,其课程内容是整体的、多维度的,实例是知识、能力的衔接口,如图4所示。
目前,改革已经连续在6个年级中贯彻,最终形成一套系统、完整的“多课程交叉”模式讲义和教案。
3.3 “多课程交叉”模式课堂教学方法改革
由于课程改革着眼于通过在同一实例上迭代出不同的模型,并且后续模型应优于前面的模型,所以在课堂教学方法上应尤其注意例题的讲授方法和建模思想方法的传授。因此,课堂教学方法拟将活代码教学法和知识发现、整洁代码教学法有机结合在一起。
这里活代码教学法指:教学过程中将求解问题的过程以完整的、可以运行的程序进行演示的教学方法;知识发现教学法指:教师在讲授知识的过程中,不应将知识和其中包含的思想、方法割裂开来,而应该同步传授给学生,帮助学生理解问题的来龙去脉,实现“授人以渔”的教学;整洁代码教学法指:按照软件工程、敏捷软件开发、设计模式等课程的指导思想将高质量、规范的编码应用于教学活动中。
课堂教学方法的具体改革思路:从实例建立第一个模型开始,每个模型都采用活代码教学,而模型1到模型n的多次迭代,采用知识发现、整洁代码作为模型优化的指导思想。整个优化过程就是传授软件工程核心思想、良好设计模式的过程,有助于学生通过课堂教学中的实践环节将知识、能力和素养作为一个整体进行理解和掌握,如图5所示。
图4 以知识、能力、素质为目标的课程内容设置
图5 课堂教学方法改革示意图
4 改革效果
目前,基于多课程交叉的教学改革已经在课堂教学方法、教案设计、教改立项、教材建设上取得了突出的成果:①2013年,获得重庆邮电大学教育教学改革立项支持;②2013年,获得重庆邮电大学规划教材立项支持;③贯彻该改革思想的课程面向对象程序设计C++在2014年重庆市普通高校青年教师教学技能竞赛中获得二等奖、重庆邮电大学青年教师教学技能竞赛中获一等奖;④2013年,面向对象程序设计C++课程教案设计获得重庆邮电大学优秀教案一等奖;⑤在清华大学出版社出版教材《解析C++面向对象程序设计》;⑥改革获得了学生的肯定和喜爱,课程主研的学评教连续4学期排名全校前5%。
5 结 语
将建模、模型优化、模型实践这3个环节有机结合在一起,同步培养学生的知识、能力、素养是软件领域相关课程教学的薄弱环节。基于多课程交叉模式的程序设计类课程改革致力于改进这一现状。改革的下一个重点:以C++课程为试点,建设多课程交叉模型的MOOC平台,提供丰富的课堂教学视频和相应的在线互动平台;完善课程群配套的教材改革建设,精心设计出基于C、Java、C++的体现多课程交叉教学思想的教材;将多课程交叉模式运用到学生的第二课堂中,包括课程设计、随堂实验和课外科技活动,进一步检验、修正和完善该改革模式。
[1] 林锐, 韩永泉. 高质量程序设计指南C++C语言(第3版修订版)[M]. 北京: 电子工业出版社, 2012.10.
[2] Robert C M. 代码整洁之道[M]. 韩磊, 译. 北京: 人民邮电出版社, 2009.12.
(编辑:郭田珍)
1672-5913(2017)02-0018-04
G642
重庆邮电大学2013年教育教学改革项目(XJG-1311);重庆邮电大学2013年规划教材项目(JC2013-09)。
冯潇,女,讲师,研究方向为云计算、大数据,fengxiao@cqupt.edu.cn。