实验工具
任意一门语言即可,最好是c++/java(用于日后课程的实践环节)
数据结构/算法
书:可以看看《算法第四版》(java写的),讲的很清晰(没有动态规划的内容,可以去算法导论看一看专门章节)
课:书的作者授课,也就是大名鼎鼎的普林斯顿算法课(coursera打开太慢可以找b站)
Princeton University 丨 Algorithms Part 1
Princeton University 丨 Algorithms Part 2
注:不习惯英文授课直接看书即可,这部分主要在练。对于c++,stl容器是掌握数据结构的利器。个人建议,学一部分就去找leetcode上对应的题去敲一敲
计组/操作系统
屠龙技!
这里推荐cyc大佬的github,覆盖知识点较广.
入门课:南大袁春风老师的计算机系统基础(1~4),对标CMU的15-213。需要做lab加深理解,强烈推荐南大的lab.
书(需要基础——》至少能看懂书里的汇编):黑书csapp(深入理解计算机系统),书很厚,周期较长。可以去知乎找读书笔记辅助阅读,比如https://wdxtub.com/csapp/thin-csapp-0/2016/04/16/
进阶(lab很难):黑书作者的课——CMU15-213
此外,操作系统还有一个lab——》清华的ucore
tips:顺手学会使用linux,掌握linux比较重要
计算机网络
个人感觉计网和os在初学过程中没有必要的顺序之分。。。入门视频可以参考哈工大计算机网络.
lab可以参考cs144,找知乎或者github的解析
书可以看看《图解http》《计算机网络:自顶向下》
形式语言与自动机
去年学了一部分形式语言与自动机,感觉这可能是编译原理的先修课程之一。学完自动机再去看编译原理中的词法分析/句法分析等内容,更容易上手。。。
自动机课程视频,书可以看看蒋宗礼的形式语言与自动机(绿皮书)
个人感悟,多画图,定理推导比较绕,可以学完回头再看。。。有一定能力可以用编程语言实现DFA/NFA/正则/PDA/图灵等等。学完它,你至少可以了解字符串是怎么匹配的,不仅仅是KMP算法嗷,哈哈哈~
这里推荐一个自动机画图软件——JFLAP
另外,形式语言与自动机,可能会用到离散数学内容,这部分遇到的时候对应补一补即可。因为离散数学内容很多很杂,我们应该抓主要矛盾~
也可以看看自动机滴神写的《自动机理论、语言和计算导论》,个人感觉中文版翻译的一般,可以找英文版。另外大神的课暂不推荐,真的很劝退。。。
编译原理
屠龙技进阶了~ 能力有限,还没触摸到,不做过多推荐。欢迎一起学习讨论,共勉~
掌握两点:实践出真知,一定找lab做;英文课程固然好,但是中文课程也比较适合入门,不必强求。
中文课到学堂在线或者mooc找精品就行
- 国外课举例:Cs143 -》edx上有对应的课,地址
- 注:要证书和无时间限制需要199美刀(类似于coursera)。免费课有视频以及quiz和assignment(够用了),不过学习进度有时间限制(我的是两个月)。实验的虚拟环境找b站课程的评论~
- 善用社区多找知乎的回答,比如斯坦福大学编译原理课程质量怎么样? - RednaxelaFX的回答 - 知乎