重学CS核心课程,达到美国一流大学CS专业本科毕业水平

如果你的年龄还没有超过30岁,想在IT行业做得长久,想成为一名更优秀的工程师,甚至想往架构师或者技术领导层方向发展,那么这个目标是值得投入的,长期会有回报。

0- 掌握一门编程语言

1-课程:深入理解计算机系统

参考课程:华盛顿大学CSE351: The Hardware/Software Interface

参考书籍:深入理解计算机系统(CSAPP)

参考视频:B站 Washington CSE351 2017

产出目标:完成CSAPP书籍配套的所有Labs

挑战难度:4星

说明:这门课程是系统编程基础,也是后续操作系统/网络/数据库/编译等课程的基础,相关内容是通向系统架构师的基本功。这门课比较贴近企业实战,对动手能力要求很高,课程一大目标是要程序员写出对机器友好的高性能代码。

2- 课程:数据结构

参考课程:伯克利大学CS61B Data Structures

参考书籍:Head First Java + 数据结构书自选

参考视频:B站 UCB CS 61B Data Structures

产出目标:完成CS 61B站点上的所有Labs/Homeworks/Projects。

挑战难度:4星

说明:数据结构的重要性毋庸置疑,伯克利的CS课程都是比较偏向实战型工程师的,纯理论的东西相对少。本课的重点是树立抽象编程思维,务必把所有Labs/Homeworks/Projects都搞定。

3- 课程:操作系统

参考课程:麻省理工MIT 6.828 Operating System Engineering

参考书籍:操作系统导论(Operating Systems: Three Easy Pieces)

参考视频:B站 HMC CS 134 2019 Operating System

产出目标:完成MIT 6.828站点上的所有7个Labs

挑战难度:5星

说明:6.828是MIT的神课,这门课难度不小,含金量也不小。如果能把所有实验都搞定,对操作系统的认识会有质的飞跃。

4- 课程:计算机网络

参考课程:斯坦福 CS 144 Introduction to Computer Networking

参考书籍:计算机网络:自顶向下方法[13]

参考视频:B站 [斯坦福大学:计算机网络介绍](CS144 计算机网络介绍)

产出目标:完成CS 144 站点上的所有8个Labs。

挑战难度:4星

说明:计算机网络知识和技能,是互联网应用开发的基础,也是成为系统架构师的基础。这门CS 144和配套书《计算机网络:自顶向下方法》,是目前最佳的学习计算机网络基础的课程和参考书。这也是一门投入产出比比较高的课(学了马上能用)。

5- 课程:编译原理

参考书籍:Crafting Interpreters 或者Write an Interpreter in Go

参考视频:B站 CS143 斯坦福编译原理

产出目标:参考Crafting Interpreters,使用Java或者golang语言(或其它你熟悉的语言),实现Lox小型编程语言。

或者,参考Write an Interpreter in Go,或Write A Compiler in Go,使用Java语言实现Monkey小型语言。

挑战难度:5星

说明:视频可以不看,但是一定要自己动手实现一个小语言解释器或者编译器。

6- 课程:数据库系统

参考课程:卡耐基梅隆CMU 15-445/645 Database Systems

参考书籍:数据库系统概念

参考视频:B站 卡耐基梅隆大学15-445 数据库系统介绍

产出目标:参考vanilladb项目[23],使用golang语言实现clone版的vanilladb(原项目是Java实现的)。

挑战难度:5星

说明:视频/课程/书可以不看,但是一定要自己动手实现一个小型的数据库系统,包括服务器端的存储引擎、SQL解析器、查询引擎和JDBC访问接口。企业开发大部分是基于数据库的应用,如果要成为企业级架构师,必须对数据库底层实现有一定掌握。

来源站点: https://github.com/spring2go/cs_study_plan

请登录后发表评论

    没有回复内容