由ACM/ICPC探索农业院校程序设计类课程教学改革

发布时间:2022-03-21 09:38:15   来源:作文大全    点击:   
字号:

摘要:针对农业院校程序设计类课程教学存在的问题,在分析ACM/ICPC竞赛模式特点的基础上,探讨基于ACM/ICPC的程序设计类课程的教学方法、教学手段和考核机制等改革,并提出具体措施,在实际应用中取得了一定成效。

关键词:ACM;实践教学;程序设计

中图分类号:TP312.1-4 文献标识码:A文章编号:1007-9599 (2011) 09-0000-02

By The ACM/ICPC Programming Class to Explore Agricultural Colleges Teaching Reform

Zhang Ying,Wang Yi,Yao Juan,Jin Xing,Xiang Jinhai

(Huazhong Agricultural University Department of Computer Science,Wuhan430070,China)

Abstract:The agricultural colleges teaching courses in program design problems in the analysis of ACM/ICPC contest model characteristics,based on the study based on ACM/ICPC programming courses teaching methods,teaching methods and assessment mechanisms for reform,and propose concrete measures in practical applications and achieved certain results.

Keywords:ACM;Practice teaching;Programming

一、ACM/ICPC简介

ACM国际大学生程序设计竞赛ACM/ICPC(ACM International Collegiate Programming Contest是由国际计算机界历史悠久、颇具权威性的组织ACM学会(Association for Computing Machinery)主办,是世界公认的规模最大、水平最高的国际大学生程序设竞赛,其目的旨在使大学生运用计算机程序设计理论(包括数学素养、程序设汁语言、数据结构、算法分析等)来充分展示学生分析问题和解决问题的能力。ACM/ICPC被看作在校大学生的一场奥林匹克竞赛,成为参赛选手展示计算机才华的舞台,是著名大学计算机教育成果的直接体现[1]。

纵观多年ACM/ICPC竞赛,和农业院系程序设计类课程的教学相比,有如下几大特点[2]:

(一)ACM/ICPC题目涉及知识面比较广,来源于生活中实际问题,并融入了程序设计、数据结构、算法分析与设计、人工智能、离散数学等多学科领域的理论和方法。知识面涵盖了所有的程序设计类课程,而且与程序设计类课程的常规例题相比,学生更有兴趣,学习自主性更容易调动。

(二)每个参赛队伍由3人组成,比赛时每个队只分配一台电脑。小组成员需要明确知道自己和队友的专业特长,才能对问题合理分工,提高解题效率。除此之外对算法思路的良好描述、同一问题不同解决方案的合理论证等都极大地考验选手的团队协作精神。普通的程序设计课程实验均由学生独立完成,较少有相互的探讨和分工协作。

(三)ACM/ICPC采用5小时全封闭竞赛,以各队所解出问题的多少和总用时的长短排名。采用在线测评系统进行评判,体现了比赛的公正公平;对提交程序的要求不仅包括正确性,还包括对运行时间、占用内存和输入输出格式的限制,考查选手对算法的灵活运用。普通的程序设计类课程考核方式为笔试,无法正确检验学生实际动手能力的强弱,而实验考核也无提交时间限制,公正性、真实性无从考量。

ACM/ICPC竞赛设定了一套合理的竞赛排名、挑战规则,提供了一个学习和使用程序设计语言和算法的完整实践模式,将这种模式运用到程序设计课程的教学中必将取得显著效果。

二、基于ACM/ICPC的程序设计类课程改革

(一)农业院校程序设计类课程教学面临的问题

华中农业大学理学院计算机科学系面向全校农科、工科、理科、文科、生科等专业共开设了三门程序设计类的公共必修课:C++、VB.NET、数据库技术。面向计算机科学与技术、信息与计算科学、信息管理与信息系统、地理信息系统等专业开设了C++、数据结构、算法分析等程序设计类课程。由于此类课程本身涉及知识点多、逻辑性强、抽象性高、理解难度大,农业院校学生学习起来比较吃力,大部分学生动手实践能力不强,用所学知识解决实际问题的能力较弱。特别是在从事大型软件工程时,灵活应用相应算法能力比较欠缺的矛盾突出,成为当前亟需解决的问题。在一些农科专业里,学生更是提不起学习兴趣,单纯为了应付考试而学习。而计算机相关专业的教学过程与工程项目衔接不够紧密,导致学生动手实践能力弱,难以将实验功底转化为从业能力。

(二)教学方法的改革

1.与专业结合实现学科交叉

计算机科学非常强调理论联系实际,面对枯燥的理论,学生刚开始可能还比较感兴趣,但时间一长,热情则递减。程序设计公共课教师可根据所教授专业的专业特点和学生敏感的专业话题入手,开篇即给出一个实际应用的问题,带着问题教学,用一根红线贯穿教学的始终。

例如:针对生物学专业教师可以给出分子生物学中基因搜索匹配问题,引发学生兴趣。接下来在后续教学中以此为引例,循序渐进的介绍数组、串、类、简单查找等。当解决了简单搜索的编程实现以后,教师进一步针对如何存储数据量庞大的基因信息、如何提高检索速度等提问,激发学生进一步思考,进而介绍快速排序、文件存储等知识点。再如:针对园林专业教师可提出如何建立植物信息库的问题;针对工程专业教师可提出计算几何算法在机械设计制图中的应用等问题。通过对教材内容的扩展,让学生切实感受到在加强理论学习的同时,还须与实际应用联系起来,这样学生学起来更有兴趣,教学效果也会提升不少。

而如何与专业挂钩,如果发现计算机编程在专业上应用的合适的切入点,还需要计算机系教师和专业教师进一步的沟通交流。我们按计算机系教师的科研方向将教师分组到每个对口的专业,实现学科之间的交叉,以更好的完成教学。

2.以能力目标为导向的项目教学

改变传统的教学模式,从以培养知识型的人才向培养创新型、能力型的人才转变[3]。例如在传统的教学中讲授数组这一章时,一般是先介绍数组的定义、数组的初始化、数组的引用等知识点,然后通过一个简单的例题来强化数组的应用。而项目教学是以学生为主体,诱导学生兴趣,注重学生专业能力、学习能力以及综合应用能力培养的一种教学过程。改革后这一章的教学可采用一个实例“某等级烤烟烟叶的叶长最值”导入,然后制定项目计划,也就是具体完成这个项目需要包含的功能模块。接下来分解项目,模块化后得到模块1:录入烟叶的叶长数据;模块2:叶长的排序;模块3:输出最长和最短的叶长。然后进一步细化模块,将教学内容融入到模块中。比如,提问学生思考大量的叶长数据需要录入,用什么数据类型来存储呢?要定义多少个double型的变量呢?自然而然的引入数组的概念。最后要求叶长最值,进而引入排序的方法。教师可现场编写程序代码,具体的实现此项目计划。

针对具体章节知识点的讲授,如上可采用一些简单项目实施某些小功能。在课程的通篇考虑中,可结合专业给出具体的实训大项目,把每个章节的知识点贯穿到这个大项目的模块中去。一方面,学生学习目标明确,完成模块任务后即可体验到学习的乐趣,学生也获取一种成就感。另一方面,学生要完成一个项目,必须掌握项目中包含的理论知识与操作技能,学生知道该学什么,怎样学,由被动吸收转变为主动参与,提高了学生的学习能力。

3.分层次的实验教学

传统的实验课内容是给出固定题目让学生完成,千篇一律的题目对基础知识掌握较好的学生起不到提高作用,同时又打击了基础较薄弱者。结合ACM模式,任课教师可以将实验内容分级化,如分成知识型(课本中的基础性、验证性实验)、应用型(学生自行设计、解决实际问题的实验)和综合型(若干知识点的综合,解决一个较大规模的问题)。不同级别的题型权值不同,每一级别中又包含若干个相同权值的题目,学生可以根据自身情况选择不同级别的题型和题目数量,只要总权值达到相应的要求即可。这样既考虑到了不同层次学生的练习需求,又达到了统一的实验要求。

目前的实验题目普遍较枯燥,以单一的语法要求描述为主,难以调动学生的学习兴趣和设计欲望。参考ACM习题,任课教师可以将实验题目设计得“生活化”和“趣味化”,使学生自主选择合理的数据结构和算法解题。如关系表达式和分支结构实验可以让学生根据案发现场当事人陈述来断案,找出真正的作案人,结构体数组实验可以让学生设计一个小型学生信息管理系统等,这样可以充分激发学生的学习主动性和积极性,将被动学习化为主动学习,更好地达到实践教学目的。

(三)教学手段的改革

在多年的教学实践中,我们注意不断改进教学手段,经历了“粉笔+板书”、“计算机+电子教案+动画+大屏幕”到“网络化教学平台”。及时发布课件、开设论坛讨论、教师在线答疑、回复,引入ACM的在线提交程序系统进行实验、作业的判分,加强师生交流与互动,取得了良好的教学效果。

另外,也不能完全摒弃传统教学手段。对于算法复杂性分析和算法解决问题的推导过程,适合采用传统的黑板板书教学方式。因为学生经历了板书从无到有,思路从疑惑到逐渐清晰的过程。为了节约板书时间,也可将算法设计中较抽象的设计思想以动画形式演示出来,将算法设计的一系列步骤直观展示在学生面前。

模仿ACM比赛的模式,可将若干名学生分成一个小组,让他们自己选择教师指定的题目,给他们充分的时间进行精心准备,让他们就此在课堂上为其他同学进行讲解。学生们在课堂教学中的表现不仅远远好于预期目标,而且在诸多方面提出了创造性想法,充分展现了自身的思维活力,不仅突出团队合作精神,而且也增强学生编程技巧。通过研讨、探究的过程,学生的创新能力和科研能力得到提高,也为学生申请本科生科技创新项目奠定了很好的基础。

(四)考核形式的改革

与外国学生相比,中国学生理论基础扎实,从老师和教材吸取的知识较多,对讲授的内容掌握牢靠。但创新能力较差,不善于发现问题、提出问题,缺乏实际解决问题的能力。这种现象的根源在于考试制度,包括考核形式与评分标准。目前程序设计类课程的成绩大多按两部分计算:一部分是平时作业等情况的考核,占总成绩的30%~40%;另一部分是闭卷考试,占总成绩的60%~70%。这样,大部分学生只重视闭卷考试部分,不重视平时学习,更不会挖掘潜力进行创新研究。因此,考试形式和评分标准的改革是中国教育体制改革的重中之重。

首先推行开放式实验教学平台,将基础性验证性实验纳入预作实验,正式实验以解决实际问题类型的题目为主。学生自由选择上机时间和次数,预作实验评分通过,才能进行正式实验。正式实验分层次教学,重点考核过程,如前2.2.3所述。取消闭卷考试,以能力为导向指定考核范围,如给出100道应用型题目,随机考核其中的几道。对有创新性研究项目的学生给予加分。

三、教学改革的意义

(一)农业院系程序设计类课程教学内容与专业充分交叉结合,更好的体现了以能力为导向的教学宗旨,让计算机专业能力得到了更好的体现。通过科学的选择教学内容,合理的设置课程项目,构建了一套开放、系统的课程新体系。

(二)在计算机程序设计类课程学习中,学生的困难点是不易抽象出具体问题的模型,不易用算法表达求解问题的思路,缺乏系统解决问题的方法,难以下手。而实践教学的改革,逼迫学生不得不学,不得不钻。通过实验教学体系的优化和整合,完善学生自主设计、创新的措施和机制,进一步的强化了学生的计算机理论修养和实践能力,学以致用。

(三)增强师生之间的学术交流氛围,通过论坛、研讨、竞赛等形式,鼓励校园形成竞争、交流的学习氛围.让学生在课余时间有自主进行本学科知识钻研的机会和环境。学生体验了团队协作的各个方面,为创新性研究项目的申请做好了准备。

(四)考核方式颠覆了以往的旧模式,突出过程考核和能力考核,更准确的检验了学生的学习效果。对提高学生自主学习能力、探究能力和创新能力,促进学生个性发展,提高人才培养质量真正起到了推动作用。

(五)对软件开发类课程的教学改革有一定的示范作用。

四、结束语

基于ACM/ICPC模式的农业院系程序设计类课程教学改革,将理论知识学习与农业优势学科交叉,与实际应用有机结合,注重编程能力的提高和解题思维能力的训练,引入团队合作、竞争交流、过程考核等机制,为学生提供了因材施教的途径,激发了学生自主性研究性学习的兴趣。尽管改革仍在不断摸索中前进,但已经取得了明显的效果,提高了教学质量和教学水平,学生整体素质和能力的提升也很好的应证了素质培养的目标,对软件开发类课程的教学改革有一定的示范作用。

参考文献:

[1]孙大烈,车万翔.ACM竞赛与学生综合实践能力培养[J].计算机教育,2009,19:12-14

[2]吴文虎.ACM国际大学生程序设计竞赛试题与解析(一)[M].北京:清华大学出版社,1988

[3]王淮亭.数据结构实践教学探讨与实践研究[J].计算机教育,2009,12:133-134

[作者简介]章英(1978-),女,讲师,博士在读,研究方向为图形处理技术和农业信息化,华中农业大学ACM队总教练;汪毅(1975-),男,副教授,硕士,研究方向为无线传感器网络。

项目支撑:湖北省高等学校省级教学研究项目“高等农业院校开放式计算机基础实践教学体系的研究与实践”(2010131)