“算法设计与分析”“以赛励教、以赛督学”教学模式探讨
2019-05-22王金艳
王金艳
摘 要:文章针对“算法设计与分析”课程中存在的学生热情不高、利用算法解决实际问题能力欠缺、课程考试成绩与实际水平不符等诸多问题,在程序设计竞赛受到高度重视的背景下,从课堂教学、实践教学、课程考核和课外活动等方面进行改革,建立“以赛励教、以赛督学”的教学模式,激励教师提升自身知识和教学能力,充分激发学生的学习热情,提高学生的创新能力以及利用算法解决实际问题的能力,同时培养学生的合作和表达能力。
关键词:程序设计竞赛;算法设计与分析;教学模式
算法被誉为计算机学科的灵魂,无论是计算科学还是计算实践,算法都在其中扮演着重要角色[1-2]。算法是计算机科学研究的重要分支,更是支撑计算机科学大厦的核心和基石,没有算法就没有计算机程序,也就没有现在蓬勃发展的信息技术[3]。“算法设计与分析”课程是计算机相关专业的专业基础课,在国内外各大高校计算机专业课中处于核心地位。该课程要求学生具备扎实的数学能力以及良好的程序设计语言和数据结构基础,通过系统学习算法设计和分析的原理和方法,培养学生独立设计算法和正确分析算法计算复杂性的能力,从而提高学生用算法解决实际问题的能力,这为学生将来从事计算机相关行业的研究与开发工作奠定坚实的基础。如何有效地激发学生的热情,促进学生对算法设计和分析方法的理解和掌握,提升学生解决实际问题的能力,一直是“算法设计与分析”课程面临的一个重要挑战。
1 “算法设计与分析”课程教学中存在的问题
课堂教学活动不仅是教师传授知识的过程,也是培养学生运用算法设计的思想解决实际问题的过程。有效地组织课堂教学活动,对提高学生学习主动性,提升学生对知识的灵活运用有重要的影响。但是目前我校计算机科学与信息工程学院对“算法设计与分析”课程教学仍然采用以教师为中心的传统教学结构,因而存在诸多问题,具体表现如下。
1.1 教学方法落后,学生的学习热情不高
目前“算法设计与分析”课程教学大多仍采取传统的灌输式教学方法,即使运用了多媒体教学设备,也只是把理论知识进行了演示,这种满堂灌的教学手段导致学生上课不能积极思考,不能主动参与到教学环节中来,学习的积极性不高。另外,在有限的实验课时中,只是实现已有的算法,很少考虑数据的规模和运行的效率等问题,因此很难达到训练的效果。
1.2 不能灵活运用算法解决实际问题
“算法设计与分析”课程内容相对较散,设计方法之间联系不大,学生很难较好地掌握每个方法的不同特点以及相互关系[4],而且每个方法均以经典问题来讲解算法设计的基本思想,缺乏解决实际问题的训练。因此,学生能用算法解决书本上的问题,但是当面对新的实际问题时,大部分学生通常毫无头绪,不能灵活运用算法进行解决。
1.3 成绩的评定不能较好地反映学生的实际能力
“算法设计与分析”课程成绩的评定通常包含平时成绩和期末考试成绩两部分,平时成绩又包含布置作业和实验课的成绩。由于缺乏监管和有效的评价体系,部分学生尽管获得了较好的课程成绩,但是其动手能力和解决实际问题的能力仍然很弱。
1.4 程序设计竞赛和课程教学缺乏融合
“算法设计与分析”是程序设计竞赛的基础课程,程序设计竞赛是学生算法设计与分析能力的试验场。广西师范大学计算机科学与信息工程学院学生在程序设计竞赛中已取得部分成果,2015~2018年学生参加蓝桥杯全国软件和信息技術专业人才大赛获奖情况如表1所示。从表1中可以看出,参与蓝桥杯竞赛获奖的学生逐年增多,热情高涨。程序设计竞赛可为“算法设计与分析”课程的教学提供丰富的赛题和有效的实践平台,但是目前广西师范大学计算机科学与信息工程学院该课程的教学并未有效利用这些资源。
2 “以赛励教、以赛督学”的教学模式
近年来,为了推动软件开发技术的发展,促进软件专业技术人才培养,向软件行业输送具有创新能力和实践能力的高端人才[5],国际计算机学会、百度和谷歌等一些教育组织和知名企业举办了多种程序设计竞赛,包括ACM国际大学生程序设计竞赛、蓝桥杯全国软件和信息技术专业人才大赛、百度之星程序设计大赛等[6],这些竞赛以程序设计语言为依托,以算法设计为重点,是政府、企业和协会联手构筑的人才培养和选拔平台,表现优秀的选手非常受微软、谷歌和百度等IT巨头青睐[7]。程序设计竞赛全面考验学生的学科综合技能,侧重考查学生运用知识解决实际问题的能力,能有效地培养学生自主学习、实践探索、分析解决实际问题和团队协作的能力,目前已受到高校的普遍重视,竞赛的门类和级别在不断丰富,参与的学生不断增加[8]。因此,借助程序设计竞赛实施“算法设计与分析”课程教学改革,将程序设计竞赛与课程教学有机融合,建立“以赛励教、以赛督学”的教学模式,能够有效地提高“算法设计与分析”课程的教学质量。
程序设计竞赛与“算法设计与分析”课程密切相关,作为该课程的教师,为了将竞赛和课堂教学的有机融合,除了掌握课程所涉及的知识点外,还需要努力学习和熟悉与程序设计竞赛的相关的知识。不仅需要熟悉程序设计语言和数据结构这些必需的知识,而且还要掌握离散数学、数论、数值计算、计算几何、人工智能等相关知识,并能对其进行综合运用。同时,为了熟悉竞赛机制和指导学生取得优良的成绩,教师必须花费大量的时间和精力进行赛题训练,以提高自身的专业水平。
2.1 理论教学改革:课堂讲授和翻转课堂相结合
在教学过程中,从程序设计竞赛试题中精选一些有趣味性的案例来吸引学生注意。比如动态规划方法,该方法比较抽象难以理解。可以引入相关的竞赛题目,并用程序演示动态规划法和其他方法的求解效率,从而引发同学的学习兴趣和求知欲。然后通过循循善诱的启发式方法,给出动态规划法的设计思想和问题的求解过程。
除课堂讲授外,利用部分学时进行翻转课堂的研讨式教学。给学生提供主题、视频、在线课程及相关资料,利用团队参赛模式,让学生组成小组,根据具体的问题进行调研和讨论,教师进行启发式引导。通过让学生进行研讨汇报,自学能力得到提升,表达能力得到锻炼,思维更加缜密,同时团队协作精神得到加强。
2.2 实践教学改革:课堂竞赛和课后交流相结合
ACM竞赛经过40多年的发展,涌现出很多优秀的在线评测系统,如OJ系统。OJ系统具有实时评判、答题统计和排名等功能[9]。教师利用OJ系统设定好时间和实践试题,让学生在竞赛环境中实践,将激发学生的斗志,以便充分发挥各自的潜力。
通常OJ系统提供在线交流功能,当学生在学习过程中遇到困难时,利用在线交流功能可以及时获得解决方法,同时学生也可以将自己的学习心得和成果进行共享,从而增加学生主动学习的积极性。
2.3 考核方式改革:重视实践能力的考核
广西师范大学计算机科学与信息工程学院“算法设计与分析”课程的考核方式包含平时成绩和期末笔试成绩,该考核很难体现学生利用算法解决实际问题的能力,偏离“算法设计与分析”课程的教学目的。改革后的考核内容应包含课堂表现、手写作业、实验课时安排的任务和课后上机作业的完成情况,以及期末的笔试和机试等。此外学生在程序设计竞赛中的表现作为加分项(加分≤10分,总分≤100分)。
2.4 新增课外活动:提升学生的学习热情
在学习“算法设计与分析”课程的学期,教师以竞赛的方式组织1~2次比赛活动,表现优异的同学可以适当给予奖励。学院定期组织与程序设计竞赛相关的活动,邀请在ACM竞赛中取得優秀成绩的高校指导老师、学生和参加工作的企业人员来学院讲学,以激发学生学好专业知识、参与竞赛和提高实践动手能力的热情。同时可以充分利用寒暑假的时间来进行集中训练,只有多思多想、多做多练、多讨论多交流,才能提高自身的能力。
3 结语
将程序设计竞赛的内容和模式引入“算法设计与分析”课程教学中,建立“以赛励教、以赛督学”的教学模式,有助于充分调动教师教学和学生学习的积极性,拓宽教师的知识面,提高学生分析和解决实际问题的能力。通过翻转课堂的分组讨论以及实践训练和课外活动,能够增强学生的表达能力和团队合作意识,从而形成良性的、相互促进的学习氛围。
[参考文献]
[1]吕国英.算法设计与分析[M].北京:清华大学出版社,2009.
[2]陈翔.面向算法设计与分析课程的翻转课堂教学模式研究[J].计算机教育,2016(8):147-151.
[3]秦董洪,陈智勇.算法设计与分析课程教学研究[J].计算机教育,2013(11):98-101.
[4]向金海,任继平,余文君.“算法设计与分析”课程教学与实践方法探讨[J].计算机教育,2012(6):87-93.
[5]严宇,郝淑新.蓝桥杯软件大赛培训的实践与思考[J].科技视界,2015(31):143.
[6]陈英,郑巍,杨丰玉,等.程序设计类竞赛对教学质量的作用及分析[J].高教学刊,2018(9):92-95.
[7]李玲芝,徐俊,易险峰.依托大学生计算机程序设计竞赛,探索信息学科创新型人才培养新模式[J].计算机教育,2009(12):92-93.
[8]杨勃,李文彬,潘理,等.程序设计竞赛在程序设计类课程教学改革中的探索研究[J].现代计算机,2017(20):78-81.
[9]陶小梅,黎辛晓.ACM竞赛驱动的程序设计类课程教学改革研究[J].科技资讯,2017(13):146-147.