以能力培养为导向的程序设计基础课程改革与实践
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
以能力培养为导向的程序设计基础课程改革与实践
作者:金永霞刘景
来源:《中国电力教育》2014年第05期
摘要:探讨了以能力培养为导向的非计算机专业程序设计基础课程的改革思路。
优化教学内容,编写特色教材,突出算法和程序设计方法,以培养学生的程序设计能力;采用问题驱动式教学方法,以训练学生的计算思维能力;强化实践环节,开发教学辅助系统,以提高学生的自主学习能力。
关键词:能力培养;程序设计;计算思维;自主学习
作者简介:金永霞(1973-),女,宁夏平罗人,河海大学物联网工程学院,讲师;刘景(1973-),男,山东费县人,河海大学物联网工程学院,副教授。
(江苏常州 213022)
基金项目:本文系河海大学常州校区2013年度教育教学改革项目“能力导向型程序设计语言教学及考核方法研究与实践”的部分研究成果。
中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)05-0101-02
程序设计是目前国内高校理工科专业普遍开设的一门基础课,该课程以培养学生科学的思维方法,提升解决问题的能力为目标,指导学生熟悉基本编程模式,掌握程序设计的思想和方法。
很多学校在程序设计课程中都以C语言作为程序描述的工具,但在教学活动中往往把“C 语言”作为重点,而较少关注“程序设计”。
学生虽然投入了大量的精力去学习C语言的语法,但面对一个实际问题时还是不知道如何去编程解决。
笔者结合多年的教学实践经验,着眼于学生综合能力的培养,对程序设计基础课程的教学内容、教材建设、教学模式以及实践环节方面进行了改革和实践,以帮助学生理解程序设计的基本原则和方法,训练科学的思维能力,学习如何利用计算机去解决一个实际问题,同时通过上机实践掌握高级语言的语法规则和编程技巧。
一、优化教学内容,注重培养程序设计能力
程序设计课程传统的教学内容是以语法知识为主线组织的,每介绍一个语法知识点时引入相应的例题,讲解在程序中如何运用这些语法规则,这种组织方式能够帮助学生较好地掌握语法,但容易忽视对算法思想和程序整体框架的理解,不利于程序设计能力的培养。
为此笔者在授课时对教学内容重新进行整合,突出“程序设计为主,语法规则为辅”的教学思想,将C语言的主要语法在课程的开始阶段就集中讲解,使得学生快速掌握主要语法知识和常用控制结构,初步具备编写程序的基本能力。
在此基础上展开算法与程序设计方法学,介绍程序设计的基本
思想和原则,结合一些具体案例给出编程解决问题的一般步骤。
后续在解决实际问题时再引入需要用到的复杂语法知识,这样就形成了以算法和程序设计方法为主线的教学内容。
程序设计的核心是算法,算法的本质是处理数据,为了引导学生在针对实际问题时拓展思路形成算法设计的策略,在教学内容的组织上大部分是围绕算法和数据结构展开。
[1]通过实例对同一个问题提出不同的算法并设计相应的数据结构,鼓励学生积极思考探索创新,真正了解程序设计的核心和本质。
由于程序设计相关内容的组织方式是一种网状结构,在学习当前知识的时候很可能会涉及后面章节的内容,这时候需要树立整体学习的观念,无需过度注重实现的细节,把程序中所涉及的所有函数模块以及数据结构置于程序设计的整体框架中,给出每个函数的功能和接口描述,整个内容学习完成后,再回头解决前面的问题。
这样在教学内容中始终贯穿程序设计的方法学,重视编程能力的培养,使学生认识到程序设计课程并不仅仅是了解某一个高级语言本身的语法,更重要的是学习如何用计算机解决问题的方法,为今后专业课的学习和实践打下良好的基础。
配合教学内容的优化,笔者出版了自编的主教材《程序设计基础教程(C语言描述)》和实验教材《程序设计实践教程(C语言描述)》。
主教材把程序设计的思路和方法作为重点,以算法为主线,把C语言作为描述程序的工具,从应用的角度切入,根据学生的学习规律,由浅入深,由易到难,构造了“以应用引入算法,在编程中掌握语法”的教材体系。
教材把算法和语言紧密结合,一开始先引入简单的程序并介绍基本的语法规则,让学生了解程序的组成要素,会编写简单的程序。
随着问题复杂度的逐步提高,算法和语法逐步深入,在编程应用中掌握枯燥的语法知识。
在教材中结合具体问题分类介绍常用的算法设计策略,提供了常用的编程模式,学生在运用这些基本算法的过程中逐步理解和掌握模块化程序设计方法,为学生编写大型程序提供借鉴。
二、采用问题驱动教学模式,训练计算思维能力
计算思维是美国学者Jeannette M. Wing教授提出的一种先进的教学理念,Wing教授认为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计以及人类行为理解的涵盖了计算机科学之广度的一系列思维活动。
计算思维就如同“读、写、算”能力一样,是每一个人为了在现代社会中发挥职能所必须掌握的根本技能。
[2]计算思维的本质是“抽象”和“自动化”,这是计算机求解问题的过程,而程序设计课程的目标之一就是让学生学会通过编程解决问题,因此在该课程的教学活动中结合具体案例训练学生的计算思维具有一定的实践基础。
[3]
培养学生的计算思维,需要树立以学生为主体的学习模式,变被动接受为主动学习。
为此,教师在第一堂课就向学生展示一些生动有趣的C语言程序,让学生了解C语言的应用领域,明确学习该课程的意义,激发探索研究的兴趣。
在授课时采用“问题驱动,建立数学模型,设计算法,程序实现,程序测试”的教学思路,由传统的知识输入型教学模式向能力培养型教学模式过渡,力图把计算思维内化为学生的思维习惯,启发学生面对问题积极思考。
问题驱动的关键是找到能引发学生兴趣的切入点,使“抽象”和“形式化”有的放矢,如提出一些有趣的逻辑推理问题“谁做的好事”、“八皇后问题”、“青蛙过河”等。
首先引导学生分析问题,归纳
并抽象出数学模型;然后为解决此类问题引入穷举法、递归等算法策略;最后在实现程序时介绍选择结构和循环结构等知识点。
学生在解决问题的过程中既学习了方法和思路,又掌握了语法知识,同时也训练了一种严谨的思维方式和综合运用知识的能力。
计算思维是人类求解问题的一条途径,程序设计的过程就是解决问题的过程,正确理解和运用模块化方法,是培养计算思维的内容之一。
教师在指导学生设计算法和编写程序时遵循模块化程序设计的基本原则,将问题分解为相对独立的小任务,引导学生建立程序的总体框架,帮助学生了解如何规划和设计一个完整程序。
由于阅读程序可以帮助学生熟悉语法,拓展自己的编程思路,教学时增加了程序阅读方面的内容。
在阅读程序时打破了传统的“提出问题,给出源程序,解释程序”的教学思路,按照“自顶向下,逐步求精”的程序设计原则讲解例题。
同时,为活跃课堂气氛,促使学生积极思考,鼓励学生对已有算法进行完善,以模块化的方式增加程序功能并上机调试,通过实验强化编程技能,加深对结构化程序设计思想的理解。
采用问题驱动教学方法,激发学生兴趣,以经典算法为基础,大量阅读程序强化基础概念的理解,树立模块化程序设计的思想,目的都是把计算思维能力的培养有效地融入到每一堂课中,使学生具备利用计算机求解问题的基本能力。
三、强化实践环节和辅助教学手段,提升自主学习能力
程序设计是一门实践性很强的课程,学生需要足够的上机实践来训练编程能力。
课程的实践包括两个阶段:一是按照课堂授课进度适时安排基础实验内容,要求学生编程实现经典算法,在上机过程中掌握语法规则和控制结构的运用,锻炼调试程序、排错、修改、正确性测试等基本技能,基础实验贯穿整个教学过程;[4]二是在课程结束时,设置独立的项目设计实践环节,要求学生针对一个实际问题,综合运用所学过的知识设计算法、实现程序,训练学生分析问题解决问题的能力、对知识的综合运用能力、创新能力和编程能力。
项目设计实验在实施时以分组形式展开,把一个项目按功能划分成若干模块,组内成员分工合作,每人根据自己的能力选择一个模块任务独立完成,力图使每个学生都能在自己原有的基础上有所收获和进步。
实验中碰到的问题可以在组内讨论解决,成员之间互相帮助,增强个体之间的沟通能力,形成一个良好的学习氛围,有助于学生的自我管理和自主学习。
实验环节注重过程管理,从实验预习、实验操作、记录审签、实验报告、实验考核等方面随时考查记录学生的表现。
[5]具体的过程管理方法为:学生在上机前就做好算法设计、编写源程序以及设计测试用例的工作;上机时主要调试、修改程序;在每个模块的程序完成后,教师检查验收程序并记录验收结果;学生在实验完成后提交实验报告,报告中重点分析阐述自己所承担的模块任务;在验收考核阶段,要求每位学生运行演示自己的程序并回答问题,教师根据学生在整个实验环节中的表现进行考核。
为了方便学生在课余时间的学习,笔者开发了程序设计教学辅助系统,系统包括平时练习、上机考试、修改题目、试卷处理、学生平时练习统计五个功能模块,教师利用此平台可以录入题目,供学生平时练习使用。
考虑到学生对参加计算机等级考试的需求,笔者按照等级考试的题型和要求,提供难度相当的上机练习题,强化学生的实际动手能力。
在学生上机所使用
的实验教材中,针对每个知识单元都给出了详细的程序范例和课外上机的题目,希望在课外没有指导老师的情况下,学生能按照教材的指导独立完成上机实验。
强化实践环节和辅助教学手段,规范实验过程管理,能够督促学生重视平时的上机练习,为学生的自主学习提供支持。
学生通过动手实践真正掌握编程技能,从该课程的学习中有所收获,避免了平时不努力,考试之前突击复习应付考试的不良现象。
四、结束语
对程序设计基础课程进行改革,目的是让学生掌握程序设计的思想和方法,在以后的学习中能利用高级语言编写程序来解决本专业领域中的问题,对提升学生的计算机应用能力具有积极的促进作用。
课程改革在实际教学应用中也取得了较好的效果,近年来学生在江苏省计算机二级考试中达到了较高的通过率,并且在“蓝桥杯”全国软件设计大赛中获得了一、二、三等奖的好成绩。
以能力培养为导向,优化教学内容,编写特色教材,采用启发式教学模式,强化实践环节和辅助教学手段,对程序设计类课程的教学改革做出了有益的探索,有利于学生对本专业课程的学习,对提升学生的专业能力具有重要意义。
参考文献:
[1]丁海军,金永霞,景雪琴,等.程序设计基础教程[M].北京:清华大学出版社,2013.
[2]Jeannette M. putational Thinking[J].Communications of the ACM,2006,49(3):33-35.
[3]陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011,(1):7-11.
[4]王晓勇,肖四友,张文祥.基于能力培养的C语言项目化训练教学模式初探[J].计算机教育,2009,(10):60-62.
[5]朱昌平,刘银恩,高远,等.通信电子线路实验课程教学的“五环”过程管理办法[J].实验室研究与探索,2005,24(8):11-13.
(责任编辑:王意琴)。