当前位置: 首页 > 范文大全 > 公文范文 >

数据结构与算法课程教学实施方案

时间:2022-03-03 08:05:15  浏览次数:

摘要:介绍了《高等学校计算机科学与技术专业核心课程教学实施方案》中“数据结构与算法”课程的设计理念。该课程方案以问题求解为导向,贯穿数据结构理论、抽象和设计的三个形态,强调围绕抽象数据类型(ADT)的有效表述,建立数据结构的逻辑结构、存储结构和运算的有机联系,并配备扎实的实践训练。分层次培养创新的科学型人才、综合的工程型人才、技术的应用型人才。

关键词:数据结构;算法;计算机科学与技术;核心课程;问题求解;实践教学;课程建设

作为计算机学科一个重要的分支,数据结构与算法的研究涉及构筑计算机求解问题过程的两大基石:刻画实际问题中信息及其关系的数据结构,描述问题解决方案的算法。

人们利用计算机的目的是解决实际的应用问题。在明确所要解决问题的基础上,经过对问题的深入分析和抽象,为其建立一个逻辑模型并分析基本的运算,然后确定恰当的数据结构表示该模型,在此基础上设计合适数据存储及相关算法,最后完成具体的程序来模拟和解决实际问题。

计算机求解问题的核心是算法设计,而算法设计又高度依赖于数据结构,数据结构的选择则取决于问题本身的需求。可以说“数据结构与算法”是计算机专业课程的核心。

在“高等学校计算机科学与技术专业核心课程教学实施方案”研究项目的支持下,本课程项目小组跟踪研究美国IEEE/ACM CC2001—2005课程体系(ComputingCurricula)和我国教育部CCC2006学科规范,分析当前IT技术发展需求,结合各位作者在高校长期开设的“数据结构与算法”教学成果,编写了“数据结构与算法”教学实施方案。本文详细介绍该实施方案的基本定位、理论知识体系、实践应用方案等内容。

一、课程的基本定位

1 课程的定位

作为一门重要的专业核心必修课程,“数据结构与算法”课程既是对以往课程的深入和扩展,也为深入地学习其他专业课程打下基础。课程中排序问题算法以及基本的树、图等数据结构,是计算机科学的基本功。B+树、散列(Hash)等高级数据结构,也是数据库、操作系统、编译原理、计算机网络等重要专业课程的基础。本课程在计算机学科中与其他课程的关系如图l所示。

 

2 知识体系

数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、数据的存储结构和数据的运算。算法是程序的逻辑抽象,是解决某类客观问题的处理步骤。数据结构与算法呈相互依赖的关系,只有恰当地确立了问题的模型结构,才能选择和设计合

适的解决方法。数据结构与算法的知识体系如图2所示。

常见逻辑关系有:线性结构、树形结构、图结构和文件结构。常见的存储方法有:顺序方法、链接方法、索引方法、散列方法。建立在数据结构之上的有效运算是问题求解的核心。排序、检索是最经典的运算,为了加快检索速度往往需要预先建立索引。

整个数据结构与算法的知识结构可以划归为基础篇、数据结构篇和运算篇三大体系。

基础篇的核心内容是数据结构与算法的基本概念,对后续内容起到导引作用。内容包括数据结构与算法定义、抽象数据类型(Abstract Data Tvde,简称ADT)、算法复杂度等问题求解过程中需要考虑的因素。

数据结构篇是数据结构与算法课程的核心内容。介绍各种基本数据结构的特点、ADT、各种存储实现方法、相关的经典算法及其效率。以数据结构的逻辑结构为主线,按照线性结构(线性表、字符串、栈和队列)、树、图等深入展开,揭示出不同数据结构的区别和内在联系,并穿插介绍回溯、搜索、分治、贪心、动态规划等经典算法在各类数据结构中的应用。

运算篇主要介绍排序、检索、索引等经典算法。排序是广泛应用的运算,其时间效率要求很高,对排序算法进行深入讨论和研究,有助于了解算法设计的多样性。检索是面向用户的最终应用,一个系统的好坏往往体现在检索的效率和效果上,搜索引擎就是典型的应用。为了提高检索效率往往需要进行适当的排序和索引;为了较好地展示相关检索的结果,往往需要对检索结果排序后再呈现给用户。

高级数据结构篇介绍多维数组、广义表、字符树、高级二叉搜索树等。Patricia树、后缀树是目前热点研究的字符树,伸展树、红黑树是比平衡二叉树(AVL)更为实用的二叉搜索树(BST)。向学生介绍这些学科前沿的数据结构,加强课程的深度和广度,有助于拓宽学生的知识面,提高解决实际问题的能力。

二、课程的分层次教学基本定位和设计思路

在大学计算机专业教育背景下,分层次教学的定位是培养科学型、工程型、应用型三类人才。本教学实施方案,以学生为本,因材施教,进行多元化、个性化的分层次培养,让每种类型的学生都得到最大的收获。

1 科学型人才的理论教学

科学型人才的理论教学应该重视基础理论和核心技术以及创新意识和创新能力的培养。注重数据结构与算法设计和问题求解的知识体系,帮助学生建立数据结构与算法的思维方法,理解抽象的概念、复杂的算法。从问题求解的角度,培养学生选择合适的数据模型,设计合适的算法,运用数据结构与算法基本理论来分析和解决问题。

从理论、抽象和设计的三个层次展开数据结构与算法教学。对每种数据结构都从其数学特性入手,先介绍其抽象数据类型,即逻辑结构和基本运算;再讨论其不同的存储方法,与学生一起讨论研究不同存储实现下可能的算法实现;然后结合算法分析来讨论各种存储方法和算法的利弊,摒弃那些不适宜的方法。注重数据结构基本概念和抽象数据类型表述,尤其是ADT的信息封装和信息隐蔽,使得学生可以在不同的设计阶段采用不同的抽象数据类型作为设计的基础,在适当的抽象层次上考虑程序的结构和算法。对各种经典算法的设计方法进行深入介绍,例如系统地介绍回溯、搜索、分治、贪心、动态规划等方法,扩展介绍第k短路径、唯一支撑树、动态散列表等。

结合计算机科学技术的现代前沿研究课题,设计研究启发式教学案例,提供精选的理论和技术扩展阅读文献。引导学生从广度和深度上把握课程的知识体系,建立数据结构与算法的思维方法。通过扎实的经典基础理论训练,帮助学生灵活地运用问题抽象、数据抽象、算法抽象来分析问题,应用数据结构与算法来设计和实现相应的程序,完成创新能力和实践能力的训练。

2 工程型人才的理论教学

工程型人才的理论教学应重视培养基本的理论分析能力和综合设计实现能力。掌握“数据结构”中的概念技术,合理组织数据,高效处理数据的典型算法,培养学生面对实际问题时选择恰当数据结构和相应算法的能力,通过创新的变通、组合,提出合理的总体解决方案并付诸实现,提高学生上机协作解决较大规模实际问题的能力,为进一步的应用开发打下良好的基础。

构建概念表述、数据模型、设计算法三个层面的课

zoޛ)ji�4i$总结评价”模式为主线,以学生自主探究和开发活动为主体,以教师点拨为主导。鼓励学生设计综合应用多种数据结构与算法来解决实际问题的小型软件系统,鼓励学生编写新颖高效的数据结构和算法,优化实践教学的效果。

2 工程型人才的实践设计

“数据结构”的内容丰富,体系成熟,技术性强,既有基本的数据组织技术和数据处理技术,又有许多巧妙的经典算法,同时还要求能够综合运用所学技术,设计实现具有相当规模的应用系统,能力提高掌握会有一定的困难。因此必须在课程学习的基础上,加强上机操作,在学中用、用中学,充分体现本课程理论与实践紧密结合的特点。通过实验内容的训练,强化计算思维训练,提高学生组织数据及编写较大规模应用程序的能力。

根据教学目标,设计出规模适当、难度适中、实用性和趣味性兼顾的上机题目。上机题目分为三类:第一类是为了验证当前所学知识点的验证型实验,以掌握基本的教学内容;第二类是为了运用多个相关知识点解决问题的综合型实验,培养基本问题求解能力;第三类是为了灵活运用所学知识解决实际问题的设计型实验(课程设计)。前两类实验一般与课程内容同步进行,第三类可作为课程结束后的综合实验,建议单设课程设计实验课集中完成。

工程型人才应该特别重视综合型设计实验,注重工程能力的培养。要求多人合作,按照软件工程的开发规范,综合运用所学知识,解决一些与实际应用结合紧密的、规模较大的问题。通过分析、设计、编码、调试等各环节的训练,使学生深刻理解并牢固掌握数据结构与算法设计技术,增强分析、解决实际问题的能力,培养项目管理能力和团队合作精神。

针对不同基础的学生,教师应该提供不同的上机指导。鼓励优秀学生通过查阅资料和调研自主选题,在教师的引导下,充分发挥学生的创造力和积极性,激发学生的学习兴趣和创新意识,培养科研能力和创新能力。

3 应用型人才的实践设计

数据结构课程的特点,决定了必须要加强实践环节的教学才能内化所学知识,加强实际解决问题的能力的培养,在此基础上培养严谨的学风和创新意识,取得预定的效果。

数据结构课程实验的目的是使学生检验和巩固课程的基本知识和方法,综合运用课程中的知识与方法,对给定的问题设计出合理的算法和数据结构,并在此基础上设计出求解程序,实现对问题的求解。数据结构的设计包括逻辑结构的设计、存储结构的设计,以及在此基础上的算法的设计与实现。其中的每个方面都会影响到问题求解的性能,因此,对于应用型人才的实践教学不仅要能实现对给定问题给出相应的数据结构和算法的设计,还要能理解、掌握设计的相关性能,包括时间性能和空间性能等,在此基础上给出最合理的选择。

课程设计的目的是通过对以数据结构与算法设计为核心的课题的设计与实现过程的训练,培养学生综合运用所学数据结构以及程序设计等课程的知识、能力与方法,系统学习和掌握问题建模、数据结构设计、算法设计与实现、测试等各环节的方法和能力。

四、讲授建议

“数据结构与算法”是计算机学科的骨干基础核心课程,是本科教学的重中之重。

本课程适合在大学二年级开设,学生首先应该先修“程序设计”课程,具备一定的程序设计基础:其次应该学习“离散数学”课程,因为数据结构的主要逻辑结

构是线性表、树、图,尤其是图论部分;在算法效率分析中,还需要运用初步概率知识。

教学中需要注意与后继课程的衔接。例如计算机网络的路由问题与图结构相关,操作系统常常用到排序算法,数据库系统要用到B+树等高级数据结构。

以问题求解为导向,以算法的数学基础和算法复杂性分析为理论层次,以基础数据结构技术和经典算法思想为抽象层次,以数据结构与算法的实现和测试为设计和实践层次,展开数据结构与算法的理论和实践教学。

应该注意建立数据结构的逻辑结构、存储结构和运算的有机联系。建议以数据的逻辑结构为主线,顺序介绍线性结构、树形结构、图结构和文件结构。在介绍每种逻辑结构时,都从其数学特性入手,先介绍抽象数据类型,然后再讨论不同的存储方法,并研究不同存储方法的可能算法(增、删、查、改等基本运算)。强调抽象数据类型概念,引导学生从数学模型和算法的抽象层次设计数据结构,注意逻辑设计和物理实现的分离。

例如对于线性表,如果考虑到存储方法,可以分为数组和链表;考虑到运算的特殊性,则可以分为向量、栈和队列。结合算法分析来讨论各种存储方法和算法的利弊,摒弃那些不适宣的方法,这样调动了学生的思维并可从中学到考虑问题的方法,使其在今后设计和应用数据结构时能够全面地考虑各种因素,选择最佳方案。

对于一些比较重要的算法,再列出单独的章节来讨论。排序、检索是最经典的运算,为了加快检索速度往往需要预先建立索引。排序算法最能够体现算法分析的魅力,它的算法速度要求非常高,其中内排序主要考虑的是怎样减少关键码之间的比较次数和记录交换次数来提高排序速度;而外排序则考虑外存的特性,尽量减少访外操作,以提高排序速度。检索则考虑怎样提高检索速度,这往往是与高效索引存储方法有关的。散列表、倒排表、B树和B+树等都是高效的索引结构,具有极好的检索性能。内存索引主要用二叉搜索树,外存索引常用倒排和B+树。散列由于其“关键码一地址”对的高效索引而达到了常量级的检索效率,其检索效率与数据规模无关,只与负载因子(即存储密度)α有关。索引和散列是特殊的存储方法。

根据学生的层次,可以选择一些数据结构应用等高级主题予以介绍。例如广义表和稀疏矩阵等更复杂的线性表结构,Trle结构、AVL树、红黑树、伸展树等复杂树结构。学生在将来的科学研究和工程项目实践中将广泛地接触到这些实用的数据结构与算法技术。

同时,还要贯穿算法分析技术,这有助于引导学生根据问题的性质选择合理的数据结构,并对时间和空间复杂性进行必要的控制。要让学生体验到从“会编程序”到“能编写高效程序”这样质的飞跃。

教学实施过程中,注意摒弃一些过时的技术。某些内容可以作为例题讲解但要注意提醒学生采用前沿实用的主流技术。例如,需要注意提醒学生,线索化以便充分利用空间的思想以及基于三元组的稀疏矩阵算法,都属于被淘汰的算法。那种基于节省内存思想的琐碎算法,效率低下,没有通用性。现在存储空间不成问题,而算法可读性、可维护性更加重要。三元组只适合于处理图或稀疏矩阵的输入输出,稀疏矩阵算法的主流存储方法是基于十字链表或者类似于图邻接表。

五、总结

本课题组在设计教学实施方案时,重点考虑的是学生问题求解能力的建立。强调理论、抽象、设计三个学科形态在课程中的映射,依托抽象数据类型对数学模型和算法的抽象,贯穿算法时间空间效率分析引导学生合理地编写高效程序。 科学型人才更注重数据结构基础理论的培养。要求更高的算法时间空间复杂度分析能力,能够对数据结构和算法中的一些数学性质(如贪心性质、动态规划递推方程)等进行深入的证明推导,掌握红黑树、伸展树、后缀树等高级数据结构核心技术。强化创新意识的培养,相应地提高理论联系实际能力、实践动手能力和科研能力。

工程型人才的理论教学应重视培养理论分析能力和综合设计实现能力,特别重视综合型设计实验,注重工程能力的培养。通过理论与实践教学,使学生深刻理解、牢固掌握数据结构与算法设计技术,增强分析、解决实际问题的能力,培养项目管理能力和团队精神。

应用型人才重在通过典型数据结构和处理算法的学习,以及算法设计和实现的训练,养成敏锐的洞察力。并逐步掌握如何整合信息,提炼数据和数据结构,配置相应的运算和处理算法,完成信息化系统的集成。

数据结构与算法课程实践的目的是使学生检验和巩固课程的基本知识和方法,综合运用课程中的知识与方法,对给定的问题设计出合理的逻辑结构和基本运算,在此基础上设计出合适的存储结构及相关算法,并编写完整的程序,实现对问题的求解。

在实施方案中,针对科学型、工程型、应用型三类人才,都制订了详细的知识矩阵、学时分配表、授课提示、考试基本要求、成绩评定建议、基础实验内容和要求、课程综合实验设计等。对各个重要数据结构和重要算法,详细列举了重点与难点,并给出相应教学方案。

特别值得一提的是,课题组根据不同人才的培养需求,精心设计了适合不同层次人才需求的“数据结构与算法”综合上机实验题目,供广大教师和学生参考。希望能为我国信息技术教育和产业发展作出一定的贡献。

参考文献:

[1] CC2005.The Overview Report of Computing Curricula2005[EB/OL],http://www.computer.org//portal//cms_does_ieeecs//ieeecs/edueation/cc2001/CC2005-March06Final.pdf.

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

[3] 张铭,赵海燕,王腾蛟等.北京大学“数据结构与算法”教学设计[J].计算机教育,2008(20):5-11.

[4] 教育部高等学校计算机科学与技术教学指导委员会.高等学校计算机科学与技术专业核心课程教学实施方案[M].北京:高等教育出版社,2009.

推荐访问: 数据结构 实施方案 算法 课程教学
[数据结构与算法课程教学实施方案]相关文章