面向应用型创新人才培养的程序设计语言实验教学
2016-12-29田琳琳刘斌于红赵小薇贾棋
摘要:针对C/C++语言实验教学中“重结果轻过程,重验证轻应用,重模仿轻创新”的问题,提出从解决复杂的工程问题出发,构建多层次、阶梯型与交叉式的程序设计类实验教学体系,说明实验教学改革的目标及措施,并从实验形式、实验方式和实验内容3方面阐述具体实施过程。
关键词:程序设计语言课程;实验教学;创新人才;应用能力
0.引言
创新型人才是建设创新型国家的力量和重要依托,党的十八大对创新创业人才培养做出重要部署,国务院对加强创新教育提出明确要求。我国高等教育法也指出:高等教育的任务是培养具有创新精神和实践能力的高级专门人才。实验教学是培养学生应用能力和创新能力的重要环节,尤其对实践性较强的软件工程专业,应通过工程实践开拓学生的创新思维,在实际应用中提升创新意识和技能。
程序设计语言类课程是计算机相关专业的核心基础课,而C/C++通常是理工科学生接触的第一门计算机高级语言,对于提升低年级本科生应用创新能力至关重要。传统程序设计语言类课程实验教学往往重结果轻过程,重验证轻应用,重模仿轻创新。为探索面向应用创新能力培养的实验教学模式,在C/C++语言课程中开展立体式实验教学。
1.实验教学中的创新能力培养
创新能力是个体运用一切已知信息,包括已有的知识和经验等,产生某种独特、新颖、有社会或个人价值产品的能力;创新人才指具有创新意识、创新精神、创新思维、创新能力并取得创新成果的人才,因此,创新教育应以提升学生的创新能力为目标,主要从培养创新意识、创新思维和创新技能3个方面开展。
实验教学促使学生通过实践理解并应用知识,相比于理论授课,更有利于多层次多角度地培养创新能力。在实践中激励创新意识,即激励推崇创新、求新求变、积极探索的精神,能够有效激发创新欲望;在应用中培养创新思维,鼓励打破思维定势,采用批判地视角,提出与众不同的设想或有新意的解决方案;通过工程训练实验提升创新技能,加强独立获取知识和运用知识的能力、高效的信息搜集和处理能力、发现分析和解决问题的能力,以及运用创新思维及方法将知识转化为成果的能力。
2.实验教学中的问题及原因
2.1实验内容缺乏系统性与实用性
传统课堂教学通常基于计算机高级语言的语法体系展开,实验内容往往是验证某章节学习的语法规则为主。这种教学模式忽略知识之间的关联,不利于建立完整的知识体系,因此学生容易迷失在繁杂的语法点中。实验题目缺少工程应用背景,一般利用某个经典算法解决数学问题或实现简单的事务管理,例如用冒泡排序算法处理学生成绩。这种编程训练侧重巩固语法和算法实现,学生难以将知识映射到实际问题,不利于构建计算思维与创新思维。
2.2实验形式缺乏层次与梯度
此类课程通常为大一学生开设,考虑到授课对象计算机基础和自学能力较弱,且缺乏相关工程训练,因此实验的类型通常以验证性实验和程序设计性实验为主,以简单的小组项目开发为辅。对于简单的验证性实验,学生一般通过机械地模仿教材案例学习语法,缺乏创新学习的动机与环境。各个章节的设计性实验题目都较为独立,难以将知识点有机地融合起来。综合性实验一般在课程设计中进行,学生无法在学习过程中体会应用知识的成就感,错失了提高学习热情的最佳时机。这种实验体系中实验形式相对独立且缺乏层次感,各种实验题目的设置缺乏系统性与关联性,不利于通过实际应用激发学生的创新意识。
2.3实验过程缺乏创新激励
在实验教学环节中,教师往往忽视设计思路和创新意识的引导,很少有针对性地进行创新技能训练。当前高校师生比过低,这一客观因素导致深入推行创新教育面临严峻挑战。对于大班制授课模式,教师每次指导百余学生上机操作,很难有针对性地进行创新思维的启发。实验题目难易的设置通常没有明显的区分度,对于有一定编程基础和计算机基础薄弱的学生,完成实验的要求基本一致。此外,验证实验结果一般要求程序满足功能性需求即可,而忽略引导学生深入分析问题,从而进一步优化程序。这种实验过程与考核标准导致学生以完成代码为目标,缺乏深入的思考和创新训练,不利于创新能力的培养。
3.实验教学改革的目标及措施
根据2015年5月国务院办公厅印发的《关于深化高等学校创新创业教育改革的实施意见》,我院积极推进程序设计类课程的应用创新能力培养,从教学理念、教学模式及教学方法进行全方位的改革。
(1)革新教学理念,贯彻“应用激励创新”的培养方针。摒弃语法导向的教学,构建“多学科融合,面向创新应用”的实验教学体系。基于跨院系跨专业交叉培养的新机制,实验内容可来源于各个学科的具体实际问题,鼓励融合其他学科的思维方式或技术手段解决问题。实验教学应以运用程序设计思想解决工程及科学问题为着眼点,不仅着力提升学生的编程技能,还需注重培养学生的逆向思维、批判思维与创造性思维,鼓励学生敢想、敢说和敢做。
(2)改革教学模式,丰富实验教学的层次。全面完善教学体系与课程设置,打破软件工程相关课程之间的壁垒,统筹规划程序设计相关课程的知识体系。及时更新陈旧的教学内容,从实际工程项目或科研课题中提炼素材,建立可分解、可扩展、可重用的实验教学案例库,实施设计性实验与综合性实验同步与异步相结合的教学模式。
(3)强化创新引导,健全激励机制。采用小班授课形式,增强实验指导力度,全面开展启发式的讨论教学,以激发创新精神和创新意识为宗旨,践行“做中学”与“学中做”的自主学习模式。同时,全面提升教师创新教育水平,在实验过程中结合学生特点因材施教,有针对性地进行创新意识的引导和创新技能的培训。
4.实验教学改革的实践
为切实推进在程序设计类课程中实施创新教育,针对授课对象的特点及C/C++课程特点,从应用出发构建计算机高级语言的知识体系,精心设计教学案例,循序渐进地开展多层次的教学活动。
4.1多层次的实验形式
在立体式的实验体系中,多种实验形式有机融合在共同的教学目标中,将验证性实验、设计性实验及综合性实验统一在创新实验框架下。将较为复杂的工程项目进行简化,分解为几个相关的案例,某些案例中可抽取若干主要问题,每个子问题实现时映射到相关知识点。在不同的教学阶段分别解决这些子问题。同一案例可以在各种相关课程中使用,引导学生通过不同角度分析问题。
以在线游戏网站项目为例,将其简化为单机版游戏的开发,可分解为棋类游戏、牌类游戏和迷宫游戏等案例。在C课程中完成三连棋、贪吃蛇和汉诺塔等游戏的设计;而在C++课程中完成扑克牌、国际象棋和开心农场等游戏。棋类游戏分解方式如图1所示。
教师在课程开始时介绍游戏网站开发的项目背景,将单机游戏设计作为综合性实验的目标。引导学生利用面向过程程序设计的思想分析游戏架构,将复杂问题分解成功能模块,鼓励学生从软件设计者的角度思考问题。在设计性实验中引入待解决的问题,启发学生运用程序设计的方法实现某些功能。在讲授c++语言时可再次分析该案例,引导学生体会面向对象的设计方法。这种项目-案例-问题三级驱动的实验教学模式,不仅有助于培养学生的计算机思维方式,还能有效提升学习热情并激发创新意识。
4.2阶梯式的实验方式
结合多层次的实验形式,借鉴软件工程中增量式的开发方式,在实验教学中因材施教,针对学生特点设置实验目标。对于刚接触程序设计的初学者,教师引导从小型游戏人手由浅入深地剖析程序,使学生体会知识点的应用,熟练运用c或c++语言实现经典算法,实验目标是有效提升编程能力。在此基础上,引导学生掌握程序设计的思路和方法,合理规划程序,从时空效率、代码规范性及创新性功能等角度优化代码,着力培养学生的工程实践能力。对于学有余力的学生,鼓励通过自主学习实现在线游戏的开发系统,从游戏可玩性、人机交互方式以及系统负载等方面完善系统,最终开发设计具有实用价值的网络游戏。这种递进式的实验方式可以激励创新精神,在工程应用中培养学生的创新思维,切实提高创新技能。
4.3交叉式的实验内容
面向创新人才培养的实验教学,要求实验内容来源于工程项目或科研课题,引导学生利用程序思路和方法解决实际工程或科学问题。为了进一步完成创新实验的要求,还需结合数据结构、项目管理、网络通信以及相关计算机科学知识,通过项目实训将各门课程知识有机融合,有助于学生建立完整的计算机知识体系。此外,将交叉学科项目引入实验教学中,鼓励软件工程专业的学生更多地了解其他行业的专业知识,实验题目涉及机械工程、信号处理、数学分析、交通运输等多学科的工程问题,培养多维角度思考问题、多学科启发下发现问题和解决问题的综合能力。这种多学科交叉式实验教学可开拓创新思维,能够有效激发求知欲望和探索精神,对于应用型复合人才的培养具有积极作用。
5.结语
为培养能够解决实际工程问题的创新实用性人才,在程序设计语言类实验课程中进行面向创新教育的实验教学改革十分必要。立体式创新实验教学模式倡导知识和实践的无缝结合,注重解决实际问题的综合能力培养;以兴趣驱动学习,注重学生创新意识的提升与能力的挖掘。3年的教学实践表明,应用多层次、阶梯式与交叉式的实验体系,使学习目标更加明确,对提升学习积极性和激发创新精神起到一定作用。近年来软件学院参加国际ACM-ICPC大赛、MCM-ICM比赛及各级软件设计比赛的人数逐年递增,更多的低年级本科生积极加入大学生创新项目、教师的横纵课题及科研团队中。然而,要进一步提升创新应用人才培养的质量,还需深入全面地进行相关课程教学改革,从完善多学科启发的案例库、推进在线自主教学平台建设及加强教师创新教学能力等方面进行探索。