目录
第二次月计划概览
本月需要掌握三门课程
本月学到什么程度?
三门课程详述
MIT和普林斯顿算法系列课程介绍
第一门课学习目标: 数据结构课程和初级算法
第二门课《算法》:学习目标
第三门课(算法与复杂性):学习目标
第四门课:高级算法 (时间未定)
非学习类目标
第二次月计划概览 从9.20左右起决定2年学完6个清华CS类硕士学位,距今已经66天。
第一次月计划完成度80%,一个月学了4门CS课程,现启动第二次月计划。
- 时间:11.26~12.21(25天),因突发事件时间修正为2019.1.31截止。
- 掌握3门独立课程:
- 数据结构(普林斯顿)
- 初级算法(MIT)
- 算法设计与计算复杂度(MIT)
- 从零算法基础 到 8天精读掌握《算法,第四版》和20天精读掌握《算法导论》
- 要求学习时间达到:350小时
- 本月计划失败概率:90%,尤其是算法导论部分章节的难度可能会超乎我的想象。(不怕)
本月需要掌握三门课程
25天掌握如下3门课程,以下三门课程虽然相关性强,但本质上是三门独立的课程本月学到什么程度?
- 本科生课程之数据结构(11.26~12.7号),精读掌握:普林斯顿大学教材《算法,第四版》
- 本科生课程之算法(12.8~12.16号),精读掌握:麻省理工大学教材《算法导论,上半本》,因突发事件时间修正为2019.1.10~1.31
- 研究生课程之算法设计与复杂性(12.16~12.22号)),精读掌握:麻省理工大学教材《算法导论,下半本》,因突发事件时间修正为2019.1.10~1.31
- 从零算法基础 到 8天精读掌握《算法,第四版》和20天精读掌握《算法导论》
- 我所说的掌握是:
- 要求深度掌握知识,理解知识点背后本质,知其所以然。对书中定理能够写出证明过程。不借助任何资料的情况下能够在1小时内完整详尽复述书中所有知识点, 6个月内知识点遗忘率低于70%;对于任何遗忘了的知识点,通过复习能够在10分钟内彻底回忆起来。
- 完成MIT算法系列课程体系和普林斯顿大学算法课程要求的大部分练习
- 算法导论的习题我会看心情做,我觉得做题没有太大的意义,做项目才有。
- 实现《算法,第四版》大部分书中代码
- 完成MIT和普林斯顿大学的算法系列课程的教学目标(具体的教学目标参见下文)
- 按照BFLB标准进行考试,得分至少80分以上。
- BFLB测验:https://blog.csdn.net/weixin_43314012/article/details/84032768
本月仅仅是我算法学习的第一阶段,第一阶段主要掌握知识。但是不会涉及大量的练习。
我算法学习的第二阶段是攻读TAOCP算法卷。在实现了TAOCP书内的代码后,我才会有针对性地进行刷题。
我一直反对在一些初级的知识上算题,没有意义,效率太低。
具体我后续算法学习规划详情:https://blog.csdn.net/weixin_43314012/article/details/84033313
三门课程详述 本月的学习任务是以《算法,第4版》和《算法导论》这两本教材的学习为主线,按照MIT和普林斯顿的教学要求来学习,精读掌握这两本书(仅掌握到课程要求的地步 )
MIT和普林斯顿算法系列课程介绍
- MIT算法系列课程包括三个课程(初级算法,中级算法,高级算法),课程的教授是算法导论的三位作者,其中包括图灵奖得主。
- 普林斯顿算法系列课程包括两个课程,第一阶段课程相当于数据结构课程,第二阶段课程相当于初级算法课程
- 下面分别详细陈述本月三门课程的课程学习要求
第一门课学习目标: 数据结构课程和初级算法
本课程主要按照普林斯顿大学的培养目标进行学习
普林斯顿课程链接:
第一部分:https://www.coursera.org/learn/algorithms-part1#ratings
重点介绍基本数据结构,排序和搜索。主题包括union-find,二进制搜索,堆栈,队列,包,插入排序,选择排序,shellsort,快速排序,3向快速排序,mergesort,heapsort,二进制堆,二叉搜索树,红黑树,单独链接和线性探测哈希表,格雷厄姆扫描和kd树。
第二部分: https://www.coursera.org/learn/algorithms-part2
侧重于图形和字符串处理算法。主题包括深度优先搜索,广度优先搜索,拓扑排序,Kosaraju-Sharir,Kruskal,Prim,Dijkistra,Bellman-Ford,Ford-Fulkerson,LSD基数排序,MSD基数排序,3路基数快速排序,多路尝试,三元搜索尝试,Knuth-Morris-Pratt,Boyer-Moore,Rabin-Karp,正则表达式匹配,行程编码,霍夫曼编码,LZW压缩和Burrows-Wheeler变换。
第二门课《算法》:学习目标
本课程的内容相当于本科生的第二门算法课,本质上仍然是初级算法课程。
本课程主要内容基本上和《算法导论》上半本差不多。
MIT:https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-spring-2008/
课程教材:算法导论
课程描述:本课程介绍了计算问题的数学建模。它涵盖了用于解决这些问题的常用算法,算法范例和数据结构。该课程强调算法和编程之间的关系,并介绍这些问题的基本性能测量和分析技术。
课程大纲如下
L1 介绍和文件距离 R1 Python中的文档距离(docdist {1,2,3,4} .py) L2 更多文档距离,mergesort R2 Python成本模型,渐近符号和mergesort的评论 二进制搜索树 L3 飞机调度,二叉搜索树 R3 二进制搜索树 L4 平衡的二叉搜索树 R4 AVL树(平衡二叉搜索树) 哈希 L5 Hashing I:链接,哈希函数 问题集1 R5 Hashing in Python,可变性 L6 Hashing II:表倍增,Karp-Rabin R6 Karp-Rabin评论,滚动哈希原理和代码 L7 Hashing III:开放式寻址 R7 开放式寻址:理论评论,Python代码
更多滚动的哈希
排序 L8 排序我:堆 R8 排序方法概述
作为数据结构堆积:原则,排序,优先级队列
L9 排序II:堆 问题集2 L10 排序III:下限,线性时间排序 R9 测验复习:有趣的问题 测验1 L11 排序IV:稳定排序,基数排序 R10 计数,基数和铲斗分选,气体模拟 搜索 L12 搜索I:图搜索,表示和应用程序 L13 搜索II:广度优先搜索和深度优先搜索 问题集3 L14 搜索III:拓扑排序和NP完整性 R11 广度优先搜索和深度优先搜索 最短的路径 L15 最短路径I:介绍 R12 协助解决问题 L16 最短的路径II:贝尔曼 - 福特 问题集4 R13 通用最短路径算法:概念,属性
Bellman-Ford:例子,负成本周期
L17 最短的路径III:Dijkstra R14 实践Dijkstra:伪代码,前置条件,示例,为什么它的工作原理
优先级队列:审查,扩展Python实现
L18 最短的路径IV:Dijkstra加速 R15 Dijkstra的数组实现 测验2 动态编程 L19 动态编程I:memoization,Fibonacci,Crazy Eights,猜测 R16 实践动态编程:重要思想,Fibonacci中的memoization,疯狂卡片,Dijkstra和Bellman-Ford算法作为动态编程 L20 动态编程II:最长公共子序列(LCS),父指针 R17 更有活力的节目:击败超级马里奥兄弟,获得积分测试(LCS),Crazy Eights L21 动态编程III:文本对齐,括号,背包,伪多项式时间,俄罗斯方块训练 问题集5 R18 更动态的编程:最大和子阵,更多俄罗斯方块 L22 动态编程IV:钢琴指法,结构DP(树),顶点覆盖,支配集,以及更多 R19 背包及其变体,结构动态编程:用模板覆盖树,支配集 NUMERICS L23 数字我 R20 动态编程实践:实时Python编码,支配集,结构动态编程:用模板覆盖树 L24 数字II 问题集6 R21 划分和征服与动态编程问题:矩阵乘法,塔,最大和子阵,最近对 R22 数字评论,Strassen的矩阵乘法算法
【月计划|2年学完6个清华CS类硕士学位之第二次月计划】
第三门课(算法与复杂性):学习目标
本课程是一门中高级算法课程,一般作为研究生的算法课程。重点是设计和分析高效算法的教学技巧,强调应用方法。主题包括分而治之,随机化,动态编程,贪婪算法,增量改进,复杂性和加密。
本课程主要内容基本上和《算法导论》下半本差不多。
本课程学习要求主要参照MIT6.046J课程:
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/
第四门课:高级算法 (时间未定)
这是博士生的算法课程,也是MIT算法系列课程的最高级课程:本课程涵盖了典型的算法入门课程中未学习的几个高级主题。它专为对理论计算机科学感兴趣的博士生而设计。本课程没有教科书,只有讲义和大量的阅读论文,内容已经超出了算法导论。
这门课程太过理论,且学了基本没用。但是由于我本身对理论非常有兴趣,我还是得学一学,但是不是本月的学习计划,应该会安排在下个月吧。
(但是这门课程好像也是部分院校计算机理论方向研究生阶段的课程 )
课程大纲:
文章图片
课程地址:
https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-854j-advanced-algorithms-fall-2008/
非学习类目标 从本月起,我将开始执行如下重要计划
- 2年高效学习1万个小时计划,并将此计划作为本次两年计划的核心计划之一,差不多要求平均每天坚持高效率学习14小时。
- 正式开始以科学的方式养成一系列习惯,https://mp.csdn.net/postedit/83861010
- 刻意练习:正式开始跟踪细化我的生活各个方面所耗费的时间 https://mp.csdn.net/postedit/83931868
- 30天不动如山计划 https://blog.csdn.net/weixin_43314012/article/details/83863683