课程性质和地位
美国IEEE和ACM的教学计划以及教育部计算机教指委 “计算机科学与技术专业规范”都明确地把“程序设计”、“算法与数据结构”列入计算机以及信息技术相关学科专业的本科必修基础课程。作为一门重要的专业必修课程,“数据结构”课程中所学的线性表、树、图等数据结构,以及排序、检索问题的算法,是计算机科学的基本功。B+树、Hash表等高级数据结构,也是数据库系统原理、操作系统、编译原理、计算机网络等后续课程的重要基础。本课程与其他课程之间的关系见图1。
图1 “数据结构”与其他课程的关系
教学内容
本课程通过MOOC课程 + 课堂教学 + 上机实践 + 师生互动等环节实现课程目标。
本课程的主要内容(见图2)包括:线性表,栈与队列,字符串,二叉树,树,图,排序(内排序,外排序),检索,索引以及数据结构应用。课程持续11周,同学们每周在本课程上需要投入6-8小时。
图2 “数据结构”课程主要内容
教学目标
通过本课程的学习,使学习者具备基本的数据组织和数据处理能力,在解决问题时选择适当的数据逻辑结构、存储结构及运算设计的能力,最终能够创造性地进行算法设计和程序设计。
教学环节
本课程通过MOOC课程 + 课堂教学 + 上机实践 + 师生互动等环节实现课程目标。
先修知识
熟悉C或C++程序设计语言有助于你掌握数据结构相关内容。
学习策略
(1)对于基本概念,在理解概念的同时,尽可能结合实例掌握概念的内涵。
(2)对于表、树、图三大基本结构,依照“逻辑结构→物理结构→基本运算→基本算法→算法评价”这个脉络,掌握每种结构的特点,并进一步理解研究数据结构的作用。
(3)对于算法设计,遵循“少而精”的原则,掌握重点,以点带面,通过对比,逐步建立设计“好”算法的意识。按照“读、仿、改、究”的学习模式逐步提升自己的程序(算法)设计能力。具体地说,“读”就是研读经典算法及其实现代码,领会算法设计思路、描述方式和实现代码的程序结构;“仿”是指对现有的求解原问题的算法进行简单搭建和修改,写出用来求解与原问题相近的新问题的模仿算法;而“改”则是,当应用场景或用户需求发生较大改变时,能够对现有算法进行改进,写出改进算法,这一阶段至关重要,不仅起到了深化理解知识的作用,而且对算法设计能力、分析能力,改进点的定位,改进措施的选定都是极大考验和锻炼;“究”指的是研究和探索给定问题的性质、特征,确定求解策略,设计出性能良好的求解算法。
主讲教师
陈燕红 副教授 硕士生导师
主要参考资料
1. 张铭、王腾蛟、赵海燕,《数据结构与算法》,高等教育出版社,2008年。
2. C. A. Shaffer, Data Structures and Algorithm Analysis in C++, Third Edition, Dover Publications., 2011.