摘要:算法课程在高职院校计算机相关专业建设中占有重要地位,但在教学环节中也确实面临一些亟待解决的问题。本文主要总结和探讨了计算机算法课程的重要性和必要性,以及通过任务驱动的教学模式、科学选取教学内容以及充分调动学生主观能动性等方法,提高教学效果的一些教学实践工作。

关键词:高职 计算机算法 教学

一段时间以来,国内一些高职院校计算机相关专业对于算法课程的重视程度呈下降趋势,甚至在人才培养方案中,完全删除了算法课程。然而,在与IT行业、企业技术专家以及人力资源部门负责人的沟通中,我们深刻感到很多毕业生非常欠缺算法理论知识与实践经验,以至于影响了他们在工作团队中进行业务交流和承担具体软件开发项目的能力。毕业生给予我们的反馈信息也表示,在企业IT岗位上对于算法缺乏概念认知,导致自身对于软件工程领域工作任务的理解较为肤浅,与团队成员沟通也较为困难。

1 开展计算机算法教学的必要性和重要性

算法是计算机科学体系中的核心所在。就提升软件运行速度而言,优秀的算法设计丝毫不亚于硬件技术升级在这方面所做出的贡献。另一方面,计算机算法的学习过程也就是培养学生逻辑思维以及严谨、敏锐编程作风的过程,而这些也恰是一个合格程序员所应具备的起码素质。很多同学面对复杂程序设计总是无从下手、一筹莫展,他们可以读懂每一行代码,但是却无法推演程序的执行结果,甚至对程序的结构与功能也一知半解,面对稍微复杂一些的实际问题,学生可能就不知道怎幺把它装化为算法模型。我们的学生仍然停留在设计一下MDI、写写简单的Class或用SQL语句实现查询等基础的编程工作上,对于一些需要用到算法工具的编程问题就避而远之,以至于在工作岗位上力不从心、处处被动。需要特别指出的是,计算机算法对于计算机科学技术发展以及程序员培养所起到的重要意义,充分说明了计算机算法学习过程的重要性,而且这种重要性一定是针对包括高职学生在内的全体高校计算机相关专业的学生,因为他们都将是未来潜在的程序员和IT行业技术人员。我们确实有一些高职计算机相关专业,没有给予算法课程在专业建设中所应有的地位。

事实上,计算机编程平台从BASIC到C\C++、Java,再到今天炙手可热的Python、Ruby等等,可谓是层出不穷,令人目不暇接。这种编程环境的快速变迁不仅仅体现在技术刊物上,也体现在IT企业的招聘启事中、体现在高校的人才培养方案中。我们的学生们往往是一个新的开发平台才刚刚熟悉,又一个新的编程环境就已经兴起,以至于,很多同学也将学习精力主要投向了学习编程平台的使用上,认为只要多掌握几种编程技术就多了几分就业成功的希望或是认为学习最新的语言、技术、标准就是最好的提升就业竞争力的方式。我们有责任在教学中向同学们明确,在快速发展的编程技术中,万变不离其宗的是计算机算法。在软件企业具体项目的代码设计中,技术人员主要谈到的是算法设计问题,而不是某一种编程环境的使用方式。很多优秀的程序员都认为,如果将各种新兴的编程环境比作“十八般武艺”,那幺,算法基础就是使用这些“武艺”的“内功心法”。也就是说,如果你刀枪剑戟都精通,但是气力不够,那你还是难以走向真正的战场。因此,一名合格的职业程序员必须具备一定的计算机算法基础。

2 计算机算法课程要重视教学方法的改革

教学中,要针对高职学生专业学习的具体情况,不追求“大而全”,而应着重于“小而精”,在教学内容的选择方面,坚持有所为有所不为的教学理念。比如在讲授算法时间复杂度方面的问题时,我们可以与同学们共同探讨较为简单的选择排序算法的时间复杂度问题,同时充分利用学生对于冒泡排序算法较为熟悉的特点,可以进行两种排序算法在时间复杂度优劣方面的比较,而对于较难理解的合并排序算法时间复杂度分析问题则可以适当简化。同样的,在讲解快速排序时,我们也没有必要纠结于划分元(Pivot)的选择方式上,可以将主要教学时间着重于函数的递归调用与分治算法的关系,用以说明分治算法的主要特征和价值。对教学内容做适当的取舍,既可以阐述算法思想和方法,也可以充分利用学生已有的认知结构,从而提高教学效率。

教学中,尤其是在实训期间,要特别关注学生应用算法模型展开编程实践的过程,切实避免将算法课程仅仅当做通识性的理论课,而应采用教学做一体的教学方式,使学生在实践中体会算法的应用价值。为了提高实践教学的效果,教师要科学地设置教学情境,将算法问题融入构成这些教学情境的具有企业实际工作背景的教学任务中去。比如在讲贪心算法的过程中,我们就完全可以创设取款机编写控制软件或是为解决自动售货机找零问题编写控制软件等类似的教学情境,而将贪心算法的设计与编程环节融入到该情境的一个或是若干个教学任务中去,通过采用任务驱动的教学模式,使同学们在学习与实践中真实地感受算法应用过程、体验解决问题的艰辛也品尝取得成功的喜悦。

为了增强学生参与教学过程的积极性,教师可以设置算法问题,并确保学生通过认真思考能够独立予以解决,进而使学生体会到算法学习中的成功感、成就感,激发他们更加努力的投入到学习和实践中。如果我们不顾及学生自身的学习基础和学习热情,盲目提出超出学生学习能力的算法问题,日积月久,学生必然会因为参与度的下降而导致学习兴趣减退。为了充分发挥学生在算法课程教学环节的主体性地位,教师要加大与学生互动和交流的力度,尤其需要关心学习有困难的学生,通过团队合作和技术分享等具有企业工作背景的教学环节,使每一名同学在算法领域都能有所收获,避免个别同学游离于课堂教学之外。

3 发挥专业建设的合力来搞好算法课程的教学工作

算法在计算机相关专业中无处不在,有哪一门计算机专业课程没有渗透着算法的思想和理念呢?所以不能将培养学生算法方面的能力与技巧单纯地归结于某一门算法课程或是某一位专业教师。所有专业教师,都要将自己所教授课程中相关的算法思想与方法提炼出来,并通过精心组织的教学过程,来传授给学生。教师之间也应针对算法教学多做沟通,避免教学内容相互重叠,对于某一算法知识或是技能,也可以在教师们之间彼此协调教学安排,以最为恰当的课程、在最为合适的时间节点、采取最为合理的教学方式教授给学生。

专业负责人以及专业教师在向学生特别是大学一年级的新生进行专业介绍或是专业报告中,要强调计算机算法与本专业其他课程之间的关系,要向同学们明确计算机算法在专业学习中所发挥的基础性的重要作用。也可以通过邀请IT领域的技术精英来校做关于算法学习与应用的技术讲座、带领同学们到IT企业亲身感受算法应用的具体实例、组织同学们进行算法学习领域的心得交流或是请学有所成的毕业生回校与同学们沟通学习算法的体会与经验分享。

算法的思想内涵服务于计算机相关专业的整体建设,同时也确实需要通过发挥专业建设的合力,营造出全体专业教师共同重视算法的教学气氛、落实以算法思想方法来指导编程实践的教学方法并引导学生逐步成为计算机算法课程建设中的教学主体。

很多IT企业人力资源部门的负责人在与高职计算机相关专业教师座谈中谈到,IT企业在员工录入环节中,既关注毕业生的职业技能,同时也格外重视毕业生所具有的职业素养。因为,如果学生的职业技能稍显不足,还可以通过岗位培训和生产实践加以弥合。然而一旦学生职业素养方面出现了问题,那并不是一朝一夕所能解决的。计算机算法课程不仅仅着重于学生IT技术方面的问题,恐怕更重要的是通过算法课程的学习促进学生由IT领域的学习者向IT行业的工作者转变,赋予他们一名合格程序员在计算机算法继承与技术创新方面所应具备的职业素养。由此可见,高职院校计算机相关专业算法教学工作既关系到专业建设问题,也关系到学生的职业规划,以及他们未来的程序员之路。

参考文献:

[1]刘璟.计算机算法引论—计与分析技术[M].科学出版社,

2003.

[2]邓向阳,万婷婷.算法分析与设计[M].冶金工业出版社,2006.

[3]张福祥.C语言程序设计[M].辽宁大学出版社,2007.

作者简介:

王翔(1975-),男,天津人,副教授,研究方向:计算机应用。