算法课程多层次教学改革与研究

【www.zhangdahai.com--可行性研究报告】

摘要:针对算法课程教学中存在的问题,结合多年教学经验,提出构建以启发式课堂教学为主,自主性实践教学为辅的多层次课程教学体系,分析各教学环节的教学目标之间的区别与联系,并对教学效果进行探讨。

关键词:算法;课堂教学;实践教学;多层次

作者简介:井超(1980-),男,天津人,中北大学计算机与控制工程学院,讲师;靳雁霞(1973-),女,山西太原人,中北大学计算机与控制工程学院,副教授。(山西 太原 030051)

基金项目:本文系中北大学校级一般教研项目的研究成果。

中图分类号:G642.0 文献标识码:A 文章编号:1007-0079(2014)03-0117-02

算法是计算机及相关专业的核心专业课之一。该课程系统介绍了算法设计及分析的常用方法,以实例形式对各种算法设计方法进行阐述,并对算法的复杂性进行讨论,对程序设计有显著提高,是计算机学科的重要专业理论课程,对提高学生程序设计的能力有很大帮助。“程序=数据结构+算法”这一公式明显显示了算法课程的重要作用。

算法课程的教学活动由理论教学和实践教学两大部分组成。一般来讲,算法课程的理论教学主要围绕“算法设计的多种方法,算法分析的数学分析”为主线展开讨论。算法设计的多种方法主要有:蛮力法、分治法、分治法的变种减治法和变治法、动态规划法、时空权衡、贪心法、回溯法和分支限界法等等方法展开讨论,各种方法针对不同类型问题有不同的设计思路;算法分析的数学分析方法主要使用对算法基本操作的计数法来衡量算法的阶,以此来分析算法的复杂性。笔者发现多数学生感觉这门课内容复杂、抽象,所介绍的方法难以理解和掌握,难以把握要点,无法转换成实用技能。原因主要在于课程所研究的方法抽象,各方法的特定使用性较强,教师讲授课程时使用的方法及案例特定性强,难以应变。学生遇到问题时对问题背景不清,难以应用理论知识,面对特定方法与具体问题之间的关系往往无所适从。要解决这个问题,课堂教学应该更多地交代方法使用的场合和模式,同时要注重实践教学环节,使学生真正掌握所学方法,并转化为分析和解决问题的能力。

为此,结合多年来讲授算法课程的教学改革实践活动,笔者提出以启发式课堂教学为主,自主性实践教学为辅的多层次课程教学体系。

一、现有算法教学存在的问题

目前,中北大学(以下简称“我校”)计算机及相关专业的培养方案中,算法分析与设计课程的总学时为32学时,其中讲授课占24学时,课内实验占8学时。另外,还配有独立开课的算法课程设计,时间为2周,采用开放式实验课。课时数中讲授部分所占比例较小,授课主要采用启发式方式,没有充分的时间详细介绍,学生课前预习、课后复习就显得比较重要。

同时,由于算法属于该系列课程中的高级课程,前修的程序设计、离散数学、数据结构等课程的基础对这门课程的授课产生很大影响。有些学生由于前修课程掌握不好,因此对这门课程的学习产生抵触情绪。这样带来的效果是学习自觉的学生会学得很好,而不做课前预习和课后复习的学生明显跟不上进度。

讲授课存在的问题有:前修课程介绍过的问题大家基础不一,简要讲解效果参差不齐;讲授概念性知识时进度不一致,部分同学仍然很吃力;实践性和设计性知识有部分同学由于基础等多方面原因完全放弃,采取不配合的态度。

实验和实验周的授课学时基本够用,但存在的问题有:课内实验多以验证型为主,相关算法及实现在教材、参考书及网络上很容易获取,许多学生下载后直接编译运行,导致对算法是否正确及实现时的技巧无从掌握;难度稍大的设计型、综合型实验成为少数同学的定制实验,多数同学由于基础等原因无从下手,使得这种实验不能达到预期效果,对激发学生兴趣不能产生足够的效果;课程设计题目设置难度难以掌握,针对学生程度不同,一部分学生感觉时间过长,而另一部分同学则无从下手,使得学生对考核结果看法不一。

二、课堂教学体系层次划分

针对以上问题,有必要改革课堂教学的方式,构建科学的、合理的课堂教学体系。

1.概念性知识

一门课程总有新知识讲授,这类概念性知识对绝大多数同学都是新知识,所以需要使用足够的课堂时间进行讲授。在算法这门课程中介绍的一些概念都是先阐述概念本身,然后进行案例叙述,这部分知识是讲授的核心和主要目标,因此对这部分的讲授显得尤为重要,同时也是进行后续课程讲授的基础。

在讲授这部分内容时,笔者发现以启发式方法介绍显得效果更好。在一次课程结束之前,先告诉学生下次课程所讲授的大体内容,这样可以启发学生下去进行预习。下一次授课之前,先用几分钟进行这部分内容预习效果的提问,可以督促学生做好课前预习,使学生对新讲授内容有大致了解,进而促进教学效果。笔者采用此方法进行教学收到较好的效果。

2.实践性知识

算法课程中很多知识点是需要进行实践的,特别是主要的算法设计方法。这些方法在讲述完方法本身和使用条件之后,需要用一些实例来进行实践。这不可避免地使用到程序设计和数据结构的知识。笔者在讲授这部分内容时发现,这部分知识本身有一定难度,学生初学有一些困难需要克服。但这还不是最困难的,由于用到程序设计和数据结构的知识,有部分同学尤其是基础薄弱的同学对这些内容的理解就会遇到很大困难,因此这部分内容的授课效果总是不太理想。极端的例子有同学一遇到程序设计的内容就产生抵触情绪。

对这部分知识,辅助以必要的实例是很重要的。笔者在讲授过程中尽量先使用自然语言描述算法的框架,再用伪代码进行实现,这样可以尽量减少基础薄弱同学的学习困难。但这样也会带来一个问题,那就是学生在做实验时需要将算法重新修改,以成为编译器识别的源代码。

3.设计性知识

算法课程毕竟是程序设计系列课程中的高级课程,其本身是有一定难度的,体现在算法课程中设计性知识所占比例比较大。一方面是算法效率的分析,就具有一定的灵活性,需要学生灵活运用所学方法。另一方面是算法设计的各种方法,例如同样是解决递归问题,使用回溯法和分支限界法的情况就不一样。回溯法是深度优先,而分支限界法是广度优先,二者思路的差异性决定了解决问题的类型不同。课堂讲授这些算法设计方法时,一般都是先讲方法本身和使用条件,然后用多个例子来使用该方法。而学生遇到实际问题时,没有预先的方法介绍,因此许多学生在学习了各种算法设计方法之后,遇到实际问题时依然觉得无从下手。表现在进行算法课程设计时,如果题目中没有明确要求使用哪种算法,一部分同学就对该问题无从下手了。对这种类型的知识,要求学生在课后进行大量练习,才能体会各种方法的异同和使用条件。掌握这些技术是开设算法课程的目的和最高要求,但是笔者发现不同学生对这个问题的掌握程度差异巨大,这也是现有教学模式需要改革的地方。

三、实践教学体系层次划分

根据上述问题及课堂教学体系层次划分,笔者也有针对性地划分了实践教学体系。

1.验证性实验

验证性实验是实践教学的基础,但是对于算法课程由于有前修课的存在,这部分实验是否设置一直存在很大争议。一些观点认为应该设置,理由是设置验证性实验可以让学生易于掌握所学内容,便于上手,容易成功。另一些观点则认为不应该设置,本身算法课程的前修课已经开设了一些验证性实验,作为整个系列课程的高级课程,算法不应该再开设这些实验。

笔者认为,双方的争论都有道理,并且由于学生层次不同,开设验证性实验对程度较好的学生不必要,而对程度较差的学生则这部分实验依然不容易完成。采取的办法是每个实验都开设为几个项目的选作实验,其中包含部分验证性实验,以便学生根据自己的程度做出合理的选择,同时计分时根据不同选择的实验进行计分。这样一方面对落后的同学可以完成实验,同时对能力较强的同学可以选择进行挑战大的实验。从三届学生进行实验的效果来看,这样做可以激发学生的实验积极性,避免只从网上找答案的情况发生。

2.设计性实验和综合性实验

设计性实验和综合性实验从内容和难度上都要比验证性实验复杂得多,而且综合性实验更难一些,主要考查学生对所学习知识的理解和应用情况。设计这样的实验可以考查学生对所学知识的综合掌握情况,笔者在教学过程中曾经采用不同级别难度的设计性实验和综合性实验,收到的效果依然有差异。表现在对一部分同学难度过大,不能完成,而同时仍有一些同学依然能够轻松完成。鉴于以上情况的出现,笔者采取的办法是实验初始给出解决问题的思路,但不给出具体步骤及源代码,到实验即将结束时,给出做得较好的同学的源程序做参考,这样使遇到困难的同学能够有参照。

3.课程设计

对算法课程设计的要求是希望同学们在完成算法课程的基础上,掌握一些解决问题的综合能力,这样的题目一定是属于综合性实验的。同时由于算法课程设计一般是两周时间,因此,此类题目要求用多种方法求解。这样带来了一个问题是,针对那些算法课程没有掌握好的同学略显无从下手。题目无论从工作量还是难度,都应该比课内实验有所提升,因此,做好对同学的跟踪辅导就显得比较重要了。

四、解决方案

针对以上讲授课程和实践教学过程中存在的层次划分,结合授课过程,笔者给出了解决方案

概念性知识:主要以教师讲授为主,讲解清晰之后要求学生做相关的验证性实验及思考题。由于这部分难度不大,并且参考资料众多,学生只要认真学习就可以很好掌握。

实践性知识:这部分内容属于学生必须动手解决的问题,授课教师由于时间所限,采取抽查和重点评估为主。针对基础不太好的同学主要让他们能随时动手,并重点督促,以使他们体会到乐趣并自觉动手。

设计性知识:这部分属于分类提高的内容,不对所有同学要求,旨在拔高学生的解决问题能力,以设置选择性实验为主,同时讲解时以分类辅导的方式进行。

验证性实验:由于这部分内容较多,并且易于从参考资料、互联网等渠道找到答案,因此不占用课堂时间和实验时间讲解。有遇到问题的同学进行单独辅导,并且鼓励同学之间进行相互讲解。

设计性和综合性实验:由于这部分难度较大,必须占用课堂和实验时间进行讲解,实验进行中可以根据共性问题进行随时辅导。采用的方式以实验前给出任务及大致解决方案,实验之后提供参考源程序的方式。

课程设计:由于这部分实践环节有一定的难度和工作量,因此要求任课教师根据不同情况进行分类辅导,并设置多个时间节点,对于不能按时完成进度的同学考虑进行辅导和及时督促的办法解决。

使用以上解决方案,在针对3届学生进行针对性辅导后,算法分析与设计课程的平均分数有5分以上的提升,算法课程设计通过率增长了10%,可以看到该方案能够提高学生的自觉学习,激发学生的学习兴趣。

五、结语

课堂教学和实践教学是学生在大学阶段获取知识的主要授课方式,更好地吸引学生并使学生能够享受到获取知识的乐趣是当代教育工作者孜孜以求的目标,这样也可以更好地调动教师和学生的积极性。为此,笔者将课堂教学的内容和实践教学的内容各自划分成不同的三类,采取多层次的教学体系,并在实践中取得了一些进步。期望这样的探索能够为算法课程教学改革起到借鉴的作用,文中提到的内容还需要今后进一步验证、修改和提升,也希望得到大家的批评和建议。

参考文献:

[1]杨波,肖自碧.信息与计算科学专业“算法分析与设计”研究性教学探索[J].中国电力教育,2013:,260(1):62-63.

[2]邓沌华,李源.数据结构多层次渐进式实践教学体系构建[J].计算机教育,2012,24(12):72-76.

[3]张彬连,徐洪智,覃遵跃.数据结构课程教学研究与改革[J].计算机教育,2013,4(2):30-32.

[4]刘晓静,黄维通,王晓英.西部地区CDIO理念下的数据结构与算法课程建设[J].计算机教育,2013,17(9):107-111.

(责任编辑:王意琴)

推荐访问:教学改革 多层次 算法 课程 研究

本文来源:http://www.zhangdahai.com/shiyongfanwen/kexingxingyanjiubaogao/2023/0404/579401.html

  • 相关内容
  • 热门专题
  • 网站地图- 手机版
  • Copyright @ www.zhangdahai.com 大海范文网 All Rights Reserved 黔ICP备2021006551号
  • 免责声明:大海范文网部分信息来自互联网,并不带表本站观点!若侵害了您的利益,请联系我们,我们将在48小时内删除!