APP下载

以能力为导向的程序设计类课程教学体系

2011-01-01马雪英王桂平

计算机教育 2011年4期

  摘要:计算机专业程序设计能力是计算机及相关专业学生最重要的专业能力之一。本文分析现有程序设计类课程的目标定位、课程教学内容、实践教学模式等方面存在的不足,结合浙江财经学院程序设计类课程教学实际,提出基于能力目标导向,设计程序设计类课程教学体系(包括实践教学体系),构建开放式的实践教学平台,改革课程教学内容、教学模式和考核方式,以加强对学生专业程序设计能力的培养,提高学生的实践能力和创新能力。在该课程教学体系中,我们强调程序设计思想和方法的运用,强调程序设计的在线实践和项目实训,强调团队协作和创新能力的培养。最后,本文介绍了改革和实践的成效。
  关键词:程序设计类课程;教学体系改革;实践教学体系;程序设计能力
  
  高等教育的内容包括知识、能力和素质3个方面。知识是基础;能力是技能化的知识,是知识的综合体现,以知识运用的综合性、灵活性与探索性为重要内容,即运用知识有效解决实际问题;而素质是知识和能力的升华,涉及到其知识和能力是否可持续发展。高等院校需致力于专业能力与素质的培养。
  对计算机、电子、通信、信息等专业的学生来说,程序设计思想和方法的运用、数据结构设计与运用、算法分析与设计、应用软件设计与开发等专业程序设计能力是最重要的专业能力之一。课程教学是培养专业能力的主战场、主渠道,要围绕培养目标的实现,组织课程内容与教学。本文分析了现有程序设计类课程目标定位、课程教学内容、实践教学模式等方面存在的不足,提出以能力为导向,构建程序设计类课程教学体系(包括实践教学体系),优化教学内容,改革教学模式,以更好地培养学生程序设计能力,提高其实践能力和创新能力。
  
  1 程序设计类课程教学现状
  
  目前,一般高校针对计算机、电子信息类专业开设的以C语言为基础的程序设计类课程有:C语言程序设计、面向对象程序设计、数据结构、高级数据结构、算法分析与设计等。基于本课题组承担的浙江省高校本科计算机科学与技术教学指导委员会专项教学改革项目“软件开发类课程教学内容改革和实践教学方法创新研究”以及我校重大教学改革项目“以提高实践创新能力为导向的课程教学模式探讨和教学方法创新研究”的需要,我们对浙江省同类高校关于这些课程的教学现状作了调查和分析研究,主要状况如下。
  1)目标定位不明确:学习编程语言还是学习编程方法?教授编程知识还是培养用编程知识解决实际问题的能力?程序设计类课程目标定位不明确,没有建立课程目标体系,专业基础课的作用不明显;上述课程在知识结构上缺乏一条明确的主线,知识体系松散,不能前后连贯。
  2)对专业能力的培养重视不够:课程教学中太过强调程序语言本身的要素,以知识点为目标,忽视了对知识综合运用和实践能力的培养。
  3)对课程的实践性重视不够,实际知识运用的训练较少:实践教学不够系统和完善,实践项目的设计没有充分考虑能力目标的培养而过多关注程序语言本身的特性。
  4)练习和考试:多采用书面或验证性实验的形式,以标准化习题和简单的编程题为主,缺少对知识灵活运用的练习题,缺少专业性编程基础的练习题,缺少对程序实际运行的检查,从某种意义上引导学生只关注基本概念和语言要素,忽视了对程序设计能力的锻炼和培养。同时,教师工作量大,对程序设计题无法仔细评判,很难判断程序是否实际可行、是否可以产生正确的结果,教学质量难以把握并提高。
  5)从教学效果上来看:学生基本程序设计能力差,遇到程序设计问题不知如何下手,缺乏完整系统的程序设计方法,工作效率低;缺乏专业程序设计的能力和意识,代码质量意识弱,代码质量差,缺乏中等规模以上的程序设计能力。
  
  2 构建以能力为导向的课程教学体系
  
  程序设计与调试、面向对象的系统分析与设计、数据结构设计与运用、算法分析与设计、应用软件设计与开发等构成了计算机相关专业学生专业程序设计能力体系。为此,我校计算机科学与技术专业培养方案中,设置了程序设计基础、面向对象程序设计、数据结构、算法分析与设计、高级数据结构5门课程,作为程序设计类课程群,如图1所示。
  
  
  2.1 明确课程定位
  程序设计类课程作为信息类专业本科生的专业基础课,要突出课程的专业性,强调专业程序设计;要突出课程的基础性,强调程序设计实践能力;突出课程的实践性,加强教学的实践环节,通过实际编程考察教学效果。
  
  2.2 构建以培养能力为导向的课程教学目标体系
  我们按照课程群建设的思路,统一规划、统筹安排程序设计类各门课程各个阶段的教学目标,建立相辅相成、逐步提高、前后连贯的课程教学目标体系。根据课程在专业人才培养目标中的定位,以及目前社会对IT人才程序设计能力的需求,我们制定了3个目标:1)培养学生程序设计的知识和能力;2)培养学生分析和解决实际问题的能力;3)培养学生理论联系实际的习惯和自学能力。
  
  2.3 改革和优化教学内容,强调课程群各课程之间的知识连贯性,建立课程教学体系
  1)按照课程教学目标体系,以课程群为平台,由课程群教师共同协作设计逐步提高、前后连贯、层层梯度推进的课程内容体系。从程序设计基础课程开始,引入大量经典的、趣味性浓的、联系生活实际的案例,引导学生从解决问题出发、学习编程知识和语句,并提高其学习编程的兴趣。同时,各课程教学案例的设计注重前后知识运用的综合性和连贯性,后续案例以前续案例为基础,前面设计和实现的类、方法或者模块,是后续案例中的基础,培养学生系统化意识,以帮助学生建立知识体系。
  2)在教学内容的设计以及教学过程中各教学环节的设计中,应弱化学生对编程知识和语言本身的关注,突出对知识的运用。这里我们主要从以下两点进行改革:一是围绕能力目标,改革课堂教学模式,比如教学过程中,突出对学生分析问题、解决问题思路的培养,而不是强调某个语法问题、某个语句格式等,语法和格式等语言要素,留待学生在实践训练中加深和巩固;二是选择该课程群后期课程算法分析与设计课程为试点,围绕能力目标体系,大幅度改革课程教学内容和体系。传统的该课程各章节以几大经典算法为内容,包括背包问题、大数问题、图论算法、递归与分治、贪心算法、回溯法、动态规划等;而现在该课程的教学体系,以几个经典益智游戏的自动求解和人机对弈项目为主要教学内容,将算法的讲解包含在游戏和项目中,从而使学生掌握各种典型算法的分析和设计。同时,在实际教学过程中,我们把该课程的“讲解算法思路——让学生理解算法思路——用该种算法解决实际问题”的课程授课体系,改革为“提出趣味性、设计性并茂的实际问题——分析问题解决的思路和方法——引出所需要的算法并解决该问题——再用同样的方法去解决类似的实际问题以提高算法运用能力”,在教学过程中不断对学生强化“学习算法是为了解决实际问题”的意识,并引导学生进行算法分析和设计实践。
  
  2.4 建立课程实践教学体系,改革教学模式和教学方法,强调编程设计的在线实践和项目实训
  程序设计类课程群的实践教学体系设计思路可以概括为:两条主线、梯度训练、四个阶段,强调程序设计的在线实践平台和程序设计竞赛平台的应用,提倡团队协作,突出对学生综合实践能力、创新能力的培养。由此,本课题组构建的程序设计类课程教学体系如图2所示。
  
  2.4.1 两条主线
  根据课程的特点,程序设计类课程群的实践教学体系按照两条主线进行构建。第一条主线:程序设计基础、数据结构、高级数据结构这3门课程的教学以在线实践及程序设计竞赛为主线,通过在线实践这种新颖的实践方式提高学生的程序设计能力,并及时跟踪程序设计竞赛及计算机学科的发展趋势,改进课程的教学方法和教学内容。第二条主线:面向对象程序设计、算法分析与设计这两门课程的教学以益智游戏求解和对弈为主线,通过实训项目来提高大学生的算法分析与设计、应用软件设计与开发能力。这两条主线相辅相成。一方面,益智游戏的求解和对弈离不开编程能力,而编程能力可以通过在线实践不断提高;另一方面,益智游戏的求解和对弈是应用软件设计与开发的具体体现,强化学生程序设计系统化能力。
  2.4.2 梯度训练
  无论是课程实验还是在线实践,都考虑学生的接受能力,遵循“由易到难”、“由浅入深”的原则,通过梯度训练使学生逐渐掌握课程知识。从课程基础实践项目→综合实践(训)项目→课程设计→应用软件设计与开发,分层次梯度推进每门课程的实践(训)强度和难度。这里应用软件设计与开发,主要以益智游戏的自动求解和对弈软件的设计为主要形式。
  2.4.3 四个阶段
  第一阶段,程序设计基础课程的课程设计项目为一个基于控制台的小型软件;第二阶段,而向对象程序设计的课程设计则加入面向对象和可视化思想;第三阶段,数据结构的课程设计要求在软件中综合运用数据结构的知识;第四阶段,算法分析与设计的课程设计以益智游戏的自动求解和人机对弈为目标,提高学生的应用软件设计与开发能力。
  2.4.4 强调在线实践和以大学生程序设计竞赛为驱动
  1)以学科竞赛为驱动,开发在线程序评判系统,营造学习程序设计的氛围。
  大学生程序设计竞赛提供了一个让大学生充分展示用计算机分析问题、解决问题的能力与才华的平台,鼓励创造性和团队协作精神,鼓励开拓与创新。2004年5月,浙江省举办了首届大学生程序设计竞赛,至今已经连续举办7届,参赛的学校从2004年的45所增加到2010年的75所,参赛队伍数也从2004年的84队增加到了2010年292队。随着该学科竞赛在全省的推广,省内已经有多所高校(如浙江大学、浙江工业大学、杭州电子科技大学、浙江财经学院等)开发出各自的在线程序评判系统(Online Judge,简称OJ),举办校内比赛,拟以大学生程序设计竞赛为驱动,激发学生学习程序设计的兴趣,提高学生程序设计能力。
  我校的在线程序评判OJ系统(如图3所示)于2007年开发完成并成功作为我校第五、六届程序设计竞赛裁判系统,每届赛事参赛队伍50余队,参赛学生人数超过160人。同时该系统还为我校ACM协会定期举行的程序设计竞赛活动做在线评判。程序设计竞赛平台的构建,为我校计算机科学与技术、信息管理与信息系统、信息计算等专业学生营造了非常浓厚的学习程序设计的氛围。
  
  2)以在线程序评判系统为基础,构建程序设计类课程教学在线实践平台。
  由于没有合适的在线实践和考核平台,传统的练习和测试一般局限于书面或验证性实验的形式,以标准化习题和简单的编程题为主,缺少对知识综合运用能力和专业程序设计能力的训练和考核;同时,教师由于精力有限,又没有高效的评判系统,对于学生提交的程序也只局限于设计思路和语法的检查,缺少对程序实际运行结果的考核。这样的实践教学和考核体系,引导学生过多关注基本概念和语言要素,最终导致学生所具备的程序设计能力与IT企业的要求相距甚远。
  故从2008年开始,我们从语言支持、评判方式、题库管理等方面对在线程序评判系统进行升级和扩充,将该系统打造成满足程序设计类课程群实践教学、课程考核和竞赛需求的在线实践平台,有效改善了程序设计类课程实践教学效果,提高了学生专业程序设计能力。我们主要做了以下几方面的工作:
  (I)题库建设:为每门课程(除面向对象程序设计课程外),按照知识模块,根据我校学生实际,设计对应的练习题,同时收集经典的、趣味性强的、历年各种竞赛中出现过的合适的程序设计题(包括测试数据)。题库资源的建设和管理是开放式的,不管教师还是学生收集和设计的题目,只要经过系统管理员验证,均可以加入到系统的题库中。
  (2)课程服务:对于课程的任课教师,可以自由开辟本课程的实践专区,为某个章节或者某个阶段在题库中选取习题,设置练习或者测试环节,要求学生在给定的时间内完成。也可以根据需求和课程的特点,为课程设置在线考核专题。
  (3)竞赛服务:可以根据需要,开辟专项竞赛。目前除了承担我校和我院的程序设计竞赛以外,我们还为我校ACM协会和电脑协会开辟活动专区,围绕协会活动,举办不同范围内的程序设计竞赛。
  在线实践不问于传统程序实践,学生可以通过OJ网站,进入某课程的实践专区,选择专区中的程序设计题目,在线提交设计编写好的程序,OJ网站在线评判系统实时评判并反馈评判结果。学生可以根据OJ系统反馈回来的评判结果反复修改程序,直到最终被Accept(程序正确)。这个过程不受时间和地点的限制(只要能上网),也无需等待老师的批改结果,极大地拓展了学生的实践空间和时间。而且,在实践过程中,不仅能培养学生独立分析问题、解决问题的能力,而且每成功解决一道题目都能给学生带来极大的成就感(系统会记录每个学生每一次成功),激发学生实践的兴趣。
  2.4.5 强调团队协作,鼓励创新
  程序设计竞赛是以团队形式参赛的。每队3人,只能使用l台计算机,因此,队员必须具有团队协作的精神和能力,才能做到1+1+1≥3,竞赛也才能取得好成绩。
  另外在我们的实践教学体系中,实训项目和课程设计,要求通过团队协作完成,在设计题目和考核方式时,必须体现团队合作的因素。
  2.4.6 编写适应能力培养的实践指导教材
  为了进一步提高实践教学效果,课题组成员在调研国内其他院校课程建设举措以及多年来程序设计课程教学、大学生程序设计竞赛辅导的经验积累基础上,编写出版了实践指导教材《程序设计方法及在线实践指导》,该教材被评为2009年省重点教材。
  
  3 改革实施成效和结论
  
  程序设计类课程的改革,尤其是课程定位和目标的修正、课程教学体系的改革和优化、实践教学体系的改革、在线实践平台的构建、实践教学模式和课程考核方式的改革和创新,有助于引导学生以提高程序设计能力为目标,进行程序设计训练,提高程序设计类课程教学质量。
  程序设计类课程改革有效激发了学生学习程序设计的兴趣。大学生程序设计ACM协会是我校信息学院最活跃的大学生协会之一,他们定期举办讲座,将志趣相投的程序设计爱好者们聚在一个平台,协助学校组织承办学校大学生程序设计竞赛和信息学院ACM程序设计大赛,每届都大约有150名学生参加,有些甚至是一年级的学生。
  开放式的在线实践平台,使得学生无需受实验室、实验时间以及老师在不在场等因素的限制而自由进行编程训练;教师引导把关,由学生自己完成对平台的构建、维护、运行的模式,让学生觉得这是他们自己的平台,是程序爱好者的社区,极大地激发了学生的主动性、竞争性和创造性。
  通过改革,学生编程设计能力、综合实践能力和创新能力有了明显提高。在近5年的火学生程序设计竞赛中,我校作为理工科相对弱势的财经类院校与省内浙江大学、浙江工业大学等理工科类院校同台竞技,获得了可喜的成绩,其中一等奖1项,二等奖2项,三等奖18项,获奖学生中有大部分考入了浙江大学、复旦大学、上海财经大学等国内知名入学继续深造,其他所有学生在毕业时都能得到企业认可,顺利就业。
  
  
  (编辑:姚彦