多元结合“算法分析与设计”课程教学的思考与探索

2018-03-31 12:22刘笃晋
电脑知识与技术 2018年6期

刘笃晋

摘要:算法分析与设计是计算机专业学生必须掌握的一门极其重要的核心骨干课程,本课程学习需要学生具有扎实的编程基础和较强的抽象思维及创新能力,传统纯粹重视算法理论的教学方法下学生学习效果普遍不太理想,教师教学难度较大,为改进传统的算法分析与设计课程教学,采用多元结合的教学方式,实际的教学证明,多元结合的教学方式在强化学生的算法思维能力和独立动手解决实际算法问题能力培养中具有重要作用。对课程在教学中的问题进行了深入分析,从身边的算法、算法的贯通性、项目对课程学习的驱动性等多元结合的教学方法进行了研究,为推进算法分析与设计课程的教学提供了一条有益的思路。

关键词:算法分析与设计;多元结合;身边的算法;贯通性;驱动性

中图分类号:G712 文献标识码:A 文章编号:1009-3044(2018)06-0100-02

1引言

算法分析与设计教学是一门在教师引导下以学生为主体培养学生具有算法创新精神和独立算法问题分析、解决能力的教学活动。本课程教学的成功与否直接关系到计算机专业人才培养目标的成败。在课程教学中具有直观性、多变性、突发性、综合性等特点。算法分析与设计课程也是计算机相关专业可持续发展的必要条件H。要培养高质量的全面发展的计算机专业人才,必须改革算法分析与设计教学,充分发挥教师主导、学生主体的教学特色,紧密依托项目,挖掘学生的潜力。

算法分析与设计是一门面向设计,且处于计算机学科核心地位的重要课程,主要任务是理解掌握算法设计的主要方法,培养对算法计算复杂性正确分析的能力,为独立设计算法和对算法进行复杂性分析奠定坚实的理论基础,对每一位计算机专业的科研、教学及从业人员都是非常重要和必不可少的,由于课程相当抽象,理解难度大,且算法设计与分析是一种创造性思维活动,同一个问题可能有多种不同的方法来解决,因此本文对当前本科院校算法课程中遇到的普遍问题进行了探讨和分析,通过身边的算法、算法的贯通性、实际项目的驱动性等多元结合的方法进行教学,以提高学生将所学知识转化为实际能力的水平,教学效果明显提高。这种多元结合的方法,对其他课程的学习也有良好的借鉴意义。

2算法分析与设计课程在实际教学中的问题分析

通过与学生的多次交流和对学生实际能力的反复测试,并与成都理工大学、四川大学、西南民族大学等兄弟院校同行的认真探讨,算法分析与设计这门课程教学中普遍存下以下问题:

2.1实际教学中普遍强调重设计轻实现

相当多的学校在实际教学中要求学生对某一需要解决问题只要求写出算法即可,不要求实现或很少要求实现甚至要求学生课外去实现,但是在课外许多学生根本就没去实现,由于学生水平的原因,相当部分学生也难以实现,算法的不实现导致学生很难发现自己算法中的错误,而算法的设计是一项创造性工作,同一个问题,不同的学生可能有不同的设计,老师由于时间的关系又不可能将学生所有算法都去检测一遍,因而造成相当一部分学生虽然课程学完了,但没有实践检验,觉得头脑空空,好像学的东西全都是虚的,缺乏自信心。

2.2實验内容大多以单一的具体为主,缺乏综合性训练

由于本门课程难度大,许多老师担心学生完成不了,给学生实验的内容都是相当简单的,甚至是以前学习其他课程学过的,虽然将其他课程内容进行算法练习无可厚非,但纯粹的单一训练,使学生只为练习而练习,不知道究竟该算法在实际运用中如何用,有什么用,过量的单一的训练,使得学生学的知识是一盘散沙,课程完成后,不会用于实际,无法进行综合性实际运用,造成了和社会主流需求脱节。

2.3实验教学中知识拓展度不够,缺乏对学生深层次能力的训练

在算法的实验教学中,相当一部分学生只是在老师指导下,完成了字面的实验内容,完成后直接提交给老师就算完成,须知算法设计是一项相当具有挑战性工作,在实际项目攻关中,居于核心地位,很多情况下表面看来对算法问题的已经解决,深入研究才发现,表面算法的提出只是在具体条件约束下的低效解决,没有考虑到算法在高维问题下的广度性和深度性,未进行深层次的算法完成,只是完成了问题算法约束条件下的低维、低效内容,也就是说只达到了学习目标的一部分,该实验内容的拓展部分应该由学生继续深入学习或经团体深入讨论完成的却没有完成,如何将算法在深度和广度上表达得精练和高效,这本来由学生继续学习能够很好完成的重要部分,却没有实现,这些能力的缺乏,使得学生毕业后和高素质人才的标准相距甚远。

3教学方法改革思考与探索

为了解决算法分析与设计课程教学中的诸多问题,紧扣“算法分析与设计”课程大纲,本文进行了积极的探索,并结合当前主流的教学手段,采用从身边的算法、知识融会贯通以及项目驱动等多元结合的教学方法,将教学内容进行扩展。对计算机专业学生来说,算法分析与设计这门课就是要学会计算机解决问题的方法,让学生走出“算法只在计算机中,走出计算机好像就没有算法的误区”,充分发挥多种交流手段和方法,学生之间以小组为单位自查、自纠、自励,并定期举行专题讲座以激发学生不断创新。

3.1从身边的算法开始学习

算法是指解决问题的一种方法或一个过程,算法离每个人并不遥远,但许多同学一听说算法马上想到的是抽象复杂难理解的东西,总觉得算法是一门高深玄妙的课程,没有学习之前,心中就开始感觉到压力,带着这种压力去学习,结果可想而知,其实算法在每个人身边,本文通过一个具体的身边案例让学生明白,算法并不陌生,比如下面一个具体例子:

某工厂生产有1000000只灯泡,规定灯泡使用寿命1000小时以上的为合格,为判断这批灯泡是否合格,请结合自己所学知识,采用合适的算法来解决这一问题?

检查产品合格这个例子,在身边是经常遇到的,比起教材中哪些复杂算法,学生更容易理解,通过分析讲解,知道要解决这个问题,只要运用概率知识,采用均值和方差结合就能解决,因为单用均值这个指标是无法解决的,根据高等数学知识可知,均值表示样本的整体质量,如样本有100只灯泡,若50只使用寿命2000小时,另50只使用寿命0小时,若只按均值来说,这100只灯泡使用寿命就是1000小时,按此方法这批灯泡就是合格的,这种方法明显是错误的,但若将均值和方差结合起来,无疑就能解决问题,因为方差可以限制偏离程度,使得灯泡的整体寿命计算时若偏离程度过大,就可以判断为这一批灯泡不合格,因此,可以采用均值来判断整体质量,用方差来判断偏离程度,两者方法结合就能较好判断出灯泡的质量情况。可以看出算法其实在我们日常生活中是经常遇到的,采用算法解决问题,也不是玄妙无比,只要运用所学知识,就会迎刃而解。通过这种类似方法,使学生由浅入深的理解了算法的本质,激发了学生兴趣。

3.2将所学课程知识融会贯通

算法分析与设计是一门本科生高年级或研究生的课程,这是由本门课程的特点决定的,这时学生的专业知识已基本具备,学生已学完大部分的重要课程,这门课程必需的高等数学、程序设计、数据结构知识都已学过,因而这时开设这门课程条件已完全成熟,但相当一部分学生虽然已经学完了这些课程,但却无法综合运用,都只能是将自己思维定格在各科单独的课程里,这与算法是程序的灵魂思想格格不入,如何使学生能将所这知识融会贯通,本课程教学中采用在理论讲解中每个问题所涉及的课程给学生讲全面讲透彻,使学生深刻理解某算法在哪些课程中发挥作用,在哪些课程中居于何种地位,使某一算法能将一门或几门课程的几个知识点连接起来,真正把算法讲活、讲透,如课程讲到动态规划算法,让学生明白动态规划算法实际上就是一种解决最优化问题的算法,对于最优化问题的解决,让学生回忆在高等数学里学过的拉格郎日乘法,在约束条件下求极值问题,实际上就属于一种最优化问题,这样从学生熟悉的知识引导学生逐渐进入到新的知识,让学生能较容易的理解什么是动态规划算法,进一步给学生讲解,以后还要学习的粒子算法以及蜂群算法都是解决最优化问题的算法;在实际教学中要求每一个学生采用多个角度写算法,并力求将每个算法实现,并比较每个算法的复杂性,通过这种循序渐进的教学方法,使学生能学得懂、学得快。

3.3以项目为驱动进行学习

通过对基本概念和一些基本问题算法的学习,学生已能基本解决一些实际问题,但是与社会主流的需要还有差距,必须进行具体的项目训练,才能使学生能真正实现和社会需要无缝连接,如让学生学习运用小波变换进行图像去噪,首先從理论上让学生明白,小波变换和学习过的傅里叶变换一样,都是一种变换,不过是选择的基不同罢了,这两种变换都不过是通过选择不同基的情况下,将原函数表达出来,两种变换都是将原信号变换后,除去噪声信号,再通过逆变换恢复,以此方式去噪,通过反复实验,让学生理解小波变换的不同级数的作用,以及产生不同结果图的原因。在项目驱动教学中,要充分发挥学生的创新性和能动性,教师要多加引导,同时让学生在每个实验小组中充分自由表达自己的观点和想法,通过集体知识解决问题,达到共同进步的目的,以达到学好知识的同时也培养良好的沟通和团体协作能力。

4结语

本文针对算法分析与设计课程教学过程中的实际问题,采用灯泡使用寿命检测之类的学生身边算法,算法的融会贯通性,实际项目的驱动性,这种多元结合的教学方法、教学设计以及教学理念,不仅提高了学生学习积极性,而且明显提高了教学质量,达到了较好的教学效果,也为其他课程的教学作了尝试和铺垫。