翁 伟 吴克寿 吴 芸 林仙丽
摘要:本文在分析计算机本科专业程序设计类课程特点的基础上,从培养应用型、创新型人才的角度,研究该类课程的建设原则,提出了程序设计课程群的课程体系、实践体系建设方案和措施,并取得了很好的实践效果。
关键词:程序设计;课程;课程群
中图分类号:G642 文献标识码:B
1概述
课程群是几门内容密切相关,前后承接连贯一致的课程集合,一般属于同一学科甚至同一专业。深入研究专业课程体系,探索课程基本内容以及课程之间的衔接关系,配备合理师资结构进行课程群建设,易于打通课程知识脉络,避免课程内容重复或者前后脱节,使得前后连贯,内容融合,进而获得整体优势。课程群之间的课程相互配合,既能不断加深拓展内在关系,又能起到举一反三,相互促进的作用。我国高校进行课程群的研究实践已有十余年的历史,对于课程群的内涵、建设和评审均有很多探讨,取得了一系列的成果,一定程度上解决了单门课程建设带来的问题。近一年来,厦门理工学院计算机科学与技术系紧抓应用型、创新型办学方向,在计算机科学与技术和网络工程两个专业中进行了课程群的建设,取得了很好的效果。本文就程序设计课程群建设的探索与实践进行探讨和总结。
程序设计课程内容丰富,语法繁多,技术复杂,不反复实践是很难掌握的。另外,VC++、VS2008等程序开发工具,不投入大量时间去摸索,也不可能熟练运用于软件开发。在教学实践中我们发现,随着课程的深入,很多同学慢慢放弃了学习程序设计。这几年IT行业特别是软件开发相关企业深感招人难,不是学生数量不够多,而是他们认为毕业生不好用。事实上,这是普遍碰到的难题,师生如何“教”与“学”才能破解这个难题?从教学内容上看,教学中存在内容庞杂不成体系、课程之间脱节的问题,导致部分学生学习的时候逐渐失去信心和兴趣。因此相关课程必须进行组合与统筹安排,理清知识的层次,在教学中做到知识点前后连贯,循序渐进,内容丰富而不杂乱。在逐步提高学生动手能力的同时提高学生理解力,触类旁通,进而培养创新型人才。
本文将从应用型、创新型人才培养的角度出发,首先介绍程序设计课程群建设的基本原则,然后介绍程序设计课程体系以及课程群的建设措施,实际教学过程取得的成绩证明该课程群建设是成功的。
2程序设计课程群建设的基本原则
课程群建设是专业建设的一部分,应用型人才培养方案应瞄准专业定位,与行业现状和发展相适用,才能明确知识点、课程和课程群的具体内容。同时,课程群建设应当注重课程的知识重组,知识融合,是对单独课程的教学大纲、实验大纲等教学内容的重新设计。
针对应用型人才的培养目标,程序设计课程群应当以“程序设计”为核心,注重实践与方法,走“实践——抽象——设计”的路子,尊重客观的学习规律,注重学习兴趣的培养,在不断实践的过程中体会程序设计的方法,加深对程序设计理论的理解。在教学内容的设置上,首先应当以验证、模仿的内容为主,通过不断的实践,体会程序设计的方法,获得学习的乐趣。具备了一定的经验和方法后,重点放在对问题的抽象和设计上,要求能够针对具体的问题,抽象出程序设计的相关要素,设计出解决的方法,回归实践,采用主流的开发工具和开发平台去验证。在学习过程中,将“自己的设计”和“成熟的技术”相结合,使得学习者不断加深对程序设计的认识。熟练掌握程序设计的“抽象”和“设计”后,程序设计理论的学习就顺理成章了。
不难看出,程序设计学习过程的重点部分就是“抽象”和“设计”。以面向对象程序设计技术为重点,不断学习用面向对象的思想来抽象待解决的问题,将其转换成“类”的概念,设计对象的属性和行为,以及对象之间的联系。采用成熟的技术实现所设计的内容,是程序设计学习的重点。
实现设计的技术有很多,逐一介绍不但效果不好,显然也是不现实的。采用“触类旁通”的教学思路,侧重熟练掌握一种工具和技术,而对其他技术点到为止,不失为一种好的教学办法。
常用的程序设计教学语言有很多,层次也不一样,在课程群建设中应该做到内容连贯统一,避免简单重复,讲究课程之间内容的融合、加深,也要兼顾实现技术由浅显入深,相互参照。因此在课程的选择上不宜过多,以4~5门为宜。理论和实践(包括教师的实验指导)课时比例是另一个重要的问题,在实践中我们发现1∶2左右比较恰当。对于不同课程之间内容相同或相似部分的处理方式最能体现课程群建设的优势。有些相同的概念都要介绍,并且要做到相互促进,使得概念更加明确,而有些类似的概念就需要删繁就简。
从教学目标来说,程序设计课程群教学是让学生熟练掌握一门编程语言,熟悉相关开发方法和工具,深刻理解面向对象思想,熟悉面向对象程序设计技术。
3程序设计课程群的课程体系
程序设计系列课程旨在培养学生面向对象程序设计的“抽象”和“设计”能力,积累丰富的编程经验,熟悉相关编程语言、工具和平台,做到基本功扎实,实践能力强,触类旁通,善于综合运用所学的知识积极主动解决问题。在课程设计上,尊重学习规律,由实践入手,环环相扣,具体设置如表1所示。
目前,多数高校都把C语言作为程序设计的入门语言,但是对于后续课程的开设却有不同的见解。如果着重面向对象理论介绍,普遍开设了面向对象程序设计这门课程,这当中可选择的语言有C++、Java或C#等,虽然思想相同,但技术细节相差比较大。另外,也可以开设VB、Delphi和ASP等语言,因其形象直观,便于理解。从贯彻“抽象”和“设计”这个特征出发,我们选择C++语言。C++语言与C语言和数据结构有天然的联系,符合学习由浅入深、逐步推进、举一反三的特点。例如,数据结构中顺序表、链表等重要的概念,在学习C++模板的时候讲述了其实现技术,这对学习来说起到了“温故而知新”的作用。再如C语言中的字符串概念,在C++中出现了字符串类,实现的功能更为完备,实现方式更加让人易于接受,更有利于学生加深理解的是,学生自己可以实现一个字符串类。另外,对于重复的知识点,一般介绍功能较为完备的课程,比如一般C语言我们不介绍文件操作,而是让学生自学,到了C++中,再介绍C++中的文件操作,这样就删除了重复的内容。
为了进一步体现应用性的办学定位,结合当今行业的现状,我们认为有必要让学生在学校就接触和熟悉B/S结构程序设计,所以开设了相应的“Web程序设计”课程。当然,在培养计划中,“高级语言程序设计”、“数据结构”和“面向对象程序设计”作为专业必修课,而“软件开发平台”和“Web程序设计”可以作为专业限选课或专业任选课,注重讲述流行的编程技术、框架及其开发平台。毕竟,大型程序的开发需要软件工程方法,不借助好的开发平台,不仅难于设计,更难于实现。长期轻视应用技术类课程的教学,也是学生毕业后难以快速融入开发工作的原因。
4程序设计课程群实践体系
程序设计类课程实践性较强,为了强化学生的动手能力,通过实践体会理论知识,在教学安排中,理论课和实践课的内容和课时要合理设计。实践课一般分为课内实验课和课程设计,具体课时安排如表2所示。
课程群减少了实验安排的随意性和重复性。从内容上来看,“网页设计”的实验课注重界面效果;“高级语言程序设计”注重基本的语法知识和常用的算法;“数据结构”注重结构和算法,以及不同结构的特点;“面向对象程序设计”注重设计和实现;软件开发平台注重各类具体实现技术。具体实验内容如下:
(1) 高级语言程序设计:运行环境、数据类型、运算符和表达式、顺序程序设计、选择程序设计、循环程序设计、数组、函数、指针、结构体和链表、文件。
(2) 数据结构:顺序表操作、链表的操作、栈和队列、二叉树、图结构、查找和排序。
(3) 面向对象程序设计:熟悉IDE编程、流程控制语句、函数的应用、类与对象的实践、数组与指针、模板、动态内存分配、继承与派生、文件处理、异常处理。
(4) Web程序设计:Dreamweaver网页设计工具的使用、开发JSP(语法基础、内建对象)、Java Servlets 、JavaBeans、Java数据库编程技术、JSP综合应用实例等。
(5) 软件开发平台:Structs、Hibernate、Spring、Ajax、JSP、EJB、XML、WebServices等。
在内容安排上,课内实验课紧跟理论课程,而课程设计则一般学期中公布题目,期末完成,设计需要综合课程的内容,并且有一定的难度,需要学生能动地设计实现,一般需要查阅课外知识,培养学生的自学能力和创新能力。为了做到课程之间的衔接,课程设计的题目需经过课程群内任课教师的讨论通过。各门课程的课程设计各有所偏重,目前的安排情况如下:
高级语言程序设计:管理系统的功能分解,函数的设计以及指针结构体等的运用,典型算法的实现,注重语法和基本点算法。
数据结构:具体问题的数据结构设计与具体语言实现,注重各种结构的联系和区别以及灵活运用。
面向对象程序设计:具体问题抽象为类与对象的设计,继承、重载、多态等概念的运用,MFC平台的自学与运用,注重“类与对象”的抽象和设计。
软件开发平台:界面设计,B/S程序设计,网络程序设计等,注重各种技术的学习和运用。
5程序设计课程群的建设措施
课程群建设是个逐步探索,不断推进的过程,需要一系列的保障措施。下面主要讨论组织建设、教师培训、教材建设、教学内容建设和教研教改等方面。
组织建设方面,由课程主讲教师形成课程组,做到学历、职称和年龄的合理搭配,经验丰富的教师与青年教师形成帮扶关系。课程组设组长一名,负责整个课程群的建设和规划,以及日常会议的组织。系部出台相关指导性政策,并给与相应的经费支持。
在教师培训方面,“内培”与“外引”相结合,所谓内培,就是相互听课,取长补短,有计划地举行教研会议,就某个主题讨论,相互促进;鼓励主讲教师参与校外培训,包括去公司实习等。同时,注重引进本学科内有实际项目经验的高层次人才,补充教师队伍。
在教材建设方面,对每门课程制定长远的规划,不断总结教学经验,认真修订教学大纲和实验大纲,合理设计每一个实验题目和课程设计题目。对于有一定积累的课程,可以走先编写实验指导书,再出教材的路子。
在教学内容方面,程序设计课程的教学应当与应用技术的发展和行业的现状和发展结合起来,技术是不断革新变换的,因此程序设计课程群的课程和具体教学内容也需要不断地调整。当然,基本的概念、思想和理论有不变性,所以也应当注意变化的“度”。一味的追求变化,可能会丢失本质的内容,降低学生的理解能力和创新能力。我们的做法是有计划地组织教师参与相关的教研会议和课程培训,深入相关单位、部门和公司了解行业运用和对我们人才培养的期待,结合自身的定位调整教学内容。另外,与兄弟院校多交流也是一个积极的办法。
在教研教改方面,鼓励课程群内的教师积极申请相关的课程,包括精品课程、教研教改课题以及教学辅助设施建设(如教学网站、题库的建设)。
6结语
实施课程群建设一年来,我院形成了相对稳定的教师队伍,教学内容更加合理紧凑,教学大纲、实验大纲、实验指导书、教案等教学文档比较齐全。另外,总结了以往的教学经验和成果,我们的教师主编了相关的教材。长期坚持的教研教改活动也取得了效果,部分年轻教师的教学水平有所提高,在学校的教学比赛中获奖。学生学习目的更加明确,积极性高了,成绩比以往普遍好转。学生毕业设计中涉及到程序设计部分的课题质量也较以往有所提高,并且能热情参与各类学科竞赛。一系列的成果激励我们在今后的建设中,要进一步研究教学内容,凝炼办学特色,争取更多的教学成果,在教材建设、精品课程建设等方面取得更大的成绩。
参考文献:
[1] 王嘉才,杨式毅,霍雅玲,等. 课群及其质量检查评估指标体系的研究[J]. 高等工程教育研究,1999(S1):71-73.
[2] 李慧仙. 高校课程群三论[J]. 煤炭高等教育,2006,24(4):113-115.
[3] 郭必裕. 对高校课程群建设中课程内容融合与分解的探讨[J]. 现代教育科学,2005(2):66-68.
[4] 徐凤生,李天志,李海军. 计算机科学与技术专业课程群建设探析[J]. 福建电脑,2007(2):197-198.
[5] 陈道蓄. 计算机学科发展与专业规范[C]//大学计算机基础课程报告论坛程序委员会. 大学计算机基础课程报告论坛论文集,北京:高等教育出版社,2005:18-21.