hi,小慕
课程

中国大学MOOC,为你提供一流的大学教育

hi,小mooc
数据结构与算法实战
第3次开课
开课时间: 2020年09月07日 ~ 2021年01月24日
学时安排: 4-6小时每周
当前开课已结束 已有 1916 人参加
老师已关闭该学期,无法查看
课程详情
课程评价(137)
spContent=数据结构样样扎实,各种算法精彩绝伦!欢迎进入神秘的代码世界,手把手教你编程序! 本课程用C、C++、Java、Python四种语言授课,修过一门即可修读本课程。在真实开发环境中带领大家解问题、一行一行写代码~ 沉浸式体验,让大家看看怎样由一片空白变成满屏代码~
数据结构样样扎实,各种算法精彩绝伦!欢迎进入神秘的代码世界,手把手教你编程序! 本课程用C、C++、Java、Python四种语言授课,修过一门即可修读本课程。在真实开发环境中带领大家解问题、一行一行写代码~ 沉浸式体验,让大家看看怎样由一片空白变成满屏代码~
—— 课程团队
课程概述

本课程是计算机类专业的主干基础课程,也可供其他专业学生选修。

本课程用C、C++、Java、Python四种语言授课,修过其中一门即可修读本课程。对于关键的数据结构与算法知识点,讲授多种语言的实现方式,对其他部分知识点,给出4种语言的实现代码供学生自学。在讲授过程中,引导学生理解不同语言的差异并领悟不同语言的共性,将“计算思维”融进课程,最终可让学生理解“程序设计语言只是一样工具”,编写程序时不受限于特定语言。

本课程抓住学生“动手编程困难”的痛点,在讲授数据结构与算法理论知识的基础上,重点强调实践,带领学生一行一行编写代码,将“产生思路——编写程序——运行调试”的全过程展示给学生,将算法思想和程序设计规范融入到讲授过程中,让学生有沉浸式体验。在讲授过程中,将带领学生共同寻找思路解决问题,将与学生一起遇到并修改常见错误。本课程强调过程化考核,针对程序设计的特点,设置了在线评测的习题集和测验题集,给学生提供了充足的动手实践编程的机会。在完成本课程学习后,学生将由“纸上谈兵”型转变为“实战”型,为成为合格的软件工程师和算法工程师打好坚实基础。

课程大纲
预备知识
1.1 课程简介与基本概念
1.2 用什么语言
- - > 用四种语言写个Hello World
- - > C语言特点
- - > C++语言特点
- - > Java语言特点
- - > Python语言特点
1.3 模板与泛型
- - > 为什么要用模板/泛型
- - > C++的模板
- - > Java的泛型
1.4 函数与递归
- - > 什么是函数 函数长啥样
- - > 如何定义函数 函数返回值干啥用
- - > 啥是递归
数组与字符串
2.1 数组
- - > C/C++/Java/Python 里数组的定义与使用
- - > 数组元素查找
- - > ***实例选讲:高精度加法
2.2 二维数组
- - > “二维”? 不存在的~ —— 二维数组的实质
- - > ***实例选讲:大炮打蚊子
2.3 字符串
- - > C/C++/Java/Python 字符串的定义与使用
- - > 字符串常用操作
- - > 正则表达式 自动机 与 串匹配
- - > 几种语言玩转正则表达式
线性结构
3.1 顺序表
- - > 顺序表操作:插入、删除
- - > C/C++/Java/Python 顺序表的实现
3.2 链表
- - > 链表操作:求表长、查找、插入、删除
- - > C/C++/Java/Python 链表的实现
3.3 栈
- - > 顺序栈和链式栈
- - > C/C++/Java/Python 栈的实现和使用
- - > ***实例选讲:后缀式求值
3.4 队列
- - > 循环队列和链式队列
- - > C/C++/Java/Python队列的实现和使用
- - > ***实例选讲:银行排队
4.1 二叉树及遍历
- - > 树的顺序实现和链式实现
- - > 二叉树遍历的递归实现和迭代实现
- - > ***实例选讲:统计无后代的人数
4.2 二叉搜索树(BST)
- - > BST的操作:查找、插入、删除
- - > 实现BST
4.3 平衡二叉搜索树(AVL树)
- - > AVL树的插入:一起来玩调平衡
- - > AVL树的删除
优先队列与集合
5.1 优先队列(Priority Queue)
- - > 优先队列和堆 —— 搞清楚概念了吗
- - > 堆的操作:创建 插入 删除
- - > C/C++/Java/Python 优先队列的实现和使用
5.2 集合(Set)
- - > C/C++/Java/Python 集合的实现和使用
5.3 不相交集(Disjoint Set)
- - > 不相交集/并查集/集合 —— 搞清楚概念了吗
- - > 不相交集的操作
- - > ***实例选讲:推断学生所属学校
查找与散列
6.1 常用查找方法
- - > 查找技术哪家强 —— 顺序 / 二分 / 查找树
6.2 散列
- - > 散列干啥用
- - > 冲突解决
- - > C/C++/Java/Python散列的实现和使用
排序
7.1 基本指标
- - > 哪三个基本指标?
7.2 简单排序
- - > 简单排序最快有多快?
7.3 希尔排序
- - > 变个步长
7.4 堆排序
- - > 似曾相识
7.5 分治法
- - > 归并和快排
7.6 排序算法的一般下界
- - > 速度到极限了?
7.7 桶排序与基数排序
- - > 这是什么道理
7.8 外部排序
7.9 各语言实现排序
8.1 图的概念
8.2 图的表示
- - > 邻接矩阵和邻接表
- - > 写个代码实现一下图
8.3 图的遍历(搜索)
- - > 深搜和广搜
- - > ***实例选讲:推断学生所属学校
8.4 拓扑排序
- - > DAG 和 拓扑排序
- - > 改进再改进
8.5 最短路径
- - > Dijkstra算法好理解否?
- - > 来,咱们实现一下
- - > 有负边怎么办?
8.6 最小生成树
- - > 写个Prim法
- - > 写个Kruskal法
算法设计
9.1 贪心法
- - > 哈夫曼树是贪心法构造的呀
9.2 回溯法
- - > 写个八皇后吧
- - > 再走个迷宫
9.3 分治法
- - > 求第K大数
9.4 动态规划法
- - > 求Fibonacci数的动规方法
展开全部
证书要求

    每一讲的课后,都留有两类练习,一类是在线完成的选择、是非或填空题,以下称作“随堂测验”(quiz);一类是在拼题A网站(PTA,Programming Teaching Assistant)上的编程练习题,以下称作“编程习题”。你可以自己注册帐户,随时进行练习,并不限于发布练习的时段。

    课程过半时,会安排一次期中考试,是在线完成的选择、是非或填空题,不包括编程题。期中考试在两周内用连续的60分钟完成均有效。期中考试成绩占总评的40%。

    最后,在期末后一周,会安排一次在线期末考试,需要在某一天内用连续的120分钟完成。期末考试成绩占总评的60%。如果未参加期中考试,或者期中考试成绩低于期末考试成绩,则以期末成绩为总评成绩。

 

    本课程获得证书的充分必要条件:

1.完成随堂测验:必须完成全部随堂测验(不包含视频中的提问),不能留有未做的测验。随堂测验成绩不计入课程总评成绩。

2.编程习题达标:必须在期末考试前在PTA的本课程题目集中获得200分及以上。习题分数不计入课程总评成绩。

3.合格:总评成绩[60, 80)    优秀:总评成绩[80,100]


    为了对学习者的在线学习过程更加负责,保证平台证书的严谨性和权威性,从2019年9月份开始,中国大学MOOC将不再发放免费证书;认证证书(同时有纸质版和电子版)需申请并付费:100元/份。

 

参考资料

推荐以下参考资料和资源:

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++环境,所以就不要使用了。


青岛大学
3 位授课老师
周强

周强

教授

王卓

王卓

副教授

陈宇

陈宇

副教授

推荐课程

数据结构与算法期末冲刺-5小时突击数据结构与算法

小谢老师01

25733人参加

猴博士C语言不挂科-4小时学完C语言

猴博士爱讲课

313025人参加

离散数学期末冲刺/考研-10小时突击离散数学

弓长老师

15269人参加

期末高分-8小时C语言精讲【新版】

小谢老师01

8981人参加
下载
下载

下载App