APP下载

多措并举提升算法设计与分析课程教学质量

2019-05-22李晋丽孙春娟张学波

电脑知识与技术 2019年10期
关键词:计算思维实践教学

李晋丽 孙春娟 张学波

摘要:算法设计与分析是计算机学科中的基础课程,但在实际教学中,存在学生基础不一、理论与技术难以平衡、难以培养计算思维等问题,针对课程教学中容易出现的这些问题,对可采取的解决方案进行探讨,从制定合理目标、科学设置教学内容、合理应用多种教学手段、突出计算思维的培养、将竞赛引入课堂、建立教学辅助平台、改进考核方式七个方面进行分析,旨在突出以学生为中心、以应用为目的,从而促进课程教学质量的提高。

关键词:算法设计与分析;实践教学;辅助平台;计算思维

中图分类号:G642 文献标识码:A

文章编号:1009-3044(2019)10-0111-03

开放科学(资源服务)标识码(OSID):

1 引言

《算法设计与分析》课程是一门面向设计的计算机专业基础课程,处于计算机学科的核心地位,其先修课程包括离散数学、数据结构、高级语言程序设计等,为计算机系统结构、计算机软件与理论、计算机应用技术等学科提供广泛扎实的计算机算法知识基础,也可为其他非计算机专业研究生学生提供相关知识。作为一门基础课程,学生的学习质量至关重要,但在实际教学实施过程中,由于学生的差异性、本门课程自身的特征,存在各种问题,因此有必要研究教学改进方案,持续提升教学质量。

2 教学中容易出现的问题

2.1学生来自各个专业,基础水平差异明显

该门课程是计算机技术、软件工程专业学位硕士研究生必修课程,同时作为其他专业的研究生选修课程。学生来自不同专业,先修课程不同,有的学生具备数据结构、程序设计基础知识,而有的学生则比较薄弱,尤其在程序设计方面欠缺;有的学生没有接触过算法相关内容,而有的学生参加过算法相关竞赛,对算法比较熟悉;有的学生是应届生,具有较强的专业基础,但缺乏实践经历,有的学生是在职干部,工作多年,专业基础薄弱,但具有较多的实践经验;这些各方面的问题都给教学带来一定的难度,需要在整个过程中既兼顾薄弱者,又要让能力强的学生有更多收获。

2.2重应试、轻实践,教学内容缺乏针对性

高等教育重在培养应用型人才,算法设计与分析是一门实践性较强的课程,课程学习中一方面要培养学生学习知识的系统性和完整性,而在应用方面,则要求学生能够学会使用算法解决实际问题,即要培养学生解决实际问题的能力。在教学过程中,教学内容缺乏针对性,更多的是通过对经典算法的实践来加强应用。而要把算法真正应用于解决实际问题,针对不同的问题,如何设计算法,这在本门课程的教学中是一个重难点。

2.3学生缺乏对理论知识的学习兴趣

算法设计与分析课程中需要理论知识的支撑,但学生往往反映理论枯燥,缺乏学习兴趣,教师为了让学生掌握系统的知识,容易出现“满堂灌”的现象。如何平衡好理论与技术的关系,保证学生充足的时间上机实践的同时,又要让学生乐于学习理论知识,这也是教学中需要关注的问题。

2.4计算思维的培养是难点

计算思维是当前计算机领域教学中比较关注的一个问题,即了解计算机是如何思考的,学习和计算机沟通,让它帮我们高效地处理事情。具体来说,就是利用计算机科学的基础概念和方法对问题进行描述、建模、求解[1]。计算思维无处不在,是解决问题的有效工具,应该在本门课程教学过程中,融入计算思维的培养,这也是教学实施的一个挑战。学生往往反映可以学习和理解现有的算法,但遇到一个要求解的问题,却难以分析,不知如何将具体问题抽象成计算机可以理解的模型,不知如何一步步推理设计出解决问题的方法。

2.5缺乏支撑教学的实例库

本门课程实践性强,学生在了解算法思想的基础上,需要加强对问题求解的算法实践。目前主要是以选定教材为基础,要求学生参照教材、课件及课后习题,动手完成相关算法的验证与设计。但由于学生基础不一,需要建设层次不同的实例库,供学生练习,这就需要教师投入一定的精力,从大量的算法实例中进行精选,设置层次类别,以便于学生阶梯式学习。

3 教学中可采取的解决方案

3.1制定合理的目标

要想提高教学质量,必须确立明确的学习目标。学习目标包括知识技能目标、思维意识目标和情感价值目标。学生普遍反映本门课程难,这是因为本门课程的综合性强,不仅要让学生掌握算法设计的基本理论和主要方法,初步具备对算法复杂性进行正确分析的能力,并能举一反三,将所学内容应用到算法设计实践中去,为后续课程的学习、课题研究奠定必要的算法设计基础。要提高学生对计算机课程的学习兴趣和热情,引导学生注重将创造性思维活动与科学严密性论证紧密结合,在学习、实践中逐步养成善于思考、肯于钻研的良好习惯,激发自觉投入科学研究的热忱。

3.2科学设置教学内容

课程内容既要包含基础,又要突出重点,还要设置进阶内容。本门课程共设了九章内容,旨在让学生掌握各类算法的基本思想:第一章重点讲述算法复杂性分析所用的数学方法;第二至八章为本课程的重点,其内容为算法设计的主要方法,包括排序算法、递归与分治策略、贪心算法、动态規划算法、回溯算法、分支与限界算法等,该部分要注重理论学习与设计实践相结合;第九章随机化算法与NP完全性理论是当前计算机算法领域的热点研究课题,设置为本课程的扩展内容。对于基础比较差的学生补充数据结构等基础知识的讲解。总体来说,内容设置科学合理。

在教学过程中,应该把握重点,算法的设计与分析思想应该贯穿整门课程的教学中,如第一章重点讲解算法分析的数学符号和方法,但在后续章节的讲授中,应该把第一章算法的分析方法贯穿于其中;如讲解0-1背包问题的回溯法时,应该与动态规划求解法进行比较,突出不同算法的设计思想。

由于学生基础水平不同,可以用算法来屏蔽专业差距,抛开编程语言的细节,重在掌握算法的核心思想,不限制学生所用的编程语言,让学生选择自己熟悉的语言实现。还可让编程能力比较低的学生预先熟悉环境,自学程序设计相关知识;而对于专业技能比较高的学生,设置比较有难度的题目,开创其思维;也可结合学生研究课题,提供前沿文章供研究。

3.3合理应用多种教学手段

该门课程是一门理论与实践结合的课程,遵循素质教育、创新教育和研究式教育的基本原则,以计算机算法设计与分析的理论和方法为重点,按照理论与实践相结合的教学模式,采用“精讲、自学、研讨、编程实践”多种手段结合的方式,调动学生学习的积极性,增强学生的学习自主性。

教学方式上可以结合翻转课堂,应突出以学生为中心,适当地选择部分内容让学生来当“教师”,如讲述动态规划算法的基本思想及实例后,让学生对另外的实例应用进行分析,并比较动态规划与分治法区别,动态规划算法与贪心算法的共同点等。还可采用研讨式教学方法,选择学生感兴趣的内容,学生为主角,讨论交流自己的观点;教师进行主持,引导学生提问或回答问题,并适当纠正或补充学生的观点,最后进行评价总结。学生自己当教师和研讨式教学都可以提高学生的学习兴趣,提高上课的听课效率,也锻炼了学生的胆量和表达能力。

该门课程应用面广、操作性强,只靠课堂学时是不够的,学生的自学也尤为重要,尤其对于基础水平较差的学生,教师应鼓励其充分利用课外时间进行自学。教师可以给学生提供参考书籍等资源,以利于学生自学;也可以让学生搜索与算法相关的前沿文章,进行分析研究。

3.4突出学生实践、培养计算思维

针对本课程所体现的创造性思维活动与科学严密性论证结合紧密的特点,注重理论学习与实际问题结合,强调学生动手实践,突出课程的设计性。对于特定算法设计策略,通过生活中的例子引入,然后介绍其基本思想、主要特点,再讲解计算机科学和应用中的经典实例问题解决方法。教学过程中,注意实例由简到繁,对每个实例算法所需的时间和空间进行分析,使学生在学到常用精巧算法的同时,又能通过对算法设计策略的反复应用,牢固掌握这些基本策略。对某些经典问题(如背包问题、TSP问题等)选择用不同的策略求解,比较分析各种策略的优缺点,使学生理解各种算法策略的特点、适用场合,并能融会贯通,即在求解实际问题中,合理地选择所需要的策略[2]。要求学生动手实现经典问题的解决,并设置一定数量的算法设计题目,在打牢算法设计与分析的理论基础的同时,引导学生对问题进行多角度思考,突出解决实际问题,培训学生的计算思维。

在教学中突出任务驱动、以问题为中心、应用实例教学法,让学生随时反映学习中存在的问题,并及时解决;对于每种算法,多讲与实际应用结合的实例,通过实例加强理解。在学生实践方面,需要设置不同难度类型的题目,包括:对经典算法的验证型、对已有算法的分析改进、综合性问题解决。由于学生水平不同,可针对不同学生设置不同题目,既要保证学生基础知识的掌握,又要鼓励表现突出的学生大胆创新,全面提高学生的编程实践、算法设计、创新思维能力。

3.5合理将竞赛引入课堂

算法设计问题千变万化,必须有大量的实践才能真正掌握算法。目前每年都会举办程序设计竞赛,较著名的有:ACM-ICPC、TopCoderOpen、蓝桥杯、华为软件精英挑战赛、微软编程之美等,如果学生积极参加此类竞赛,既能提高学习兴趣,又能通过竞赛掌握更多的知识;如果有幸能从竞赛中脱颖而出,对学生学习是更大的激励。教师应鼓励学生积极参加竞赛,也可以选择ACM竞赛中的题目进行课堂讲解和分析,提高学生将算法应用于工程实践的能力。

教师可以参照ACM竞赛的方式和内容,对学生分组,选取合适的题目,举办班级内竞赛,促进学生的学习动力。竞赛内容可以选择算法分析题、算法改进题、算法设计题,对于每类题目,教师需要预先研读,能够正确分析学生的解答,教师还可以选出优秀的学生作品让学生讨论分析。[3]

3.6建立教学辅助平台

教学辅助平台可以给学生提供资源,包括课件、课后练习、参考代码、视频等辅助资料,同时可以提供交流互动功能,让学生与教师实时交流、在线答疑等,也可以进行在线考核,完成教师给定的题目,并上传作业等,这些是传统的教学辅助平台所具备的功能。

为了更好地辅助学生学习,将传统教学平台改进:一是建设答题闯关式的系统,平时测验均可通关闯关完成,教师可以通过平台查看学生的任务完成情况;二是参照ACM竞赛的在线评判模式,学生的任务完成情况由系统自动判阅,教师可以根据学生完成任务运行时间的统计进行评价分析。这不仅提高了教师的教学效率,由于富有挑战性,还会促进学生学习的积极性和有效性。[4]

教学辅助平台中还要重视实例库的建设,教师收集实例并进行分类,区分类型和难度,实例库可以用于支撑教师测试或学生自学。实例库中应该至少覆盖算法的五种基本策略:递归与分治、贪心法、动态规划法、回溯法、分支限界法,对于随机化算法等可设为扩展内容;在类型上,设置分析性、设计性两大类,以设计类为主,设计类分为经典验证型、必选设计型、可选设计型,实例分层推进,学生根据自身的需求,在实例库中选择实现,从而加强了根据学生特点的针对性教学。[5]

3.7改进考核方式

考核的目的一方面是检验学生掌握知识的程度,另一方面是督促学生学习的积极性。由于本門课程理论与实践结合紧密,因此,不能单纯地以闭卷考试作为考核的方式,而应加入对算法设计能力的考核。可设置多种、多阶段的考核方式:一是可以布置不同难度、有针对性的作业进行阶段性测试,主要通过上机实验课来完成,要求在规定的时间内完成给定任务;二是设置期中测试和期末测试,期中测试要求学生解决难度适中的综合性问题,期末考试则需要测试知识掌握的系统性、全面性,采用闭卷考试方式。学生综合成绩则由平时测试成绩和考试成绩综合判定,既要测试学生基础知识的掌握程度,又要测试对问题的解决能力。

4 总结

本文探讨了算法设计与分析课程教学中存在的主要问题,并从解决这些问题着手,结合教学经验,从教学内容、教学手段、考核方式等多方面进行了探讨,重在突出以学生为中心、以任务为驱动、培养创造思维的教学方式,从而增强学生学习的积极性,提高课程教学质量。在以后的教学工作中,将会对各种改进措施分别研究,制定更细化的实施方案。

参考文献:

[1] 孙亚红. 《算法设计与分析》课程教学中计算思维的培养研究[J] . 电脑知识与技术,2012(16):3910-3911.

[2] 朱晓勇.《算法设计与分析》教学大纲[EB/OL]. 2018.11.20. https://wenku.baidu.com/view/c3c21d3c3a3567ec102de2bd960590c69ec3d8b8.html.

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

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

[5] 陈媛,卢玲. 专业学位硕士算法设计课程立体案例库设计与实践[J]. 计算机教育,2017(5):79-81.

【通联编辑:王力】

猜你喜欢

计算思维实践教学
基于计算思维的软件类研究生高级算法课程教学研究
基于计算思维程序设计的军事案例研究
程序设计课程中计算思维和应用能力培养问题研究
茶学专业校企合作实践教学探索
《电气工程毕业设计》 课程的教学设计
研究型学习在传热学实践教学中的应用
思想政治理论课实践教学研究述评
高职院校商务礼仪课程教学改革探索刍议