数据结构

学了一门编程语言不知道能干啥?来学数据结构就对啦! 学会编程相当于会砌猪圈的泥瓦匠,学完数据结构就会盖个双层小楼啦~ 同时还可以一窥构筑摩天大厦的奇门武功! 欢迎勤奋的小白活泼乱入!十周修炼,得入门径,一代大侠,从此出发 —— 快来吧~ ^_^

浙江大学

分享

数据结构
  • 分类: 计算机
  • 平台: 中国大学MOOC
  • 语言: 中文

课程概述

“数据结构”是计算机科学与技术专业、软件工程专业甚至于其它电气信息类专业的重要专业基础课程。它所讨论的知识内容和提倡的技术方法,无论对进一步学习计算机领域的其它课程,还是对从事大型信息工程的开发,都是重要而必备的基础。
程序设计解决问题往往有多种方法,且不同方法之间的效率可能相差甚远。程序的时间和空间效率,不仅跟数据的组织方式有关,也跟处理流程的巧妙程度有关。本课程将介绍并探讨有关数据组织、算法设计、时间和空间效率的概念和通用分析方法,帮助学员学会数据的组织方法和一些典型算法的实现,能够针对问题的应用背景分析,选择合适的数据结构,从而培养高级程序设计技能。

注意:本课程只涉及最基础的数据结构和与之关联的最基本的算法,更多更复杂的数据结构和经典的解决优化问题的算法,将在后续课程中介绍。

本课程的特点是,对每一种重要的经典数据结构,我们都会从实际应用问题出发,导出其定义、实现(存储)方法以及操作实现,并以更丰富的综合应用案例和练习题帮助学员增强对理论的感性认识,从而明白这些数据结构为什么存在以及在什么情况下可以最好地解决什么样的问题。

坚持完成本课程学习、并按照要求完成所有练习的学员,应该具备了PAT(Programming Ability Test)甲级需要的所有基础知识,辅以充分的英语阅读能力和熟练的编程能力,应可以取得优良成绩。

授课大纲

第一讲 基本概念-[陈越]
1.1 什么是数据结构
1.2 什么是算法
1.3 应用实例:最大子列和问题
第二讲 线性结构-[何钦铭]
2.1 线性表及其实现
2.2 堆栈
2.3 队列
2.4 应用实例:多项式加法运算
第三讲 树(上)-[何钦铭]
3.1 树与树的表示
3.2 二叉树及存储结构
3.3 二叉树的遍历
第四讲 树(下)-[何钦铭]
4.1 二叉搜索树
4.2 平衡二叉树
4.3 堆
4.4 哈夫曼树与哈夫曼编码
4.5 集合及运算
第五讲 图(上)-[陈越]
5.1 什么是图
5.2 图的遍历
5.3 应用实例:拯救007
5.4 应用实例:六度空间
第六讲 图(下)-[陈越]
6.1 最短路径问题
6.2 最小生成树问题
6.3 拓扑排序
第七讲 排序(上)-[陈越]
7.1 简单排序(选择、冒泡、插入)
7.2 希尔排序
7.3 堆排序
7.4 归并排序
第八讲 排序(下)-[陈越]
8.1 快速排序
8.2 表排序
8.3 基数排序
8.4 排序算法的比较
第九讲 散列查找-[何钦铭]
9.1 散列表
9.2 散列函数的构造方法
9.3 冲突处理方法
9.4 散列表的性能分析
9.5 应用实例:词频统计
第十讲 习题选讲-[陈越]

证书要求

这门课的一个重要目的是,帮助大家明白一些经典的数据结构为什么存在、以及在什么情况下可以最好地解决什么样的问题。要做到这一点,非自己动手解决问题不可。
与程序设计课程类似,每一周的课后,我们都留有两类练习,一类是在线完成的选择、是非或填空题,以下称作“在线练习”;一类是在PAT(Programming Ability Test)网站(http://pat.zju.edu.cn/)上的编程练习题,以下称作“编程练习”。你可以自己注册帐户,随时进行练习,并不限于发布练习的时段。注意:你的PAT账号所用的电子邮箱必须和中国MOOC的账号所用的相同。如果忘记帐号或密码,请用你注册时登记的电子邮箱发求助信到 chenyue@zju.edu.cn。
课程过半时,我们还会安排一次期中考试,是在线完成的选择、是非或填空题,不包括编程题。期中考试在一周内用连续的60分钟完成均有效。
最后,在期末后一周,我们会安排一次在线期末考试,需要在某一天内用连续的120分钟完成。

本课程获得证书的资格,由以下因素决定:
在线练习:必须完成全部在线练习。成绩无所谓,但是留有未做的练习则不能获得证书;
编程练习:必须在期末考试前获得整个课程的全部练习题分数的30%,才能获得证书,但是分数不会带入总评成绩;
期中考试:得分占总评分数的40%;
期末考试:得分占总评分数的60%;
满足条件1和2并且总评成绩达到60分及以上者,可以获得本课程的合格证书。
在课程结束后的12个月内,参加一次PAT甲级考试,获得70分及以上者,可以获得优秀证书。

预备知识

学过一门编程语言,具有一定编程基础,即可理解主要内容,因为数据结构本质上是不依赖于编程语言的,且编程练习平台可以接受十余种语言代码的提交。但由于算法描述多用类似C语言的伪码,所以如果学过C语言会更容易接受。
如果还对计算机处理离散结构的基本理论和方法有较为系统的理解(即预修“离散数学”),则对更扎实地掌握本课程内容有很大帮助,但并不是必须的。

参考资料

推荐教辅和资料:
1.《数据结构》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2012年4月
2.《数据结构学习与实验指导》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2013年5月
3. 课程练习网站:http://pat.zju.edu.cn/contests/mooc-ds

声明:MOOC中国收录之课程均源自下列机构,版权均归他们所有。本站仅作报道并尊重其著作权益,感谢他们对MOOC事业做出的贡献!(排名不分先后)
  • Coursera
  • edX
  • OpenLearning
  • FutureLearn
  • iversity
  • Udacity
  • NovoEd
  • Canvas
  • Open2Study
  • Google
  • ewant
  • FUN
  • IOC-Athlete-MOOC
  • World-Science-U
  • Codecademy
  • CourseSites
  • opencourseworld
  • ShareCourse
  • gacco
  • MiriadaX
  • JANUX
  • openhpi
  • Stanford-Open-Edx
  • 网易云课堂
  • 中国大学MOOC
  • 学堂在线
  • 顶你学堂
  • 华文慕课
  • 好大学在线CnMooc

Copyright © 2008-2015 MOOC.CN 慕课改变你,你改变世界