吴庭芳
摘要:算法设计与分析是计算机相关专业的核心课程之一,但在课程教學实践中,存在课堂教学方式单一、缺乏实践环节、教学内容未与时俱进等问题。鉴于此,结合算法设计与分析课程的特点和教学经验,从该课程的理论教学、实践教学和自主研学三个方面进行改革探讨,提出一些具体的教学改革措施,构建基于理论教学、实践教学和自主研学“三位一体”的算法设计与分析课程新型教学模式,从而激发学生学习的主观能动性,提高课程教学效能。
关键词:高校课程;算法设计与分析;教学模式;教学改革;三位一体
中图分类号:G642 文献标识码:A
文章编号:1009-3044(2021)04-0138-03
Abstract: The Design and Analysis of Algorithms is one of the core courses of Computer Science and related majors, but in the teaching practice of this course, there are several problems including lack of ample teaching methods, lack of practice, and lack of up-to-date teaching content. In view of these problems, based on the characteristics and teaching experience of the Design and Analysis of Algorithms course, this paper discusses three aspects: theoretical teaching, practical teaching, and self-directed research study, puts forward some specific measures of teaching innovation, and constructs a novel teaching mode of the Design and Analysis of Algorithms course based on the “three-in-one” of theoretical teaching, practical teaching, and self-directed research study, aiming to stimulate students subjective initiative for learning and improve the teaching efficiency of the course.
Key words:college course; the design and analysis of algorithms; teaching mode; teaching innovation; three-in-one
1 引言
在信息技术蓬勃发展的今天,算法被公认为是计算机科学的核心和基石;在当今人工智能迅速崛起的时代,算法更是扮演着关键角色[1]。算法设计与分析就是研究如何利用算法思维解决实际问题,并通过算法分析来分析解决同一问题的多种算法效率的一门课程,是国内外各高等院校计算机专业的核心课程之一[2]。该课程旨在通过学习算法设计与分析的基本理论与方法,培养算法设计和算法分析的能力,为学生应用算法解决实际问题奠定基础。
算法设计与分析课程具有很强的理论性和实践性,教学内容抽象深度而又复杂,涉及许多数学基础知识,难于理解和掌握,导致学生普遍反映难学,教师反映难教[3]。因此,如何提高算法设计与分析课程的教学效果,加强学生理论学习和实践能力相结合,是教师在教学实践中必须思考和探索的问题。本文针对算法设计与分析课程教学中存在的主要问题,结合该课程的特点和教学经验,研究与探讨了基于理论教学、实践教学和自主研学“三位一体”的算法设计与分析课程新教学模式。
2 算法设计与分析课程教学的现状及问题
通过分析研究之前自身的教学经历和查阅相关资料,笔者总结出算法设计与分析课程教学过程中主要存在如下问题[4-5]:
(1)课堂教学方式单一:教师讲,学生听,学生被动
目前,算法设计与分析课程的教学方式大多数仍采用传统的课堂讲授方式,即“教师讲、学生听”,教师通过灌输的形式将知识传授给学生,学生被动地学习和接受,缺乏自己独立思考的过程。这种教学模式不能很好地使学生真正理解算法的设计思想,无法达到举一反三的效果,而且难以调动学生学习的积极性和主动性,不利于培养学生的算法思维。
(2)缺乏实践环节
算法设计与分析课程主要以理论教学为主,实践教学薄弱乃至空白,而该课程又是一门实践性极强的课程。以笔者所在的苏州大学计算机科学与技术学院为例,算法设计与分析课程没有安排实践教学环节,学生动手编程的机会太少,实践能力较弱,学生即使理解了算法的设计思想,但距离编写出相应的程序代码和实现具体应用还存在一定差距。另外,缺少上机实践又反过来影响了学生对于课程理论知识的理解。
(3)教学内容未与时俱进
当前,算法设计与分析课程的学时数不断缩减,比如笔者所讲授的算法设计与分析课程的理论教学只有36学时,而课程理论讲解本身就会占用相当长的时间,教师为保证完成教学大纲规定的教学内容,在授课过程中较少提及一些延伸内容。在当前人工智能发展如火如荼,各类先进高效的算法层出不穷,算法设计与分析课程的教学内容也应该与时俱进,将理论和实际应用紧密结合,从而激发学生的学习兴趣。
鉴于算法设计与分析课程教学实践中存在的问题,有必要对现有的教学模式进行改革,为激发学生学习的主观能动性和提高课程教学质量探索出切实可行的新型教学模式。
3 “三位一体”的算法设计与分析新型教学模式构建
综合算法设计与分析课程的特点和上述教学过程中存在的问题及原因,笔者结合自己在实际教学中的经验,将从理论教学、实践教学和自主研学三个方面对算法设计与分析课程的教学改革进行探索和实践,构建基于理论教学、实践教学和自主研学的“三位一体”新型教学模式,其框架如图1所示。
图 1 算法设计与分析“三位一体”教学模式框架图
3.1 理论教学方式改革
鉴于传统的讲授型教学方式难以调动学生学习的积极性和主动性,在算法设计与分析课程的教学过程中,引入研讨式教学方式和翻转课堂教学方式,提高该课程的教学效能。
(1)研讨式教学方式
研讨式教学方式是指由教师指导学生选择比较感兴趣、课程中的重难点内容作为研讨内容,然后教师与学生在课堂讨论前查阅要讨论的问题的相关文献资料;在课堂讨论中,以学生为主角,学生介绍各自对问题的看法和研究心得,然后互相补充或质疑,展开讨论;教师是课堂讨论的组织者和参与者,引导学生在讨论中提出问题或者回答问题,并根据学生的发言适时纠正或补充学生的观点;在课堂讨论结束后,教师需要对学生的讨论进行评价和总结[6]。例如,在算法设计与分析课程的教学中,讲述完回溯法和分支限界的基本思想和基本步骤之后,需要加强两个算法之间的比较,这时可以采用研讨式教学方式,让学生对回溯法和分支限界法之间的相同点和不同点、如何应用于同一个问题、以及它们的时间复杂性等进行讨论和交流。这种研讨式教学方式有利于促进学生学习的积极性和主动性,锻炼了学生的胆量和表达能力,同时也进一步巩固和深入学习了课堂上讲授的理论知识。
(2)翻转课堂教学方式
翻转课堂教学方式是指学生在课前通过教师提供的教材、课件、教学视频等学习资源,主动学习老师即将讲解的内容,并通过QQ群、微信群等网络互动平台对学习中产生的问题与教师和其他同学进行讨论交流;在课堂中,教师通过提问、测验等方式检验学生课前自主学习的效果,并根据学习效果,将更多的时间用于重点讲解学生反映不懂或不会的问题[7]。比如,在讲授算法设计与分析课程中的动态规划算法时,首先讲述动态规划算法应用于钢条切割问题,重点突出如何找出最优解的结构特征和建立最优解递推方程,然后让学生在课后自主学习动态规划算法在最长公共子序列问题中的应用,并让学生在课堂上讲解动态规划算法如何求解最长公共子序列,最后教师针对学生在讲解过程中存在的共性问题进行深入探讨。翻转课堂教学模式中,学生成为学习的主动研究者,而教师则成为学生学习的引导者和协助者,从而提高学生学习知识的积极性,有利于充分发挥课堂以学生为中心的作用。
通过在算法设计与分析课程的理论教学中引入研讨式教学方式和翻转课堂教学方式,能够与传统的讲授型教学方式形成良好的互补。
3.2 实践教学方式探索
算法设计与分析课程是一门理论与实践结合的课程,学生需要通过大量动手编程,将课堂上学习的算法转换成程序来求解实际问题,从而加深对理论知识的理解[8]。针对算法设计与分析课程缺乏动手实践的问题,引入项目驱动型实践教学和ACM-ICPC模式实践教学,强化课程实践教学环节。
(1)项目驱动型实践教学
项目驱动型实践教学是指以实际应用的项目为实践教学内容主体,学生为项目执行过程主体,完成项目的分析、设计和实现,而教师在项目执行过程中作为辅助体,起到引导和归纳的作用[9]。與传统实践教学大多采用验证各章节理论知识的教学型实验不同,项目驱动型实践教学需要设计功能较多、范围较大的实际项目,涉及多个知识点,这些实验具有较强的综合性和设计性。项目驱动型实践教学方式在算法设计与分析课程中的应用如下:首先,针对课程中单个或者多个相关联的知识点,设计出一个实际项目案例,比如生物信息学中的蛋白质同源性分析,涉及如何寻找两个蛋白质序列的最长公共子序列的问题,这样可以将该问题作为动态规划算法的一个应用实例;然后,学生以分组的形式分工合作,对项目进行分析讨论、设计,完成代码的编写和调试,并撰写项目报告;最后,教师从问题分析、算法设计和算法程序实现方面对项目进行分析和评价。
(2)ACM-ICPC模式实践教学
ACM-ICPC是由国际计算机协会主办的国际大学生程序设计竞赛,以高级程序设计语言为依托,以算法设计为重点,旨在综合考查学生分析问题和解决问题的能力[10]。ACM-ICPC竞赛涉及的算法知识点主要包括各类排序算法、分治法、动态规划算法、贪心算法等,这些考查知识点与算法设计与分析课程的教学内容极度契合。因此,将ACM-ICPC竞赛模式引入到算法设计与分析课程的实践教学环节,能够极大地提升学生应用所学算法解决实际问题的意识和能力,有利于提高学生的学习兴趣和参与竞赛的热情[11]。笔者所在的苏州大学计算机科学与技术学院专门成立了苏州大学ACM-ICPC集训队,在亚洲区域竞赛中多次获得金牌、银牌等,取得了突出成绩。苏州大学ACM-ICPC集训队每年利用寒暑假期进行为期半个月的算法程序设计培训,可以借此契机,鼓励学生课后参与到ACM-ICPC 培训。此外,教师还可以利用ACM-ICPC的在线评测系统布置算法编程试题,并设定提交时间,增加学生动手实践的机会。
通过引入项目驱动型实践教学和ACM-ICPC模式实践教学,能够极大地弥补算法设计与分析课程实践教学的不足,使学生动手实践能力在课后得到充分锻炼。
3.3 自主研学方法探索
算法设计与分析课程具有内容抽象、知识范围广、实践性强等特点,只依靠课堂教学中有限的学时是远远不够的,学生的自主学习也极其重要。因此,教师应鼓励学生课后充分利用在线学习资源进行自学。
(1)网络教学资源自主学习
随着我国高等教育信息化程序越来越高,特别是“互联网+教育”行动的推动,开放网络教学资源与网络学习平台迅速发展,比如慕课、学堂在线、微课等。这些开放网络教学资源内容丰富,资源质量较高,而且资源的使用不受时间和空间限制,增加了学生学习的灵活自主性[12]。因此,教师应充分利用丰富的网络教学资源和网络学习平台,为学生甄选出高质量的学习资源,以利于学生课后通过这些学习资源复习巩固所学内容,并根据自己感兴趣的与课程相关的前沿知识进行拓展性学习。关于算法设计与分析课程的网络教学资源,笔者向学生推荐较多的是北京大学屈婉玲教授在慕课平台上开设的算法设计与分析课程。
(2)LeetCode在线编程训练
LeetCode是一个免费在线编程平台,为学生提供一个开放的、自主学习的实践环境。LeetCode提供大量数据结构和算法设计的题目,以供学生练习或竞赛,能够有效地提高学生的编程思维和编程技巧。此外,LeetCode还为每道编程题的难易程度和成功率进行了准确的统计,并且可以显示学生提交程序代码的运行时间和排名,使学生可以了解自己程序的运行效率,激发学生动手编程和自主学习的热情。为了增加学生的编程实践经验,除了布置一些编程作业之外,笔者鼓励学生利用空余时间到LeetCode上通过做题进行锻炼,并鼓励学生分享自己做题的思路和解法以及编程的心得体会。
通过学生在课后利用优质的在线学习资源进行自主学习,与课堂教学形成优势互补,使得学生的算法设计与分析课程的学习进行得更为完整、全面。
4 结束语
根据算法设计与分析课程的特点和教学过程中存在的主要问题及原因,结合教学经验,本文从理论教学、实践教学和自主研学三个方面进行了探讨,构建了基于理论教学、实践教学和自主研学“三位一体”的算法设计与分析课程的新型教学模式,此教学模式将充分调动学生学习的主观能动性,提升学生的动手实践能力和知识应用能力,提高课程教学质量。在今后的课程教学过程中,将会对各种教学改革措施进行实践检验,也希望此研究抛砖引玉,以期为提高算法设计与分析课程的教学质量提供有价值的借鉴与参考。
参考文献:
[1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, 等著. 算法导论(第三版)[M]. 殷建平,徐云,王刚,等译. 北京:机械工业出版社,2013:2-7.
[2] 教育部高等学校计算机科学与技术教学指导委员会..高等学校计算机科学与技术专业人才专业能力构成与培养[M].北京:机械工业出版社,2010.
[3] 秦董洪,陈智勇.算法设计与分析课程教学研究[J].计算机教育,2013(11):98-101.
[4] 南姣芬,楊文雅,李红婵,等.《算法设计与分析》教学过程中的思考[J].教育现代化,2019,6(35):189-190.
[5] 李晋丽,孙春娟,张学波.多措并举提升算法设计与分析课程教学质量[J].电脑知识与技术,2019,15(10):111-113.
[6] 艾明晶.大学计算机课程的研讨式教学模式探索[J].计算机教育,2019(4):56-60.
[7] 苏鹏,刘源.“算法设计与分析”课程的“翻转课堂”教学模式研究[J].科技视界,2018(7):58-59,39.
[8] 季晓慧,姚国清,张玉清,等.计算思维与实践编程能力培养并重的算法设计与分析教学[J].电脑知识与技术,2020,16(4):70-71.
[9] 林劼,戴波.项目驱动型算法设计与分析课程教学方法[J].计算机教育,2014(9):69-71,93.
[10] 敬超,范培.基于ACM/ICPC程序设计竞赛驱动的信息类专业计算思维课程改革探讨[J].电脑知识与技术,2019,15(33):94-95.
[11] 韩丽霞,毕方明.基于ACM-ICPC模式的《算法设计与分析》课程改革与实践[J].现代计算机(专业版),2019(3):78-80.
[12] 曲祥雯.高校计算机教学中网络资源的运用[J].计算机产品与流通,2019(12):223.
【通联编辑:王力】