核心方法:learn from best
看行业中最优秀的人怎么做,看行业中培养出最优秀人才的机构怎么做。
- 做法:
- 查看北美计算机四大本科课程设置
- 具体核心知识如下:
- 编程语言学,算法与数据结构,操作系统、计算机网络,数据库,分布式系统
学习途径
1.学习公开课
公开课平台推荐
平台:
课程特点
- 课程资料齐全:包含视频、课件、Lab(实验)以及方便配置的实验环境或虚拟机。
- 对于程序员来说,仅懂理论是不够的,Lab 是最重要的部分。
名校课程资源丰富:
- Stanford
- MIT
- UCB
- CMU
搜索建议:
在搜索引擎中输入 Stanford/CMU/MIT/UCB + OS/DB/Networking 等关键词,可找到高质量课程。
课程推荐
-
- 适合编程入门,注重函数式编程思想。
-
The Missing Semester of Your CS Education
- 涵盖 Shell、Git、Tmux 等实用工具,提升日常开发效率。
-
Data Structures and Algorithms Specialization (UCSD)
- 内容涵盖:贪心算法、分治算法、动态规划
- 数据结构:动态数组、哈希表、二叉树等
-
CSAPP, CMU: Intro to Computer Systems
- 深入讲解数据在计算机中的存储方式、汇编语言、程序优化、内存分级、控制流等。
-
CMU 15-445/645 Intro to Database Systems
- 内容包括:数据库存储、缓存机制、查询执行、事务处理等。
-
- 涉及系统调用、页表、异常处理、多线程、进程管理等内容。
-
Stanford CS144 Computer Networking
- 从零开始实现 TCP 协议,理解网络通信底层原理。
-
- 实现 Raft 协议,构建 KV Server,实现动态分片等分布式系统核心内容。
课程优势
- 难度可控:每门课程都有从易到难的系列课程,若某门课程太难,可选择前置课程。
- 学习时间灵活:通常为 10-20 周,每周约 1 小时的讲座。
- 基础知识要求明确:有明确的前置课程要求。
- 作业设置合理:一般包含 4-10 个 Lab,每个 Lab 完成时间在 5-20 小时之间。
- 学习曲线平滑:循序渐进,适合自学和系统性学习。
2.阅读经典书籍
例如unix网络编程,unix环境高级编程,,csapp等 除少数书籍以外(例如csapp),绝大多数书籍很难有平滑的学习曲线,很难控制学习时间,作业设置也不是很好
3.学习方法论
《精力管理》 《成功动机与目标》 《深度工作》 《学习之道》