程序设计大赛对《数据结构与算法》课程教学的意义
2018-09-13曹芳
曹芳
【摘 要】本文以应用型本科的角度对《数据结构与算法》课程在实际教学中的问题进行了总结,就我校学生参加全国程序设计竞赛的经验对本课程教学产生的意义进行了探讨。
【关键词】数据结构与算法;程序设计大赛
中图分类号: TP311.12-4;G642 文献标识码: A 文章编号: 2095-2457(2018)14-0182-001
DOI:10.19694/j.cnki.issn2095-2457.2018.14.082
The Significance of Programming Competition to the Teaching of “Data Structure and Algorithm”
CAO Fang
(Beijing Geely College of Automotive Engineering Beijing 102202, China)
【Abstract】This paper summarizes the problems of “data structure and algorithm” in practical teaching from the perspective of application-oriented undergraduate course, and discusses the significance of this course teaching based on the experience of our students participating in the national program design competition.
【Key words】Data structure and algorithm; Programming competition
《数据结构与算法》是我校计算机专业课程体系中核心的必修课程,作为学科的专业课,具有承上启下的重要作用。本课程主要在培养学生的分析问题的能力和研究计算机加工数据对象的能力,培养学生数据抽象能力和复杂程序设计能力,培养学生对基本常用算法的理解和应用能力,为今后软件开发设计打下坚实基础。同时本课程又是如编译原理、操作系统、数据库系统等课程的基础。
在内容方面,该课程主要包括抽象数据模型、数据结构、算法。它主要研究计算机所要处理的数据对象,根据对象所表示的逻辑结构和实际使用的存储方式的不同,研究其相应的操作方法,并初步掌握算法的时间复杂度和空间复杂度衡量算法的好坏。最终的目的是使学生在分析解决具体问题的时候能够很自然地想到和选择合适的数据结构类型。在实际教学中本课程以包括很多抽象的概念、算法和编程的思想,一向以抽象难懂、理论性强和学习难度大著称。本课程的教学效果与教师在这门课中的投入没能获得等值的回报,尤其是在应用型本科教育中,学生普遍反映数据结构与算法课抽象难懂、与实践联系不上,继而难以产生出学习兴趣,所以也不到良好的学习和教学效果。
学生认知方面,应用型本科学生对数据结构与算法课程的价值认识不正确,由于应用型本科的教学培养方案侧重学生的动手操作、实际应用能力,所以计算机专业学生也只重视易于动手的知识,例如网站的开发、流行的编程语言和开发工具等。这种思想使得学生不愿意花时间去学习数据结构这类理论抽象的课程,以至于将这门课给孤立起来。但实际上,数据结构课程有利于培养学生对问题的抽象分析能力、数据模型的构建、算法的应用能力。
为推动软件行业产业的发展,促进软件专业技术人的才培养,培养具有创新能力和实践能力的高端人才,提升高校毕业生的就业竞争力,工业和信息化部人才交流中心已成功举办九届蓝桥杯大赛。参赛学校超过1200余所,参赛规模已达二十万人次,我校学生从第二届开始到第九届都有参赛,参赛项目为C++组和Java组程序设计大赛,每一届我们都取得了不错的成绩,都有学生获得北京市一等奖、二等奖和三等奖。获得的成绩给参赛同学带来很大的肯定和鼓舞,也激励更多的学生参与到比赛中来。
数据结构课程知识和赛题结合非常紧密,課程中学的线性表、查找、排序这些方面的算法在赛题中经常出现,学生做赛前准备的时候会多加练习,这样就将所学书本知识应用了起来。比如大赛赛题还会涉及我们平时不会多加练习和应用的很多算法,例如广度度优先搜索BFS、深度优先搜索BFS、单元最短路(下转第202页)(上接第182页)径?Bellman-Ford算法、最短路径问题?Bellman-Ford贝尔曼-福特算法、最短路径问题Dijkstra 迪吉斯特勒算法、最小生成树Prim算法、最小生成树Kruskal算法,学生参赛就要钻研这些涉及到的算法。
程序设计大赛的题目和平时课堂教学内容比较来说赛题的难度大、涉及面相对广,需要学生将自己掌握的知识和查找相关知识相结合来完成大量的查阅资料、探索资料、分析资料的工作, 在完成大赛题目的过程中还需要自学很多课外知识,题目都需要动手编程上机调试,在此过程中学生不仅感受的自我价值体现的乐趣,也激发了学生对软件算法的兴趣,并且对自主学习的能力也得到了培养。
通过参加程序设计大赛,学生能将算法应用在解决比赛题目中,使得学生立刻体会到“学有所用”,提高了学生的学习主观能动性,加强了学生的实践能力的培养。为了比赛而进行学习使学生的学习动力增加很大,以前是老师催着学生学,参加了大赛是学生追着老师问,这样的氛围在班级也形成了良好的循环,带动其他没有参加大赛的同学进行学习。同时平时学生的学习效果老师在教学过程中也不能有效的掌握,通过程序设计大赛老师对学生掌握课程知识的程度也有了准确的判断和评判依据,为老师在今后的教学设计提供了有利的依据。我们在今后要多鼓励学生参加程序设计大赛,激励学生在比赛的道路上越走越高。
【参考文献】
[1]李倩,秦芳,李娟.程序设计类课程教学方法探究[J].才智.2017(05).
[2]严蔚敏,吴伟民编著.数据结构[M].清华大学出版社,1992.