以竞赛培养模式推动程序设计系列课程的实践教学改革

2012-04-29 13:18袁辉勇羊四清易叶青刘泽平
电脑知识与技术 2012年34期
关键词:实践教学教学改革

袁辉勇 羊四清 易叶青 刘泽平

(湖南人文科技学院计算机科学技术系,湖南娄底417000)

摘要:针对C语言程序设计、数据结构、算法分析与设计三门课程与程序设计竞赛所涉及知识密切相关的特点,将程序设计竞赛与这三门课程实践教学改革相结合,并在多年的课程教学中加以实践,取得了很好的效果。

关键词:教学改革;实践教学;程序设计竞赛

中图分类号:G642 文献标识码:A 文章编号:1009-3044(2012)34-8230-02

C语言程序设计、数据结构、算法分析与设计这三门课程是计算机学科的核心课程,也是实践性很强的专业课。在传统的教学中,C语言程序设计、数据结构、算法分析与设计三门课程的分开授课,课程知识没有整合,实践教学存在重叠内容、实践教学深度不够,理论教学与实践教学结合不够紧密,造成学生动手能力差。

大学生程序设计竞赛是近年来国内各大学越来越重视的学科竞赛,参加大学生程序设计竞赛能使学生将程序设计系列课程所学知识充分应用于竞赛中,将理论转化为实践,用实践验证及加强理论知识。

1具体改革措施

针对传统教学存在的问题,我校从2010年开始对这三门课程进行教学改革,理论教学改变了以往C语言程序设计、数据结构、算法分析与设计分开授课的模式,而是将这三门课程的知识进行整合,采用同一教师授课,做到了前导课、后续课的有机衔接,并重新制定了三门课程的教学计划。为深化理论教学、提高学生实践能力,考虑到大学生程序设计竞赛所涉及的很多知识与这三门课程紧密相关,我们依托湖南省大学生程序设计竞赛,将这三门课程的实践教学改革与程序设计竞赛紧密结合,并重新编写了实验指导书,要求学生在每个章节的理论教学后必须完成有针对性的上机实践,具体措施主要有以下几个方面。

1.1精心设计实践教学内容

实践内容的设计是实践教学改革的核心。我们以知识点为单元,结合这三门课程来设计实践教学内容。在C语言程序设计课程中,我们以C语言为主线,适当穿插数据结构中的相关内容,使C语言程序设计与数据结构两门课程有机地结合在一起,如将C语言程序设计中的数组和数据结构中的直接插入排序、冒泡排序、简单选择排序、顺序查找、折半查找放在一个知识单元中。在数据结构课程教学中,穿插了算法分析与设计的有关知识,如在讲述哈夫曼树和图的最小生成树时,穿插讲述了贪心算法,在讲述图的最短路径时介绍了动态规划算法。算法设计与分析课程主要内容包括算法效率分析基础、分治法、贪心法、动态规划、分支限界、回溯、近似算法、概率算法等常见的算法设计策略,也覆盖了排序、搜索、图论、几何、组合、数值计算等问题,我们将其中的排序、搜索和图论中的相关内容安排在数据结构单元中。

我们借鉴大学生程序设计竞赛题目规范、背景描述有趣和输入输出明确等特点,将训练题目描述成竞赛题的形式。以应用为主线、以方法与能力培养为出发点,精心设计了这三门课程的实践教学内容近300道训练题目,并上传到在线评测系统。为了激发学生的学习兴趣,在设计题目时,我们不仅考虑了题目内容的新颖性等,更重要的是要创造一种与现实应用紧密结合的环境,每道题目均提供一定规模的测试数据,以测试程序的正确性与效率。另外,考虑到学生水平的差异,在每个知识单元中设计了不同难度的题目。这些题目有些侧重提高动手能力、训练编程感觉,有些侧重算法设计、训练思维能力,有些就是国际国内各种程序设计比赛的原题。

教师根据教学进度在评测系统上布置作业,对于能力强的学生,在完成基本要求的基础上,再增加一些有难度的题目,并引导学生自主研究新的解决方法,激发学生的创新能力。学生除了完成教师布置的作业外,还可以根据自己的实际情况选择其它训练题目。

1.2采用在线评测系统提交作业

程序设计在线评测系统是一个程序设计练习和竞赛平台,可以提供大量的程序和算法设计题目。在线评测系统除了能用于程序设计竞赛外,还可以广泛用于辅助程序设计类课程的教学,为学生提供一个开放的、自主学习的实验环境。

学生通过我们开发的程序设计在线评测系统提交这三门课程的作业。评测系统可以实时评测学生提交的作业是否正确,对错误提交还提供相应的提示信息。学生可以根据提示信息对程序进行修改再提交,直到程序正确为止。教师通过分析学生提交的程序代码,可以及时掌握学生做题的数量、类型和教学中存在的问题,并将评测结果作为学生的平时成绩在网站上公布。通过公布成绩,促使作业成绩不理想的学生改进学习方法、加强平时训练,自觉利用在线评测系统预习和复习课程教学内容。通过在线评测系统提交作业,形成了良好的学习氛围,加强了师生之间、学生之间的交流,学生有了在课余时间自主进行本学科知识钻研的机会和环境。

1.3交流解题心得

学生可以使用在线评测系统中的论坛互相讨论、交流解题心得,找到很多志同道合的伙伴。基于在线评测的实践环节提供了仿真的任务环境和公正及时的评价,在激发学生学习兴趣、培养竞争意识和主动学习意识等方面起到了较好的推动作用。

1.4组织各种程序设计竞赛

程序设计竞赛具有开放性、综合性和评判客观性等特征,可以有效检验学生综合应用所学知识来分析和解决问题的能力,它不仅可以培养学生的创造力和团队合作精神,还能检测学生在压力下进行创新思维和实践动手能力。通过组织各种比赛,可以有效提高学生的程序设计能力、形成积极向上的自主学习氛围。

我们组织了年级、系级和校级等各种形式的程序设计竞赛。通过组织同年级相同课程的竞赛可以检验不同专业的学生对同一课程的掌握情况;系级竞赛是全系性的赛事,校级竞赛是全校性的赛事,不同专业、不同年级的学生均可参加。如果高年级的学生在竞赛中输给低年级学生,计算机专业的学生输给非计算机专业的学生,他们将会感到不光彩,因此系赛和校赛给计算机专业的学生带来了无形的压力,将促使他们在平时中投入更多的时间和精力。

1.5改革考核与评分标准

考试作为课程教学的一个重要环节,对学生的学习具有明显的导向作用。这三门课程原来的平时成绩主要来源于课后作业与出勤,这样的考核方式很难考察学生的实践能力,导致大部分学生只注重理论而忽略上机实践,很难有效提高学生的创新能力和实践能力。我们认为这三门课程的考核应着重考核学生的程序设计能力,而不是死记硬背一些基础知识。为此,我们对课程的考核进行了大胆改革,评分标准也作了修改,将评测系统中的评测结果作为学生平时成绩的主要依据,并提高了平时成绩在总评成绩中的比重,以此来引导学生认真对待上机实验。

2结束语

C语言程序设计、数据结构、算法分析与设计是计算机专业的核心课程。从近几年的改革实践来看,经过这三门课程的学习与实践训练,大部分学生能够在规定的时间内使用C语言、选择合适的数据结构和算法设计策略完成相应问题的求解。以计算机专业学生组成的学校程序设计代表队,也在最近三年的湖南省大学生程序设计竞赛中共获得了5个二等奖和3个三等奖。

参考文献:

[1]羊四清,易叶清.C语言程序设计[M].北京:中国水利水电出版社,2012.

[2]吴永辉,王建德.数据结构编程练习[M].北京:机械工业学出版社,2012.

[3]赵端阳.算法设计与分析[M].北京:清华大学出版社,2012.

猜你喜欢
实践教学教学改革
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
研究型学习在传热学实践教学中的应用
思想政治理论课实践教学研究述评
高职院校商务礼仪课程教学改革探索刍议
中职学校“生本课堂”的调查研究与实践
高校三维动画课程教学方法研究
基于人才培养的技工学校德育实效性研究
现代信息技术在高职数学教学改革中的应用研究
《数据库高级应用》教学创新方法研究