当前位置:文档之家› “程序设计基础”精品课程建设

“程序设计基础”精品课程建设

“程序设计基础”精品课程建设摘要:从课程体系、教学方法和手段、实践教学、考核评价、实践创新能力培养等几个方面的改革实践阐述“程序设计基础”精品课程建设方案。

关键词:程序设计基础;精品课程;教学改革;实践“程序设计基础”是计算机科学与技术专业的主干专业基础课,是所有后续软件专业课的基础和支撑,在计算机整个课程体系中起着举足轻重的作用。

本课程是一门实践性很强的学科基础课,不仅要学习基本理论知识,更要注重上机实践,通过上机实践掌握高级语言的特征,巩固所学的理论知识。

“程序设计基础”经过多年的教改实践,取得了令人满意的成绩,2004年被评为校级精品课程,2005年入选首批自治区级精品课程[1-2]。

本课程开设以来,课程教学团队一直致力于教学改革,通过多年的探索和实践,确立了课程建设的指导思想—既要培养学生解决问题(算法与程序设计)的能力,又能比较熟练地掌握一种程序设计语言(C/C++)。

本课程以程序设计方法为纲,较为系统全面地介绍了程序设计发展和程序设计的基本方法,其目的是让学生掌握程序设计的基本理论和基本方法。

在讲授过程中,教师特别注意介绍有关独立于任何特定编程语言的算法概念和结构,强化训练程序设计的经验和相关技术,把重点放在程序设计实践及培养学生分析问题和解决问题的能力训练方面。

1课程建设方案1.1完善程序设计类课程的课程体系程序设计基础包含两方面教学内容:程序设计的基本方法和程序设计语言入门。

因此,教师在课程讲授中,既要培养学生解决问题(算法与程序设计)的能力,又使他们能比较熟练地掌握一种程序设计语言(C/C++)。

本课程以程序设计方法为纲,较为系统全面地介绍了程序设计,其目的是让学生掌握程序设计的基本理论和基本方法。

同时,以C/C++作为典型的程序设计语言,介绍结构化程序设计和面向对象程序设计两种编程思想。

教师在讲授过程中,特别注意介绍有关独立于任何特定编程语言的算法概念和结构,强化训练程序设计的经验和相关技术,把重点放在程序设计实践方面,以培养学生分析问题和解决问题的能力方面。

程序设计基础课程的学习效果直接关系到许多后续课程的学习,在课程改革与建设的过程中不但要关注这一门课程,还要考虑到与其关联的许多课程,甚至覆盖到与其有内在联系的整个课程群。

所以,软件类课程的发展方向必然是从单一走向系列,进一步建立完善的课程体系,发挥其整体优势。

笔者以“程序设计”为主线,从程序设计基础、数据结构、可视化编程、网络编程等相关的课程入手,进行课程体系改革,逐步完善程序设计类课程体系。

1.2改革教学方法和教学手段我们围绕程序设计的关键技术,采用“精讲多练”的教学方法,并辅以多种媒体进行教学,将PowerPoint课件与专业教学软件相结合,大大降低教学难度。

此外,我们在教学中使用网络教学平台,通过平台提供教学大纲、实验大纲、课件、学生参考书和例程源代码等教学资源,学生可以随时下载教学资源、软件工具以及辅导材料等,了解课程学习的各项信息,提交作业,查看作业情况和成绩等。

课程网络平台还提供了自测题和留言板,方便师生课外的交流与互动。

1.3加强实践教学环节计算机科学与技术专业不同于传统意义上的理学各专业,计算机技术更接近于工程技术科学,把解决实际问题放在首位。

因此,对我国大多数学校的计算机科学与技术专业人才培养目标,应更加注重培养学生的动手实践能力[3]。

为了加强学生的动手实践能力,我们在以往的课程实验的基础上,又增加了课程设计,以便更好地加强实践教学环节。

课程实验的侧重点是将讲授的原理与实际应用相结合,使学生将书本上学到的知识运用于解决实际问题,培养他们的动手实践能力,能够活学活用书本知识,从而深化理解和灵活掌握教学内容。

而课程设计的工作量则大得多,相当于是对软件综合设计的一次训练,它的整个过程完全等同于软件工程的一次完整训练,包括问题分析、总体设计、详细设计、编码、测试等阶段,这其中还涉及到用户界面的设计、进行多人合作、分析程序的效率、软件工作规范和科学作风的培养与训练,为学生学习后续的软件类课程、理解和掌握程序设计相关技术、编写大型程序打下良好的基础。

1.4建立新的考核评价方法为了体现程序设计基础这门课程的工程实践性,我们以机试取代笔试作为考核评价方法。

早期,教师需要对机试的结果进行事后检查,不但工作量相当大、效率低,而且人为因素较多,造成成绩评定不够客观、公平。

此外,在程序设计课程的教学中还存在一个不能回避的问题,即使在一些学风良好的大学,在上机考试或平时作业中互相抄袭程序代码的现象也较为普遍[4]。

当一个程序被几个或者十几个同学抄袭,要发现抄袭,进而要证明谁是原创,谁是抄袭,都比较困难,十分耗费精力。

因此,通过多年的教学实践,我们发现,考核评价方法既要保证能够考查出学生的实际学习水平(编程能力),又要对那些考试抄袭的学生进行认定和制裁,因此,我们采用了在线评测与抄袭检测两种方法。

1) 在线评测。

在线评测[5](OnlineJudge,简称OJ)是个基于WWW的服务器端软件系统,其主要功能包括:用户注册和管理、题库管理、在线提交和实时评测、网上考试、讨论、邮件服务等。

该服务器上有一个丰富的题库,题目包括ACM/ICPC(ACM 国际大学生程序设计竞赛)所公布的赛题和我院师生自创的与教学内容紧密结合的问题。

将ACM/ICPC的训练思想引入程序设计的教学,鼓励同学们多动手、多动脑、多实践,大有裨益。

我们将OJ上公布的题目作为平时的实验与作业题,以往学生们完成的上机作业,由于缺乏OJ这样的程序代码评测工具,老师人工评测时只能保证学生的程序没有编译错误、能够运行、运行结果大致正确即可,而且人工评测的效率可想而知。

而OJ这种高效、客观的评测工具不仅能够客观、公正地评测学生的程序,而且大大减轻了老师的工作量。

此外,在OJ上做题,学生们会有成就感,看到自己的排名在解决一个又一个问题的过程中在不断上升时,他们就会主动地去完成更多、更难的题目,这是多么自然和愉快的学习过程。

2) 抄袭检测。

检测抄袭就是检测一个程序是否通过对另一个程序的修改而来的。

对提交的程序代码进行相似性检测,能够对这一批程序中的所有程序进行两两比较,找出程序对之间可能存在的相似性代码,并给出两个程序之间相似度的值。

通常,相似度越高程序之间进行抄袭的可能性越大。

但是,毕竟抄袭是一件严肃的事情,所以在认定抄袭的过程中不能只看抄袭检测的结果,这个认定的过程一般分为以下3个阶段[6]进行。

(1) 收集阶段。

我们先将OJ上的题目布置给学生,要求他们在规定的时间内完成。

然后把学生提交的同一题目的代码放在同一文件夹中,采用抄袭检测的工具进行检测。

(2) 分析阶段。

抄袭检测工具对学生的程序代码进行两两比较,将雷同的部分标注出来,并且给出每对程序的相似度,从而为抄袭认定提供了部分依据。

(3) 确认阶段。

对存在抄袭可能的学生进行确认,进一步核实是否真的属于抄袭。

这个过程其实非常容易,只要询问一下其结题思路或结题过程,或者查看一下其平时练习情况即可得出结论。

这种将在线评测与抄袭检测相结合的方法,不仅对于程序设计基础这一门课程有效,其实可以推广到整个程序设计类课程当中。

这样做既能加强学生的动手实践能力,又能考查出学生在编程方面的真实水平,还可以对抄袭的学生起到一定的震慑作用,减少抄袭现象的发生,同时大大减轻了老师的工作量。

1.5注重学生实践创新能力的培养我们在教学模式、教学方法和教学手段改革等方面进行了大胆探索,使学生的实践创新能力得到了很好地锻炼[7]。

1) 改革了各种实验指标。

解决了教师设计多、学生主动创新少,大型实验与课程设计限定条件多、学生自主发挥独立思维余地少的问题。

2) 探索符合国情的大学生培养模式。

推动开辟第二课堂,使学生尽早接触工程实际问题,增强创新意识与能力。

3) 改善程序设计类、算法类课程的实践教学模式。

采用在线评测系统,进行经典算法的验证型实验和小规模设计型实验训练;设计与学科前沿研究相结合的大项目进行设计型和综合型实践训练;作业题和实习题应融合当前最新理论和技术,使其具有前瞻性。

4) 推进大学生科研训练和学科竞赛。

2006年我们首次将ACM/ICPC国际大学生程序设计竞赛引入到内蒙古自治区的大学内,通过学校、学生和社会的积极参与,使我校大学生研究性、探索性学习得到全面展开。

2课程建设的基本理念课程改革与建设是人才培养活动中的一项基础性、长期性工作,决定了人才的培养质量。

在程序设计基础精品课程建设中,我们总结了以下基本理念。

1) 以点带面,完善课程体系建设。

在教学改革与课程建设中,我们以程序设计基础课程作为试点,由于程序设计课程并不是孤立的某门课程,而是一个整体,该课程的学习效果直接关系到许多后续课程的学习。

因此,在课程改革与建设的过程中不但要关注这一门课程,还要考虑到与其关联的许多课程,甚至覆盖到与其有内在联系的整个课程群。

所以,软件类课程的发展方向必然是从单一走向系列,应该建立完善的课程体系,发挥其整体优势。

因此,我们以“程序设计”为主线,对与程序设计相关的一系列课程进行课程体系方面的改革,从程序设计基础、数据结构、可视化编程、网络编程等相关的课程入手,逐步完善程序设计类课程的课程体系。

2) 教学研究与科学研究相结合,运用技术手段解决教学问题。

在教学实践的过程中,我们一方面将在线评测与抄袭检测相结合进行程序设计基础课程的考核评价;另一方面,从教学工作中抽取出部分具有科研价值的问题进行科学研究。

我们先后针对程序代码的在线评测和抄袭检测问题进行深入研究,并获得了多个项目的资助。

因此,我们的教师队伍既是教学团队又是科研团队,不仅积累了大量程序设计类课程教学经验,并通过硕士生培养,形成了一支稳定的科研队伍。

3) 赛课结合,以赛促教,以赛促学。

我们把程序设计大赛的许多理念引入相关课程的教学当中,对课程的教学进行了有益的改革与调整。

将课程的实验模式从过去的验证型向综合设计方向转变;将学生进行分类教学,更好地发现和培养人才,实现因材施教;为学校非计算机专业但又酷爱编程的学生们开设了算法与程序设计这类选修课,使得更多的学生得到这方面的培养和训练。

竞赛的影响经几年来的积淀,无疑从某些侧面触动了原有的专业课程教学体系,对计算机专业课程实践教学体系、内容、方式的改革以及实验室建设都起着推动作用。

3结语通过多年的教学实践,我们针对程序设计基础精品课程进行了教学改革和课程建设,包括课程体系、教学方法和手段、实践教学、考核评价、实践创新能力培养等一整套课程改革与建设方案。

程序设计基础既是计算机专业重要的基础课程,同时也是各类非计算机专业的公共课程之一,该课程的教学成果经过专业课和公共课的教学实践检验,符合教学实际,影响面大,开创性强,受益面广,具有一定的示范性、先进性与推广意义和应用价值。

相关主题