关键词: MIT挑战 自我学习 CS4挑战
0. 前言
上一版的CS4 Challenge,已经是2020年定下的计划。回顾这五年,我从一个不懂C的实习生小白,到可以独立承担项目的牛马,可以说CS4 Challenge的帮助功不可没。两门Python课算是帮我编程入了门,6.087让我掌握了基本的C语法和数据结构,CSAPP和6.S081虽然还没有完成,但为我理解计算机体系结构和底层编程打开了一扇窗。简而言之,通过这几门课程的学习,让我在毕业之后,能够胜任一些简单的任务,勉勉强强地完成工作。
但这远远是不够的。随着在剑桥这一年环境的适应,以及工作项目的变化,我愈加感受到自己的基础知识的薄弱和编程能力的欠缺。业务上的生疏可以通过小组沟通和内部文档得以解决,但基础概念和编程实践,只能花时间下死功夫,没有捷径。这一点,也是我感受到科班出身和非科班出身,最大的差别。
说到花时间,下功夫,同时也要避免一种急于求成,贪心的心态。这个也想学,那个也想学,然而都只是浅尝辄止,没有恒心。有恒心,也就意味着有一个合理且考虑冗余量的计划,计划能够结合实际和自己的兴趣,自己也能够遵循计划,按时按点地执行。这就是上一版计划欠缺的地方— 贪多,执行不力。
再回到计划本身,原本的技术领域方向,诸如数据中心、网络、Arm架构等依旧有效,但因为转到新的项目,也需要额外地学习并行计算、分布式系统、大模型训练等AI基础设施的内容。所以新的计划会添加与此相关的内容。另外,更重要的是,关于进度的管理必须更加细粒度一些,而且对自己要更加严格。
1. 正文
1.1 V2版本的目标
在工作五年之后,我现在的目标已不再仅仅是做一名合格的工程师,更要有做技术领导者的野心。但光有野心是不够的,如何夯实自己的基础,成为具有解决问题能力的团队合作者,同时能够理解技术之上的业务或者商业逻辑,把握住两者共轭发展的趋势,这远远超出V2版本计划的目标。但话又说回来,万丈高楼平地起,没有对基本概念的深刻理解,没有实际的上手实践,最后只会高谈阔论,也很难做一个服众的技术领导者。所以,这一版的计划是上一版计划的进阶版,一方面继续完成之前剩余的课程和内容,另一方面针对新的知识查缺补漏。
- 回顾计算机体系和操作系统的基本概念,代码级别理解锁、并发、系统调度、文件系统等概念
- 复习C++的基础语法,熟悉C++的高级特性,实现一个TCP/IP协议栈
- 加深对计算机体系结构的理解,从硬件层面上理解CPU的实现
- 基于3的基础上,理解计算机系统,尤其是多核并发系统的性能瓶颈,形成自己的一套性能分析与优化的方法论
1.2 V2版本课程列表与预计学时
- CMU 15213: Introduction to Computer Systems (预计剩余学时30~50h)
- MIT 6.S081: Operating System Engineering(预计剩余学时50h+)
- Stanford CS106L: Standard C++ Programming (预计学时20h)
- Stanford CS149: Parallel Computing (预计学时150h)
- Stanford CS144: Computer Network(预计学时100h)
- Temple: High-Performance Computing Technologies (预计学时40h)
Optional
- ETH Zurich: Digital Design and Computer Architecture (预计学时100h)
- ETH Zurich: Computer Architecture(预计学时70h+)
- MIT 6.172: Performance Engineering of Software System(预计学时70h+)
1.3 V2版本的执行细节
上一版关于执行细节太过于模糊,这一版我听取了队友的意见,通过甘特图来计划、制定、管理以及追踪V2版本的进度。
2. 愿景
剑桥的第二年,在没有家庭的负担,没有孩子的干扰,工作项目重新开始的各种情况下,我觉得重新开始新的学习计划,是天时地利人和的事情。兴趣是做出来的,做出来是需要坚持的,坚持是需要有目标和理想的,目标和理想又是贯彻到日常每一天的习惯的。
希望再过个几年回头看,可以欣慰地告诉自己,凭借完成这版计划赋予我的技术实力,再加上工作中积累的商业理解,是我过上自己想要的生活的基础。
3. 日志
- 2025/3/9:原始计划上传