程序设计
教学改革与研究
发布时间: 2009-03-30   浏览次数: 2600

 

5年来,在软件学院领导臧斌宇教授和赵一鸣副教授的指导下,开展软件工程本科生的教学改革。经过众多老师的共同努力,以戴开宇老师为课程负责人的“程序设计”课程建设,不断跟踪软件工程领域,尤其是程序设计学科的最新发展,调研了国外重点大学的教学情况,借鉴了成功的经验,就程序设计教改提出了一系列行之有效的方案,并进行了实践。取得了很好的教学效果。在学生在URP系统的评价中,得到4.9几和4.8几的高分评价。
1、 程序设计(采用Java)课程理念的确定:该课程在许多大学的计算机和软件相关专业一般都开设了,基本上以C,Pascal,VB为程序设计语言进行讲授,也有部分采用了Java。这些学校开设“程序设计”课程的教学目的往往是培养学生能采用所讲授的语言能进行编程。经过多年的“程序设计”课程教学探索,以及借鉴国外著名大学同类课程的教学方法,在院领导的多次讨论和指导意见下,我们对课程进行了教学理念的定位:重要的是让学生掌握程序设计的理念,理解其作为一门和计算机交流的“语言”,如何让计算机实现我们需要的功能,而不是过于陷入某门计算机语言的编程细节中。通过“程序设计”课程的学习,学生应该可以很快上手学习一门新的程序设计语言。同时,逐步让他们了解软件工程专业,培养学习兴趣。通过课程负责人对美国排名前20学校程序设计课程的调研,确定采用Java程序设计语言作为课程的教学语言。

2、 课程教学方法的确定:程序设计(采用Java)课程的教学方法基本有三种:a、直接从面向对象教学入手,中间需要的过程式的教学内容夹杂其中; b、先由浅入深介绍一些过程式的内容,在一定基础上开始介绍面向对象概念;c、以一些GUI应用直接吸引学生,在其中介绍程序设计的相关知识。对于第一学期的新生,在学习和生活都处于从中学过度期来看,同时采用英文原版教材,避免给学生不适应带来的挫折感,反而打击了学生的积极性和兴趣来看,我们决定采用第2种方式。

3、 课程内容层次确定,以及教材的选定:我们将教授的内容可以分为三部分:a、计算机知识、程序设计基本概念了解,结构化程序设计介绍,如变量、表达式和语句等; b、从“方法”开始引入面向对象编程知识,介绍面向对象编程相关概念,包括封装、继承与多态等; c、涉及Java以及其API的实用程序设计部分:GUI,事件驱动编程,异常,输入输出等。这些知识具有很好的连贯性,也适合一年级学生循序渐进的学习。遵循第2条的教学方式,以及和国际教学方法接轨的指导思想,通过广泛调研和参加教学研讨会,最终选定机械工业出版社引入的国外原版教材,Y. Daniel Liang的《Java程序设计导论(英文影印版)》作为教材,该教材一度是美国大学采用最多的程序设计教材,由华裔作者,复旦校友所著,适合中国学生的风格和基础;替代了原来采用第3种教学方式的H.M.DEITEL/P.J.DEITEL的《JAVA HOW TO PROGRAM》。采用英文教材和英文课件,锻炼了学生的能力。

4、 重视实践环节的设计:“程序设计”是一门实践性很强的课程。每周在4课时教学外,还有2课时的LAB课时,学生在机房,在主讲教师和3名助教的督促和辅导下,完成一个上机试验。教师和助教设计每个星期进行的Lab内容,让学生及时对课程内容进行练习从而掌握;另外,一个学期还设计和布置两个Project,第一个Project涉及面向对象前面部分内容的学习,第二个Project涉及后面部分知识的学习。为了避免重复而给学生带来的过重负担,很好的将一个最终程序划分为两个project,第二个Project可以重用到第一个project的成果。为了引发学生的学习兴趣,project设计生动有趣,分别设计了象棋打谱程序;贪吃蛇,连连看;24点;十字绣等主题。寓教于乐,激发了学生的兴趣,提高了动手能力,增强了自信心和专业认同感。

5、 生动有趣的教学和实践平台的引入:在教学过程中,为了激发学生的学习兴趣,增加直观感受,通过搜索资料和调研,选用了许多的资料来增强教学效果。比如介绍汉诺塔和排序算法时,选用了多媒体的演示程序,演示整个过程;在介绍面向对象部分内容,采用了开源的Robocode平台,该平台是2001年7月在IBM 的Web alphaWorks上发布的坦克机器人战斗仿真引擎,由程序员事先写好的算法来指挥坦克,具有很好的图形界面。通过引导学生学习编写自己的机器人,熟悉API,面向对象的组织和编程;在LAB中通过组织学生自行设计的“机器人大赛”,脱离了枯燥的纯粹课堂语言讲授,获得了更深切的体会。在实验环节过程中,更是积极讨论,非常兴奋。另外,为学生申请了国外著名的CODELAB平台使用权,可以在系统定下的试验目标下实践,并由系统自动评价和指出问题所在。让学生有很好的自我联系的平台。

6、 注重教学师生互动,通过各种方式建立相应的平台和机制:在授课中,通过提问和讨论,让学生相互之间进行课堂辩论,其他同学可以选择支持谁的观点并给出自己的理由,这种新颖的方式极大的调动了学生的参与感和热情;通过事先布置一些课本中的综合性实例和课程内容相关的外延内容给一些学习积极的同学,让他们上讲台来介绍,并回答下面同学提问,以优带劣,并且培养了学生的资料搜索能力和演讲能力;每届学生都建立了QQ群,教师和助教都加入,鼓励网络交流和答疑;特别值得一提的是,建立了论坛,鼓励学生提问,回答,教师和助教也作为回答和点评者参与。网址是:http://10.132.10.20/jforum。开设以来,得到了学生的认同和积极参与。助教也在上面征求同学对LAB和project设计的意见,并且负责回答其他同学回答不上来的问题。另外,建立了课程FTP网站,可以通过学院FTP服务器下载课件与上传作业,LAB和project。

7、 课堂案例教学:除开以上一些平台的引入,在介绍一些教难理解的概念和方法时,用心创作相关素材和程序实例,优化课件,通过类比生活中大家熟悉的概念,进行饶有趣味和深入浅出的实例教学。比如在介绍大一同学较难理解的面向对象的特征,继承,多态等,以及继承程序的初始化过程,分别自创了综合实例,“恐龙的诞生”,“黑猫白猫,会抓老鼠就是好猫”等实例,课堂气氛活跃,给学生的印象深刻。用心的教学,让学生能在快乐中培养兴趣,发挥潜力,学习知识。

8、 结合学生实际情况,因材施教,并且帮助了解软件专业:在进入大学学习之前,许多学生基本上对程序设计的概念为零,同时对软件工程专业了解很少,今后要学什么,以及学好后自己可以做什么,都很迷茫。学生之间存在着一些差异,一部分学生在中学里面学过Basic,甚至有部分学生参加了程序设计竞赛,了解Pascal,当然这部分学生很少;另外一部分学生则相关知识为空白,甚至有学生没有操作过计算机。大部分学生是操作过计算机,但是对程序设计相关知识基本为空白。教学宗旨是激发学生的学习激情,照顾绝大部分同学的平均水平。并且通过老师,组织和建立了互帮机制,使得学生建立互相帮助,互相讨论的良好学习氛围。也让许多第一次出远门读书的学生感受到温暖。在教学中,围绕课程内容,介绍软件工程相关课程的概念,帮助大家了解软件工程是学什么的;同时,结合实际生活中涉及的计算机技术,来了解课程以及软件工程和生活中一些应用的关系,让学生感受到专业的实用性。还会介绍一些较为前沿的技术来引发兴趣,扩大视野。

9、 注重对通识教育和综合素质的培养:面对80后,90后的新生,作为第一学期课程,是教师和学生交流的第一场所。会介绍一些和学习、生活、做人方面的道理和知识。结合课程内容,会融入一些通识教育的元素。比如每章的PPT首页,都会结合技术主题,放一些相关的歌词,箴言等,并由此引出课程内容。既帮助学生了解人文方面知识,也加深了对计算机知识学习的印象。
 
教学研究成果:
发表教学论文:
‘程序设计’课程理念探讨以及采用Robocode的案例教学”.戴开宇,《计算机教育》. 2008.5
“面向对象技术的Java C++‘双语’教学”.徐迎晓,《计算机教育》. 2006.8
    相关教材:
十一五’国家级规划教材《Java语法及网络应用设计》,徐迎晓,戴开宇
获得教学奖励:
1、2006年度戴开宇因为教学获得好评考核为优。
2、2007年戴开宇获得复旦大学本科教学贡献奖
3、2007年度陈荣华因为教学获得好评考核为优。