CS之路

必学的七门课:

  • CS 61B
  • MIT 6.Null
  • CMU 15-213
  • MIT 6.S081

  • MIT 6.031(TypeScript)

  • CMU 15-445


  • CS 61C
  • MIT 6.001(
  • MIT 6.824
  • CS 144

摘录自:hujinming-tips

推荐学习从一门导论课程开始,然后是6.null,然后是Berkeley的CS61系列。之后学习算法课程、操作系统课程、组成原理/体系结构课程与计算机网络课程。再之后,我相信各位已有足够的判断力选择自己感兴趣或者是需要学习的课程了。再次强调,上课不做题,等于白上课。

数学

MIT 18.01MIT 18.02:微积分。

MIT 18.06:线性代数

Harvard Stat110:概率论。印象深刻的有一句话,”Random variable is a function”。

MIT 6.042J:Mathematics for Computer Science. 在我看来最有趣的数学课,如果TA能少上几节课就好了:(

CS导论

MIT 6.001:Introduction to Computer Science and Programming in Python

Harvard CS50: This is CS50!一门很好的导论课程,覆盖的范围非常之广,且内容与MIT的导论课程颇为互补。

CS实用课程

MIT 6.null: CS实用工具集合介绍。强烈推荐早点看这门课,非常实用。这里有我之前写的一篇简介文章。

数据结构与算法

MIT 6.006: Introduction to Algorithms,教材是CLRS。

Berkeley CS61系列: 其实我没上过这门课,因为当年入门CS的时候这门课似乎还没录像?现在有公开的录像了,而且口碑也非常好。

MIT 6.046: Design and Analysis of Algorithms. 进阶版,但其实前面6.006就已经内容不少了。

Stanford也有几门有点老但是也非常好的相关课程。不过我觉得上面这些课程内容更新,质量也不逊色,各位就看自己喜好来挑选吧。

算法笔记:胡凡著。一位浙大学长写的使用c++实现基础数据结构与算法的书,写得挺清晰的,里面的代码也很实用。我现在面试之前还会翻一下这本书上一些算法的实现。

操作系统

CMU 15-213: 教材是CSAPP。

Berkeley CS162:youtube和B站上都有2019Spring的视频。professor上课上得很好,hw和lab也都很给力。美中不足的是hw的autograder没有开放出来,但好在lab有提供test case。

MIT 6.824: 分布式系统。不久前终于感人地放出视频了。

MIT 6.S081/6.828:2020也放出视频啦~

Modern Operating System

组成原理/体系结构

CMU 15-213:教材是CSAPP。

MIT 6.004:Computer Structure. 偏硬件,老师讲得很好。

MHRD: From NAND to CPU. Steam上一款有趣的小游戏,从NAND开始搭建各种逻辑电路,最后制作出一款简易的CPU。这里有我之前写的一篇简介文章。

CMU Computer Architecture: 无论是在CMU还是ETH,Onur每年都会将这门课的录像和课程资源都公开,这是怎样的一种情怀Orz 19年的录像中Slide不是很清晰,可以自己使用双屏配合一下;或者观看18年的录像。

Computer Architecture: a Quantitative Approach

计算机网络

Stanford CS144: 这门课多年前有一个mooc版本,后来不知道为啥被撤了,但是授课视频还是流传了出来。我个人不是很适应这门课的授课视频,看的有点犯困,但是课程的Lab还是出得很好的。

Computer Network: a Top Down Approach

编程语言

Berkeley CS61系列: 系列的几门课使用的是不同的语言,也都有很不错的配套作业,又基本都有视频公开,因此蛮推荐使用这个系列的课程来学编程语言的。

Stanford CS41: Python Language Programming. 可惜没有视频,作业挺有意思的。其实我觉得学语言比较好的一种方式就是学了语法之后做一些练手的项目、作业,这样会掌握得比较快。

Stanford CS106L: C++ Language Programming. 前文也介绍过了,我觉得那本Full Course Reader写得真的很好,推荐一下~

还有一些领域内很知名的书,这里就不再专门推荐啦,这些课程里也会有介绍/推荐。这里再啰嗦一句,对大多数人来说,往往只需要学会某种编程语言中20%不到的常用特性,而这20%的常用特性往往占了实际使用这门编程语言中的90%。所以我不是很建议一开始弄本厚厚大大的书看,那样又吃力又缺少反馈,而且可能会花大量精力在自己根本用不到的地方。我其他的编程语言似乎都是用官方tutorial入门的,这里也就不推荐啦。

软件工程

MIT 6.031: Software Construction. 算是介绍软件工程的一些知识吧,包括如何写出更鲁棒的代码等等。有很好的在线阅读资料,但可惜没有公开的视频。

MIT 6.172: Performance Engineering of Software Systems. 讲的是如何优化程序的性能,非常有趣的一门课。

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2020-2022 Doke
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信