本课程是计算机类专业的主干基础课程,也可供其他专业学生选修。
本课程用C、C++、Java、Python四种语言授课,修过其中一门即可修读本课程。对于关键的数据结构与算法知识点,讲授多种语言的实现方式,对其他部分知识点,给出4种语言的实现代码供学生自学。在讲授过程中,引导学生理解不同语言的差异并领悟不同语言的共性,将“计算思维”融进课程,最终可让学生理解“程序设计语言只是一样工具”,编写程序时不受限于特定语言。
本课程抓住学生“动手编程困难”的痛点,在讲授数据结构与算法理论知识的基础上,重点强调实践,带领学生一行一行编写代码,将“产生思路——编写程序——运行调试”的全过程展示给学生,将算法思想和程序设计规范融入到讲授过程中,让学生有沉浸式体验。在讲授过程中,将带领学生共同寻找思路解决问题,将与学生一起遇到并修改常见错误。本课程强调过程化考核,针对程序设计的特点,设置了在线评测的习题集和测验题集,给学生提供了充足的动手实践编程的机会。在完成本课程学习后,学生将由“纸上谈兵”型转变为“实战”型,为成为合格的软件工程师和算法工程师打好坚实基础。
1-预备知识 [01:50:21 18段]
1-1-课程简介与基本概念 [1段 共00:04:01]
1-2-用什么语言 [7段 共00:40:37]
1-3-模板与泛型 [4段 共00:27:07]
1-4-函数与递归 [6段 共00:38:36]
资料与测验
2-数组与字符串 [02:49:24 30段]
2-1-数组 [9段 共01:12:33]
2-2-二维数组 [8段 共01:02:13]
2-3-字符串 [13段 共00:34:38]
资料与测验
3-线性结构 [05:20:03 47段]
3-1 顺序表 [8段 共00:56:34]
3-2 链表 [11段 共01:35:57]
3-3 栈 [12段 共01:04:45]
3-4 队列 [16段 共01:42:47]
资料与测验
4-树 [06:06:32 35段]
4-1 二叉树及遍历[19段 共02:56:20]
4-2 二叉搜索树[9段 共01:47:14]
4-3 平衡二叉树[7段 共01:22:58]
资料与测验
5-优先队列与集合 [04:32:40 34段]
5-3 不相交集(Disjoint Set)[11段 共01:56:23]
资料与测验
5-1 优先队列 [18段 共02:17:58]
5-2 集合 [5段 共00:18:19]
6-查找与散列 [01:54:29 11段]
6-1 常用查找方法 [1段 共00:15:05]
6-2 散列 [10段 共01:39:24]
资料与测验
7-排序 [05:37:14 30段]
7-1 基本指标 [1段 00:04:58]
7-2 简单排序 [5段 共00:57:09]
7-3 希尔排序 [1段 00:06:15]
7-4 堆排序 [2段 共00:31:10]
7-5 分治法 [10段 共01:38:24]
7-6 排序算法的一般下界[1段 00:04:43]
7-7 桶排序与基数排序 [2段 共00:22:50]
7-8 外部排序 [1段 00:06:52]
7-9 各语言实现排序 [7段 共01:44:53]
资料与测验
8-图 [07:59:45 41段]
8-1 图的概念 [1段 00:14:33]
8-2 图的表示 [15段 02:52:47]
8-3 图的遍历(搜索) [8段 01:42:35]
8-4 拓扑排序 [4段 00:34:59]
8-5 最短路径 [8段 01:41:22]
8-6 最小生成树 [5段 00:53:29]
资料与测验
9-算法设计 [02:38:25 13段]
9-1 贪心法 [3段 00:39:03]
9-2 回溯法 [3段 00:48:31]
9-3 分治法 [2段 00:18:39]
9-4 动态规划法 [5段 00:52:12]
资料与测验
为积极响应国家低碳环保政策, 2021年秋季学期开始,中国大学MOOC平台将取消纸质版的认证证书,仅提供电子版的认证证书服务,证书申请方式和流程不变。
电子版认证证书支持查询验证,可通过扫描证书上的二维码进行有效性查询,或者访问 https://www.icourse163.org/verify,通过证书编号进行查询。学生可在“个人中心-证书-查看证书”页面自行下载、打印电子版认证证书。
完成课程教学内容学习和考核,成绩达到课程考核标准的学生(每门课程的考核标准不同,详见课程内的评分标准),具备申请认证证书资格,可在证书申请开放期间(以申请页面显示的时间为准),完成在线付费申请。
认证证书申请注意事项:
1. 根据国家相关法律法规要求,认证证书申请时要求进行实名认证,请保证所提交的实名认证信息真实完整有效。
2. 完成实名认证并支付后,系统将自动生成并发送电子版认证证书。电子版认证证书生成后不支持退费。
推荐以下参考资料和资源:
0. 《数据结构与算法分析》(原书第2版),[美]Mark Allen Weiss著,机械工业出版社。可选英文原版或中译版,可选C语言描述版、C++语言描述版或Java语言描述版。
1.《数据结构》(第2版),陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2016年6月
2. 《数据结构学习与实验指导(第2版)》,陈越、何钦铭、徐镜春、魏宝刚、杨枨 编著,高等教育出版社,2019年7月
3. 课程练习网站:
(1) 拼题A(Programming Teaching Assistant): https://pintia.cn/ 本课程的编程练习将在这里布置。
(2) PAT(Programming Ability Test):https://www.patest.cn/ 网站提供往届考试真题。
Q : 我是计算机小白(啥也不会),可以学这门课吗?
A : 需要至少学会一门编程语言才可以学这门课。编程语言初步学会就行,不需要精通,在这门课的学习过程中,语言会越磨越精的。
Q : 我不是计算机类专业的,可以学这门课吗?
A : 有兴趣就欢迎学,兴趣是第一驱动力。需要至少学会一门语言,参考上一个问题的回答。
Q : 我已经学过数据结构理论课,还有必要学这门课吗?
A : 如果感觉动手能力比较强了,就不需要学了。如果感觉理论初通、动手差点,那十分建议学习这门课,再夯实一下。
Q : 我没学过数据结构理论课,可以直接学习这门课吗?
A : 虽然这门课着重讲解实战(实现)部分,但理论部分也都讲了,只是讲得稍微概略一些。如果没学过数据结构理论课,想直接学习本门课程,一般都是没问题哒!如果哪里的理论知识实在是搞不明白,本课程推荐的参考资料之一《数据结构》(第2版)通俗易懂,十分适合自学,翻书看一下一般就OK啦。
Q : 我想先学习一门语言,再来学习这门课。推荐哪种语言?
A : 随便。随便哪种语言都好。我们讲授时,用C和C++多一些,用Java和Python少一些。程序猿和程序媛是不会被语言给绊住的,只要真正搞懂一门语言,就很容易搞懂其他语言。所以语言的不同,不是障碍。我们用四种语言讲授,目的是让大家逐渐进入“无招胜有招”的状态,编程序时不受限于具体语言,而是掌握算法的本质。
Q : 学了这门课之后,我就是优秀程序猿(媛)了吗?
A : 师傅领进门,修行看个人。这门实战课,重在实战,大家只要多想、勤练,相信都会修炼成优秀程序猿(媛)的。想检验一下自己水平的话,推荐参加PAT考试(https://www.patest.cn/ )。
Q : 好吧,我决定开始学习这门课了!那么,我安装什么版本的开发环境?
A : 课程的第一讲,会给出建议安装的开发环境列表。一般来说不要安装太旧版本的开发环境。C环境至少要支持C99;C++的环境至少支持C++11;Java至少是JDK8;Python需要Python 3。
Q : 我用 VC++ 6.0 可不可以涅?
A : 参考上一个问题的回答——不要用太旧的IDE。VC++6.0 是为师在2000年当学生时用的IDE啊,太老了…… VC++6.0既不是标准的C环境,也不是能支持新标准的C++环境,所以就不要使用了。