Skip to content

Latest commit

 

History

History
31 lines (19 loc) · 3.13 KB

guide.md

File metadata and controls

31 lines (19 loc) · 3.13 KB

国外大学计算机公开课学习指南

为什么要学习国外大学计算的课程?

这个问题其实是在问:

  1. 为什么要学习计算机基础知识
  2. 为什么要学习国外大学的课程

先回答第一个问题。

我们作为软件工程师,不能只是满足于熟练地在应用层编程,一定还要深入理解计算机的本质,这样我们才能解决更深度的难度、在技术的道路上越走越远。目前很多程序员还只是满足于应用层编程,这样很难构成职业竞争力,因为一个毕业半年的人也在应用层也不比十年工作经验的人差。所以不管是出于提升工作能力,还是出于提高职业竞争力的考虑,都应该深入学习计算机的基础知识。

第二个问题。

为什么要学习国外大学的课程?因为国外(尤其是美国)顶尖大学的计算机课程的质量非常高,并且事实上,这些大学培养了世界上最优秀的软件工程人才。既然网上都能找到很多它们课程的资源,那么为什么不利用好这些资源呢?其中有些课程是比较有难度的,但是如果能认认真真走完成课程,一定会非常有收获的,职业生涯会受益无穷。

我应该学习哪些课程?

公开的计算机课程非常多,但是推荐学习一些最经典的、同时又是你非常感兴趣的课程。

如果你想成为一个优秀的软件工程师,那么这些领域的课程是不可错过的:计算机网络、操作系统、数据机构和算法、数据库设计、分布式系统、编译原理。

温馨小提示

  • 因为都是英文授课,所以英语要好。如果语言是一种阻碍,那就好好利用翻译软件,同时在学习课程时顺便提高英语水平。
  • 循序渐进,方法得当,假以时日,必能学好。像 MIT 6.828 这样的课程需要两三个月(每天至少两个小时)甚至更长的时间去学习,所以要有一个长远且清晰的规划。
  • 建议学习有一定难度的、涉及很多基础知识的课程,比如说程序构造、操作系统、网络原理、编译原理的课程。
  • 一定要动手做实验,实验是国外大学课程中最精彩的部分。国外大学计算机课程最核心的一点就是造轮子(做实验),在造轮子的过程中快速提高自己的技术水平。课程里的作业和实验最好是自己独立完成,当然也可以参考别的资料,但是最好不要直接 copy 别人的代码,不然课程的效果就会大打折扣。(这一点真的很不容易做到。)
  • 在课程里认真学习附带知识,比如说操作系统课程里的汇编语言(以及 gcc、nasm 等)、分布式系统课程里的 Go 语言,以及计算网络课程和数据库设计课程里的 C++等。因为有一些课程会认为你已经学习了前置课程,但是可能你并没有学,那么就要花点时间先把这些附带知识(前导知识)也学习了,这有助于课程的完成,不然你会发现有些课程学起来是真的非常艰难。
  • 学习过程中应该做好笔记,以便在未来的整个职业生涯中回顾。