算法设计与分析课程以赛励教的教学模式及效果分析

2020-05-03 13:56陈英江智康章文贵裴威凤
高教学刊 2020年6期
关键词:教学模式

陈英 江智康 章文贵 裴威凤

摘  要:针对目前算法设计与分析课程教学中存在的不足,文章采用以赛励教的教学模式对该门课程的课堂进行改革,参加各类程序设计类竞赛达到激活课堂的目的,同时促进和加强学生算法设计、程序编写、教育的实践性和创新性。

关键词:算法设计与分析;以赛励教;教学模式

中图分类号:G642 文献标志码:A 文章编号:2096-000X(2020)06-0077-03

Abstract: Aiming at the shortcomings in the current algorithm design and analysis course teaching, this article adopts the teaching model of competition teaching to reform the course, participate in various programming competitions to achieve the purpose of activating the classroom, and at the same time promote and strengthen the student algorithm design, programming, practicality and innovation of the education.

Keywords: algorithm design and programming; promote teaching through competition; teaching mode

一、概述

算法设计与分析是四年制计算机科学与技术、软件工程、物联网工程等相关专业的核心课程。这门课程的主要目的不仅是讲授计算领域中不同问题的标准算法,更重要的是分析其算法复杂度,并且在诸多可行算法中选择一种时间或者空间效率最高的方法。David Harel在“Algorithmics:the Spirit of Computing”中这样描述算法:算法是计算机科学研究的重要分支,更是支撑计算机科学大厦的核心和基石。算法不仅在计算机领域,而且在其它理工及社会科学领域都有极其广泛的应用,任何问题的求解,都离不开算法设计。

二、目前课堂中存在的不足

在当前的教学过程中,仍然存在一些不足:(1)在课堂的教学组织上,多年来一直沿用传统的教学模式,教学内容选择和组织不合理,理论内容偏多,过少甚至缺失算法编程实践。(2)学生对算法地位认识不清,学生学习的目的不明晰,兴趣也不是很强,很多学生刚学过数据结构,翻开算法教材,有似曾相识的感觉。教材中确实有部分章节如数据结构,排序算法,图的遍历等取材于数据结构课程。因此会有些学生学习热情不高,认为是在学习重复的课程。(3)学生虽然在理论学习过程中掌握了一系列算法的基本设计思想,但是学生很难理解各种方法的具体应用,这就造成了学生难以“学以致用”的现象,且算法实践缺乏方法论的指导。(4)本门课程的考试形式也比较单一,偏重于结果考核而缺乏对算法学习过程的评价,主要采用“平时成绩+考试成绩”相结合的考核方式。从整体看来,在这种学习模式下,能够主动学习且真正理解算法设计思想的学生较少。(5)现有的算法设计与分析的教学模式无助于提高学生的团队合作能力。

已有高校将竞赛模式引入程序设计类课程的教学中,并取得不错的效果。何克晶等[1]基于翻转课堂的研讨式教学结合的理论教学、ACM-ICPC竞赛和在线测评系统结合的实验教学对算法设计与分析课程进行改革探索。李华等[2]提出基于ACM-ICPC的算法设计与分析课程改革,并建立适应长春理工大学学生的测评系统和习题库。刘晓璐[3]提出将ACM-ICPC竞赛模式引入算法设计与分析课程的实践教学中。李勇[4]将实践性教学方法应用于算法设计与分析课程。王伟嘉等[5]结合竞赛历年和资源去丰富课堂内容、提高教学效率、提升学生知识运用能力。

因此,以比赛带动激励算法设计与分析课程的教学改革将会取得不错的效果。

三、改革的措施

(一)理论教学的改革

1. 突出该门课程学习的重要性:通过预先为学生分析本科毕业后的两种主流去向(考研和工作)来突出该课程学习的必要性,让学生知道,不管将来是考研或者是工作,具备良好的算法设计与分析能力有助于其得到更好的发展。

2. 优化教学内容:教学内容以教材为基础,以具体的问题和应用为驱动,引导学生深入分析问题,并设计优秀的算法,培养学生的创新能力。

3. 改革课堂教学模式:采用课堂讲授与研讨式课堂讨论结合的理论教学形式,除课堂讲授外,部分学时基于翻转课堂的模式进行研讨式教学。给学生提供主题、视频、在线课程及相关资料,让学生组成小组,根据具体的问题进行调研和讨论,教師进行启发式引导。通过让学生进行研讨汇报,实践能力得到提升,表达能力得到锻炼,思维更加缜密,同时团队协作精神得到加强。通过在理论教学中推动学生课后的实践活动,可以与传统的讲授型教学模式进行良好互补。

(二)实践教学的改革

要真正培养学生的算法设计、分析和创新能力,只依靠课内学时是远远不够的,还要将实验环节与各种程序设计大赛相结合,鼓励学生积极参与相关比赛的训练或实践班。实践班将坚持以下几个原则:(1)“以老带新”的梯队建设原则;(2)“以赛代练” 的常态化训练原则;(3)“线上OJ测试,线下讲题消化”的双驱动原则;(4)“以点带面”的知识点讲解原则;(5)“基于统计数据分析”的客观选拔原则;(6)“以书面规则明确比赛纪律”的约束原则;(7)“以ACM-ICPC为核心,其它比赛多路突进”的百花齐放的竞赛原则。具体的说明如下:

(1)“以老带新”的梯队建设原则:团队的建设应该是形成纺锤形,即“中间大、两头小”,以大二的学生为主,大三和大一的学生为辅,每一年完成正常的新老交替,完成团队的梯队建设,在补充新生力量的同时,欢送老队员的离队。从历年的情况分析:三个年级学生的状态分别为:a.经过一年多的训练,大二的学生知识储备处于较高的水平,个人对竞赛的认识和参加竞赛的意愿也处于较好的程度;b.大三同学虽然水平相对最高,由于其面临考研、工作实习的选择,心思已经不完全放在竞赛上,但是其知识水平和比赛经验可以给低年级的同学带来比较大的帮助;c.大一的同学竞赛热情高,但是由于其知识储备较弱,并不具备独立参加比赛的能力,可以由高年级的学生带着一起参加比赛。

(2)“以赛代练”的常态化训练原则:目前,由于各个省、各个高校都非常重视程序设计类的比赛,所以各种类型的区域赛、省赛、校赛比较多,比赛主办方一般会同步开放网络赛,或者事后挂在各个OJ(Online Judge)平台上作为重现赛,对于这些比赛,要求队员都积极参加,并且严格以正式比赛的形式进行,让各位同学在平时的训练中感受正式比赛的压力,以在正式的比赛中取得好的成绩。

(3)“线上OJ测试,线下讲题消化”的双驱动原则:充分利用已有的Online Judge平台,例如杭州电子科技大学的OJ(http://acm.hdu.edu.cn/)、牛客網(https://www.nowcoder.com/)等平台所提供的高质量的题目和自动判题功能,让学生能够通过随时随地做题、训练。对于在做题中出现的共性问题,实践班将采用面对面的方式进行沟通交流和讲解。

(4)“以点带面”的知识点讲解原则:程序设计类比赛所涉及的知识广且深,如果面面俱到,一则时间不允许,二则学生会有坐等靠的消极思想,对整个比赛产生不利的影响。实践班将采取讲透一个知识点,带通系列知识面的做法,以让学生养成自主思考的习惯,这样也切合比赛的特点。

(5)“基于统计数据分析”的客观选拔原则:实践班将对每个学生每一次训练、每一次比赛的原始数据进行统计,在此基础上进一步进行数据的挖掘和分析,以尽可能客观地评估每一位学生的加权成绩,并以此成绩作为其能否参加正式比赛的依据。

(6)“以书面规则明确比赛纪律”的约束原则:程序设计类比赛的一个亮点是“公平性”,而赛后进行代码查重是一个必经的环节,如果某两个学生的代码出现雷同的情况,则该学生所在学校的所有学生都将取消比赛成绩。为了避免出现这种情况,实践班将把比赛规则形成书面的文件,发布在群文件中,并且一次次要求学生严格遵守,以做到零查重的情况。

(7)“以ACM-ICPC为核心,其它比赛多路突进”的百花齐放的竞赛原则:坚持以参与学校/学生最多、含金量最高、获奖难度最大的ACM-ICPC以核心抓手,CCPC、CCCC-GPLT、蓝桥杯大赛、CCF-CCSP、江西省大学生信息技术知识大赛等为辅助,形成有所侧重,但相互互补的局面。

四、改革效果的分析

1. 通过教学环节的改革,使得学生能够充分的参与到课堂教学过程中,能够从本质上活跃课堂的教学氛围。同时,教学过程中引入数学逻辑思维能力训练,就能够将相对零散的知识点通过逻辑思维将其串起来,让学生充分的融入课堂,深入理解算法思想和整体的学习脉络,也锻炼了学生的表达沟通能力。

2. 通过实践环节的改革,学生能够切实体会到算法如何应用到实际问题中去,不仅能够培养学生的实际动手能力,还能增强学生解决问题的实战能力。

3. 通过考核环节的改革,使得学生不再是按照以往的依赖老师在考前划重点以及讲解往年试卷的形式进行备考,而是摒弃了这种学习方式,改“背得越多分越高”的模式为“做得越多越好分越高”的考核模式,从而使得学生的学习目的性更强,也能够使得学生更好的掌握数据结构的相关理论和方法。2017-2018学年和2018-2019学年的“算法设计与分析”这门课程的考试试卷均为实际问题的算法设计主观题,没有选择、填空等客观题。两学年作者所授课班级学生人数分别为95人和103人,在综合考虑并持平难度的情况下,考试成绩结果分析的对比如图1所示,从该图中可以看出,不管是平均分还是平均方差,2018-2019学年的结果均要优于2017-2018学年的结果。

4. 通过比赛的激励,使得更多的学生参与比赛,获得与其它学校优秀学生同台竞技的机会,通过参赛学生的示范作用,有效地带动了学院、学校的学风建设。同时,学生在比赛过程中所取得的成绩,将有效地增强学生的自信心。分别以2018年和2019年这两年的1-9月份作为对比的时间节点,图2是我院学生在这期间参加国际大学生程序设计大赛、中国大学生程序设计大赛、大学生程序设计天梯赛、蓝桥杯等程序设计类比赛所获奖的对比图。从该图中可以看出,不管是获奖的数量,还是在获奖的质量上,2019年的优势都是非常明显的。同时,图3是这两个期间参与竞赛的学生人次对比图,从该图中可以看出,2019年参与竞赛的学生人数明显均多于2018年同期。

5. 有利于培养学生的团队精神:如今的IT行业,无论是软件开发还是软件测试领域,其运作过程都是采用团队合作的方式,而学生在高校学习过程中,往往得不到团队合作的锻炼,即使有的课程进行了分组实验的方式,也经常会出现一组同学少数人做事,而多数人观望甚至置之不理的情况,基于此,算法设计与分析课程教学采用分组、团队竞赛等手段保证每一名同学都能够切实参与到学习、竞赛过程中,并在团队中找到自己的位置、认清自己的角色,从而,以切实可行的方式培养学生团队合作的意识和能力。

五、结束语

通过以赛激励的教学模式,学生可以掌握算法设计与分析的本质,并运用到实际问题的解决中去。同时,根据不同程序设计类竞赛类竞赛的特点,使学生在课外竞赛上找准目标,更好地增强学生所学知识的广度和深度,切实培养学生的创造力、团队合作精神以及在软件程序开发过程中的创新意识,有效地提高算法设计与分析课程的教学效果。

参考文献:

[1]何克晶,张星明,郑运平.算法设计与分析课程全方位实践教学改革探索[J].计算机教育,2017(2):45-49

[2]李华,赵建平,李奇,等.基于ACM-ICPC的算法设计与分析课程改革[J].计算机教育,2013(7):88-91.

[3]刘晓璐.基于ACM-ICPC模式的算法分析与设计课程的建设与实践[J].中国教育信息化,2015(5):65-67.

[4]李勇.基于实践性教学的《算法设计与分析》教学研究[J].曲靖师范学院学报.2015,34(6):52-54.

[5]王伟嘉,张洪萍,宁亚辉,等.关于《数据结构》课程与ACM-ICPC竞赛结合的探讨[J].计算机工程与科学,2014,36(A1):257-259.

猜你喜欢
教学模式
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
基于深度教学的高中数学新授课教学模式的探索与实践
新工科背景下项目推动式教学模式的探索
创新线上英语教学模式的思考
高中英语美文阅读USE教学模式的应用探究
借力大数据分析 创新“三位一体”思政课教学模式
高中英语“读写学思”教学模式探索与实践
“认知-迁移”教学模式在高年级阅读教学中的应用
“先学后教”教学模式在复习课中的应用