算法导论学习计划

下面是一个优秀的程序员应该掌握的基础知识以及较为靠谱的学习路线:

  • 计算机体系架构:读《深入理解计算机系统》,做完Lab Assignments
  • 数据结构与算法:读《算法导论》,做完习题
  • 操作系统:读《现代操作系统》和《操作系统概念》中的任何一本,跟着MIT 6.824课程,把xv6撸一遍

上面的任何一门课程都是难啃的骨头,但是一旦啃完,必定能擦亮你的獠牙,大杀四方!

以前通过其它几本书学习算法,追求简单实用,总觉得不够扎实。现在想通过系统的学习,彻底巩固一下这门可能是最重要的课程。《算法导论》江湖人称CLRS,该书用伪代码描述算法,理论推导和证明很多,偏学究派,学习难度较大。网络上有人说,刷完这本书就是牛人;也有说这本书是时间黑洞,性价比不高;甚至还有读完全书做完几乎所有习题,最后觉得没很大卵用的案例。但大体上有个共识:读完这本书,基本不需要看其它的算法书。我都浪费过那么多时间,不在乎再「浪费」些,笨人就用傻办法吧!

我读的是第3版,以中文版为主,有翻译得不好的地方再参考英文原版。我会在网站上记录学习进度:贴出每一章的重要内容和自己的代码实现;习题尽量做,如果涉及到复杂的公式推导,为了不影响士气,可以先跳过,选择做那些性价比更高的习题。我将完成程度分为三个级别:

  • 及格:完成前四部分,包括基本的数据结构以及算法的设计与分析技术(动态规划、贪心算法和摊还分析)
  • 优秀:继续完成第五、六部分,包括B树、Fibonacci堆、图算法等高阶内容
  • 完美:继续完成第七部分,主要是特定领域的算法,比如矩阵运算、数论算法、字符串匹配等

达到及格水平是底线,最好能够在2020年结束之前达到优秀水平。在这里晒出学习计划,就等于昭告天下我立志啃完CLRS,希望天下人能督促我的学习。

2020年5月更新:我去年改行当了老师,算法导论对我不再那么重要,已经学习的内容完全满足我日常工作的需要。现在已经转移重心,以后有需要再继续研读该书吧!