当前位置:教学考试 > “算法与数据结构”教学探索与实践

“算法与数据结构”教学探索与实践

时间:2025-08-01 23:25:27 浏览次数:

摘要:“算法与数据结构”是计算机专业的一门核心专业基础课。从教学实践出发,针对教与学的过程中存在的问题探索解决方法,对“算法与数据结构”课程教学内容、教学方法、实验教学等方面提出了一些具体改革措施,以期加强“算法与数据结构”课程建设,提高教学质量。

关键词:算法与数据结构;教学质量;教学探索;教学方法

作者简介:李永(1978-),男,安徽宿州人,盐城师范学院信息科学与技术学院,讲师。(江苏 盐城 224002)

中图分类号:G642.0     文献标识码:A     文章编号:1007-0079(2012)31-0057-02

“算法与数据结构”主要研究数据在计算机中的表示方法、存储方法以及其上的操作。[1]在美国IEEE/ACM课程体系和我国教育部学科规范中,[2,3]“算法与数据结构”被列为核心课程之一。它是操作系统、数据库、软件工程和人工智能等课程的基础。算法与数据结构蕴含的思想对学生在软件设计方面有很强的导向性,它的教学效果直接影响学生的数据抽象和程序设计能力的培养。学习该课程,一方面,使学生学会分析数据对象的特征,掌握数据组织的方法和在计算机中的表示方法,为数据选择合适的逻辑结构、存储结构和算法;另一方面,培养学生良好的程序设计风格,进行复杂程序设计的训练。[1]

为了在课时约束、学生基础、课程难度、教学目标等约束下最大化教学质量,使学生最大限度地得到提升和发展,本文从分析“算法与数据结构”课程存在的问题出发,在教学内容、教学方法、实验教学等方面进行了一些探索和实践。

一、“算法与数据结构”教学中存在的问题

1.课程本身难度大

“算法与数据结构”是抽象与具体的统一,理解与掌握它需要跨越横亘在抽象与具体之间的鸿沟。学习该课程有两个难点:一是从算法与数据结构到程序实现的跨越;二是从实际应用到数据结构抽象的跨越,即如何利用算法与数据结构解决实际问题。[4]“算法与数据结构”的内容抽象、繁多、逻辑性强,难于理解掌握。学生学完后不知道学了什么,当需要解决实际问题时感到无从下手。“算法与数据结构”综合性、技巧性强,各种算法中凝结了大量杰出计算机科学家的智慧,在有限的教学时间内部分学生因无法领悟其中的思想与精髓而产生厌学情绪。

2.前导课程基础不扎实

“C语言程序设计”、“高等数学”、“离散数学”等是数据结构的前导课程,其中“C语言”与“数据结构”课程的联系最为密切。“C语言”一般开设在大一第一学期,是学生最先接触的程序设计语言。由于内容多、难度较大、大班教学、课时有限等原因,教学时间大部分花在基本概念及简单程序的编写上,对结构体、指针、参数传递等难度较大的知识点讲解不深入,为“算法与数据结构”的学习埋下了隐患。

3.教学方法有待改进

“算法与数据结构”的教学方法主要为板书结合PPT课件,教学方式采用“教师讲—学生听”的灌输式授课模式,与学生互动少,课堂气氛沉闷。教学方法中以教师为中心按照教学大纲教学,存在照本宣科、就事论事、内容堆砌、缺乏新意等缺点。由于没有考虑学生的接受能力、思维能力以及编写代码的能力,学生只是不加思考地被动的接受知识,限制了学生的积极性与主动性的发挥。

4.实验教学中存在的问题

目前课程实验中存在的问题主要有下面三个方面。首先,大多高校“算法与数据结构”实验的教学方式仍是以教师为中心,以灌输、模拟、验证为主;教师按教材单元布置实验任务并做适当的引导和提示,然后学生动手实践。没有考虑实验的实用性以及是否适合学生,不能调动学生的学习热情。其次,学生的程序设计能力普遍较弱,面对问题时难以有清晰的算法思想,无法将算法思想转变为正确的程序代码,上机调试和运行程序时面对众多的错误提示无法正确解决,实验课教学效果大打折扣。再次,由于实验课时有限,且实验内容具有相互依赖和递进的特点,部分学生又不能充分利用课余时间,造成问题堆积。

二、“算法与数据结构”的教学探索

1.合理组织教学内容

贯穿“算法与数据结构”课程的主线是逻辑结构、存储结构及操作,即线性表、树、图三种逻辑结构;顺序和链式两种存储结构;插入、删除、查找、遍历等操作。这些内容不是孤立的,在教学过程中将它们联系起来形成一条主线,由线性到非线性,由简单到复杂,方便学生理解和掌握。在教授课本内容时,根据教学大纲的要求梳理并提炼出各章节的知识框架,根据学生情况和教学目的合理划分课时,控制课程节奏。课堂上主要针对程度一般的多数学生从数据结构的逻辑结构、存储结构和数据的运算三个方面去组织教学内容,做到重点突出、内容简洁。对于程度差的学生进行个别辅导,通过补习和细化教学内容帮助其跟上教学进度。对于程度较好的学生,通过指定课外读物、布置思考题等,让其能力得到充分发挥。

2.上好第一节课,激发学习热情

在第一节课不要急于给学生灌输基础的理论知识,而要引导学生明白为何学,讲解数据结构的研究对象是什么,学习数据结构有什么用,采用什么样的方法来学习该课程。这些问题的引入不能从抽象的概念入手,而要从贴近生活的一些例子从案例入手,让学生在深入课程学习前体会到课程的重要性。例如,学生成绩管理系统中如何组织学号、姓名、成绩等,才能快速实现查找、插入、删除等操作;计算机与人对弈时如何应对变化的情况以及给出周全的对策,实现灵活对弈等。也可给学生展示一些上届学生的优秀作品,让学生先认识到数据结构在实际编程中的应用,并指出在学期结束时学生也能设计出类似这样的系统。使学生认识到该课程实际应用的价值,对课程充满探索的欲望,积极性得到调动,从而有一个良好的开端。

3.夯实C语言基础

大多高校采用的算法与数据结构教材是用类C语言描述的,实验也用C语言实现。扎实的C语言基础是学好算法与数据结构的必要前提,其教学效果直接影响到“算法与数据结构”教学活动的开展。针对学生C语言基础差的问题,一方面,采用小班教学,并适当增加C语言的课时。尽量安排同一个教师讲授“C语言”与“算法与数据结构”,在讲授C语言时有的放矢把和数据结构联系紧密的函数、指针、结构体等知识点重点讲解(加大课时)。另一方面,在讲授“算法与数据”结构课程时,对涉及到的C语言内容加以复习,使学生能够读懂、理解算法。

4.以学生为主体,灵活采用多种教学方法

“算法与数据结构”理论性强、定义多、算法多,传统的灌输式教学模式,教师追求教学任务,按时按量完成,一味罗列理论知识和算法,造成课堂枯燥沉闷、学生厌学,必须进行教学改革,建立以学生为主体的教学模式。为了体现学生的主体地位,教师要有意识地营造活跃的课堂学习氛围,给学生提供主动参与教学的机会,让学生主动思考,师生共同分析讨论完成教学内容的学习,教师在教学中起组织、引导、答疑的作用。教师要及时了解学生对知识的掌握情况、学生的建议,根据授课内容的不同灵活采用启发式教学法、案例教学法、多媒体教学法等。另外,由于教学内容抽象和学生接受知识能力的不同,教学内容难以通过课堂讲授完全被学生理解和掌握,需要借助网络课程,让学生充分利用课外时间自主学习,提高教学效果。

(1)启发式教学法。教师在教学过程中精心设计情境,将问题恰当设置到教学内容中,引导学生在该情境下提出问题,分析问题用到的知识,边分析边提问,使学生经过积极思考后跟上教师的讲课进度,在解决问题的过程中获取知识,提高能力。

(2)案例教学法。教师针对把各章节的重点和难点设置很多简单有效的案例,把抽象的、理论性强的专业知识变成学生感兴趣的案例。在讲授某一知识理论之前,以实际的案例作为切入点,这样学生易于接受。

(3)多媒体教学法。在教学过程中运用现代化教学手段,制作简洁高效的多媒体教学课件,将各种富有表现力的图示和动画与授课内容联系起来,化抽象为直观,使学生在轻松的氛围内学会难以理解和掌握的知识。

(4)借助网络课程实现学生自主学习。利用网络课程平台实现无所不在的教学。网络课程包括教学大纲、教学资源、在线学习、算法演示、案例分析、在线测试、题库、课程论坛等。学生可以根据自身情况,利用课外时间进行有针对性的学习。学生可以提出问题,在课程论坛上贴出自己的算法和程序,请老师或同学进行讨论,也可以由老师或同学设定某一主题供大家讨论。网络学习可以培养学生自主学习的能力,扩展学生的知识结构。

5.加强实验教学

实验教学是理论教学的延续和扩展,可以培养学生分析解决问题的能力。

(1)设置多层次的实验教学。将实验内容划分为验证性实验、设计性实验、综合性实验。验证性实验让学生检查自己对基础知识的掌握情况。设计性实验巩固课程知识和算法的学习,让学生理论联系实际,灵活掌握所学的知识。综合型实验涵盖多个知识点,在相关知识点学习后2至3周内完成。

(2)精心设计实验内容。结合课堂知识,由简单到复杂,循序渐进地设置。设计有一定趣味性、应用性的实验,提高学生编程能力的同时,让学生感受到利用所学知识解决实际问题的成就感。

(3)针对难度较大的综合性实验,建立有效的学生分组协作机制。学生分成合理的小组,通过相互讨论协作完成实验。挑选算法设计较好的小组在课堂上讲解,大家进行沟通交流,扩展思路,从而培养学生的创新能力、科研能力、团队精神。

(4)严格要求,消除学生的惰性。规定实验完成时间,避免实验问题的堆积和学生玩游戏或上网。重视实验报告的书写,包括实验题目、要求、过程、结果、源代码、遇到的问题及解决方法、结果分析、实验心得等。通过实验报告教师可以检查每个学生的实验完成情况,对发现的典型和共性问题及时地集中讲解。

三、结论

“算法与数据结构”是计算机专业的专业基础课。在教学过程中,研究和探索该课程的教学内容、教学方法、实验教学等具有很重要的实际意义,可以提高学生的学习兴趣,由被动学习变为主动学习;提高学生分析问题、解决问题的实际应用能力;提高教学质量,帮助学生最终学好这门课程,为后续课程学习奠定基础。

参考文献:

[1]耿国华.数据结构——C语言描述[M].北京:高等教育出版社,2011.

[2]ACM/AIS/IEEE-CS.Computing Curricula 2005[EB/OL].http://www.acm.org/education/curric_vols/CC2005-March06Final.pdf.

[3]教育部高等学校计算机科学与技术教育指导委员会.高等学校计算机科学与技术专业发展战略研究报告暨专业规范(试行)[M].北京:高等教育出版社,2006.

[4]邹恒明.数据结构:炫动的0、1之弦[M].北京:高等教育出版社,2012.

(责任编辑:刘辉)

相关热词搜索: 数据结构 算法 探索 实践 教学