谈程序设计基于ACM竞赛理念C++程序设计教学方式革新

更新时间:2024-03-04 作者:用户投稿原创标记本站原创
摘要:针对目前C++程序设计教学中以讲授为主,过于注重语法教学而忽略学生能力培养等弊端,提出一种基于ACM竞赛的C++教学模式,通过将ACM竞赛的理念、机制与教学过程紧密结合,有效地促进学生主动学习,培养学生分析问题、解决问题以及团队合作的能力,进一步提升教学效果。
关键词:ACM竞赛;C++教学;教学改革
文章编号:1672-591源于:论文格式范例www.808so.com
3(2013)07-0070-04
中图分类号:G642
1 背景
C++程序设计是计算机及相关专业为一年级大学生开设的基础课程,主要讲授通过编程解决问题,培养学生的动手编程能力和软件设计的逻辑思维能力,为后继课程打下基础。
C++学习的思维方式与学生在前期教育阶段培养出的思维方式有较大的不同。在长期的教学过程中,我们发现,传统的讲授型学习方式并不能起到很好的效果,主要表现在:学生掌握了C++语法的细节,但处理实际问题的能力较弱;偏重考试成绩,动手能力欠缺;在教学过程中,不断有学生因畏难、缺乏兴趣、被动学习而掉队;编程时,易陷入局部细节,不能从宏观上把握程序的逻辑而导致思维受阻等。这反映出C++程序设计课程与常规的教学模式、考核方式有不适应之处。
ACM/ICPC项目是由国际计算机协会主办的,公认为规模最大、最具影响力、水平最高的大学生国际级计算机类竞赛。大赛倡导在压力较大的情况下,发挥创造力和团队合作精神以解决竞赛问题,展示分析问题和解决问题的能力。比赛对学生逻辑分析能力、策略制定和脑力等有极大的挑战性。
该竞赛的机制较为偏向对综合能力的考核,这和学生的培养目标是一致的,因此我们将其模式和机制融合到教学中,对提升学生的学习兴趣、动手能力、学习能力,改进教学效果,改进考核和评测标准等方面都起到了显著的作用。近几年,一些教师也在探索将ACM竞赛与教学相结合。文献探讨了如何将课程教学和ACM竞赛相互促进;文献从学生的学习兴趣、学习效率、教学效率、学习能力、实践能力和评价机制6个方面着手,探讨如何与ACM竞赛结合;文献[3]以ACM竞赛活动为有效载体,积极探索培养创新人才的新模式。本文主要从改进教学目标、更新教学组织形式、培养主动学习模式、改变考核机制等方面人手,探索如何引入ACM理念。教学实践表明,基于ACM竞赛的教学模式是合理有效的。
2 基于ACM竞赛的教学模式
1)改进教学目标,采用以实例为主的C++教学模式,着重培养学生分析问题、抽象问题和解决问题的能力。
ACM竞赛的题目以问题描述的形式出现,具有灵活性和多样性,答案不是现成的或固定的,且解决问题的过程是一个扩充现有知识和思路创新的过程。参与者需要经历理解问题、分析和查找资料、数据结构设计、算法设计和编程调试等环节。该方式能较好地调动参与者学习的主观能动性,培养其宏观思维,锻炼其对实际问题抽象、总结、描述和解决的能力。
常规的C++教学方式,不管是在教学还是实践环节,都过于注重细节、语法。教学目标只在于能否熟练运用C++语言进行程序设计,而忽略了内在的思想和方法。我们以数组部分的一道上机实践题目为例:编写一个排序函数sort(),该函数实现将一个数组中的n个整型数据按升序排序。该排序函数有2个形参,一个是数组形参,一个是表示数组大小的整型形参。在主函数中调用编好的排序函数,并输出排序后的数组数据。可以看到,该题目的需求非常明确,具体的功能要求罗列详细,从数据结构到实现细节均有明确的说明,学生需要动脑筋的部分很少。从实际效果来看,这类题目只培养了学生实现编程过程的能力,而问题的分析和抽象能力并未得到培养。
但在现实的项目中,客户能够提供的往往是比较模糊的一些需求描述。这就要求程序员必须具备较强的分析、抽象和解决问题的能力。常规的教学方式不能完全覆盖这些方面的锻炼。传统的教学模式下,多数学生遇到生活中的实际问题需要编程解决时,仍不知如何去处理。
为此,我们引入ACM竞赛的培养理念,更新教学目标,不再以具体的C++语法及细节的讲授为教学重点,而是采用问题驱动和案例式教学的模式。每个案例从引导学生分析需求开始,启发学生思考,再抽象出合理的数据结构,最终编程实现要求,从而加深学生的理解,培养正确的思维方式,提高其知识利用能力。具体的语法在案例讲解中自然引入,学生对语法更完整的掌握过程,是在实践过程中为解决问题而查阅教材、自然学习的过程。
与课堂实例授课方式相对应,在课后,我们要求学生将实践而非做题作为学习的主导,鼓励学生解放自己的思维,培养创新精神和实践能力。实践题目以贴近实际为主,不规定细节,注重创新性。
实践证明,采用案例的形式进行讲解分析,学生的分析问题和解决问题的能力有很大提高。在期末的课程设计中,与之前采用常规教学方式的学生相比,新的教学模式培养出的学生,能很自然的对课题做出需求描述并设计好数据结构,再编程实现。
同时,与常规的教学方式相比,案例式的教学能较好的调动学生的积极性、激发学习兴趣,使课堂的气氛明显活跃。课后以实践为主导的学习模式也进一步延伸了学习兴趣,巩固了教学效果。
2)更新教学组织形式,采用协作式学习模式。
协作式学习是通过小组或团队的形式组织学生进行学习的一种策略。组内成员共同学习、讨论和解决问题,以达到教学的目标。该模式的好处在于个人可以将其在学习过程中探索、发现的信息、资料和心得等与小组中的其他成员共享,甚至可以同其他组或全班同学共享。教师负责控制学习的组织和进展,以保证学习目标的实现效率和协作学习的效果。
在ACM竞赛的赛制中,参赛者需以团队的形式参赛。每队由3名队员组成。他们要在规定的时间内共同解决7~10个问题。我们将这种形式引入到C++程序设计教学的改革探索中,并根据教学的实际情况,做了相应改进。为了讨论方便,小组主要按照寝室划分,每组3~4人。上机实践和课后竞赛均以小组为单位的形式进行,促进个人独立学习、小组共同研究和班级集体讨论的有机结合,形成组内合作、组间弱竞争的关系,实现学生与教师、学生与学生之间的互动。 组内成员共同对问题进行分析职称论文范文www.808so.com
和讨论。但对于个体,各成员均承担一定的任务职责,如分别负责一部分的C++编程实现。个体的努力程度会直接影响到小组的成绩,从而激发了个体的责任心,有效地克服了个别学生的畏难和偷懒情绪。对于小组,结果是由组内各位成员共同实现的,最终的成绩以小组为单位给出,因此学生的团队合作精神得以提倡。而组内面对面的相互式促进也使得每个人的学习收益最大化。组与组之间,以班级的形式共同讨论,互相点评程序质量、思路好坏,从而达到激发竞争力、相互学习的效果。
3)结合ACM竞赛,培养主动式学习模式,激发兴趣,建立竞争机制。
主动式学习模式是指在主体意识的指导下,通过行动实现预期的学习目标。该模式强调学生自主学习、主动学习。
在主动式学习模式下,教师的作用是着重于发挥学生主体地位的作用,调动学生的主观能动性、激发学生的兴趣,将学生以往的填鸭式学习和被动学习,转化为兴趣式驱动学习和主动学习。它可以帮助学生学会学习的策略,并能让学生灵活地、有创造性地运用此策略,实现从“学会”到“会学”的转变。
爱因斯坦说过:“兴趣是最好的老师”。人一旦对某事物有了兴趣,就会主动地探索和实践,并在此过程中产生愉快的情绪和体验。因此主动式学习模式的关键在于激发学生的兴趣。ACM竞赛设计了完善的竞争机制,并采用Online Judge系统来进行评定。该系统对用户提交的程序在运行时间、内存使用和安全等方面有着严格的限制,最终给出通过、答案错误、超时、超过输出限制、超内存、运行时错误、格式错误或无法编译等各种状态,并能返回程序使用的内存、运行时间等信息,从而能较好地评判出程序的质量。
我们将该系统引入到实验教学中,通过此系统来评判学生编程的质量,并设计了各种竞争和激励机制,如:综合排名、日冠军、周冠军等,给学习带来了更多乐趣和挑战,并将其与成绩、各种计算机类竞赛的参赛资格等挂钩,激发学生的竞争意识,调动其学习和主动性,从而形成你争我赶的良性互动局面。
4)改变课程的考核和评价机制。
以往的考核方法是单一的,通常是期末试卷或者大作业的形式。试卷将学生的学习目标定位于做题,易导致高分低能,考核的重点也容易陷入对编程细节的考查而非整体思路的把握。大作业要求学生提交C++程序和报告,由教师按照一定的评判标准根据代码或书面报告给出成绩,评判标准有局限性,学生也难以展示创新思想和观点,容易雷同。另外考核多集中于期末,导致平时学生的重视程度不够。
在新的教学模式中,考核方式采用多次的形式,按照每3周一个周期,一个学期共组织5次小组竞赛,进行打分和排名,并综合每次的成绩作为课程的最终成绩。每次竞赛针对本周期正在讲授的知识点和之前的知识点,并具有一定的超前性,以促使学生主动学习。分周期进行多次竞赛可以综合地考核学生的水平,避免了因某次发挥失常而导致的成绩异常,又避免了大学中经常见到的平时不努力,考前突击死记硬背的现象。
每次考核结合ACM竞赛所采用的Online Judge系统,将所学知识点与实际应用结合放到在线系统上,并由系统给出得分作为本次成绩的一部分;另一部分成绩由演讲报告获得:以小组为单位阐述解决问题思路、演示C++程序并运行结果。该部分成绩由全班和教师共同评判、讨论决定,以激发学生的表现力和创造力。由2部分成绩组成的考核设计既兼顾了程序质量的考核,又可以让学生的创新能力和思路得以充分的展示。
3 与传统教学模式的对比
基于ACM理念的教学模式与传统教学模式如表1所示,主要改进如下:教学目标从只关注编程能力扩展到对编程能力、分析问题能力、查找资料能和算法设计能力的培养;教学重点由侧重对语法和规则的掌握转移到侧重对编程思路的掌握;改变以授课为主、实践为辅的教学方式到以实践为主、课堂实例讲解为引导的方式;更新组织形式为协作学习、集体讨论;根据新的教学模式的特点,以Online Judge在线判题系统为辅助,多次考核、综合评判成绩。
4 结语
从我们对近两届学生的实施情况来看,多数同学学习模式从被动变为主动,以往生搬硬套例题程序、网上查找代码的现象大大减少,取而代之的是主动查找资料、研究算法、互相讨论并亲自编程实现。实践证明该教学模式是合理有效的,能够更好地激发了学生的学习兴趣,更能满足人才培养的要求。
今后我们将进一步紧密结合ACM竞赛的理念,在日常教学中不断创新改革,以期达到更好的教学效果。
参考文献:
尚晓丽,包向辉,樊守芳,等,如何实现C/C++课程教学和ACM/ICPC竞赛的相互促进[J],绥化学院学报,2011,31(4):191-192。
朱月秀,基于ACM竞赛的C++程序设计课程教学改革[J],漳州师范学院学报:自然科学版,2012(1):96-99。
[3]芍生平,杨鹏,汪小平,等,以ACM/ICPC竞赛为载体探索课程体系建设与创新人才培养新模式[J],中国大学教学,20lO(7):71-73。
[4]张水波,分组协作式学习在计算机教学中的实践与思考[J],宁德师专学报:自然科学版,2006,18(3):307-309。
[5]王淑萍,浅谈数学“探究式教学”新思路[J],基础教育论坛,2012(3):53-54。
(见习编辑:刘丽丽)

点赞:30150 浏览:134567