学习路线
计算机科学学习路线图
进入计算机科学的分步路线,按照我如果重新学一遍会采用的顺序排列。每个资源都免费,并且来自大学、官方项目或有信誉的非营利组织。
只收录免费资源,链接每周检查
如何使用这些路线图
- 刚开始学编程?先从“基础”开始,其他所有路线都建立在它之上。
- 选定一条路线,按顺序完成各个阶段。在不同路线之间来回跳,是最常让人迷失方向的原因。
- 每个阶段结束时都要完成那个项目。看课程会让人觉得在进步,但只有项目才能证明你真的会。
- 时间按每周约 10 小时估算。慢一点没关系,但不要跳过项目。
- 大部分资源是英文的。
计算机科学基础
编程、每个开发者都会用的工具、数据结构,以及计算机和网络真正的工作原理。
- 时长
- 31–40 周
- 可从事
- 其他所有路线
适合刚入门的人,也适合靠教程自学编程、觉得知识有漏洞的人。
-
阶段 1: 学会编程 6–8 周
学习内容
动手做: 一个你自己设计的小型命令行程序,例如把数据保存到文件的记账工具。
进入下一阶段的标准: 你能不照着教程写出一个 100 行的程序。
-
阶段 2: 终端、Git 和 Linux 3–4 周
学习内容
动手做: 把你写过的所有程序放到 GitHub 上,每个都配一个简短的 README。
进入下一阶段的标准: 你能不用鼠标在终端里工作,并能解决合并冲突。
-
阶段 3: 数据结构与算法 8–10 周
学习内容
动手做: 自己实现一个哈希表和一个图搜索(广度优先和深度优先),并写好测试。
进入下一阶段的标准: 你能解释为什么字典查找很快,并能为问题选择合适的数据结构。
-
阶段 4: 计算机和网络如何工作 8–10 周
学习内容
动手做: 用原始套接字写一个极小的 Web 服务器,让浏览器能打开它返回的页面。
进入下一阶段的标准: 你能讲清楚从输入网址到看到页面之间发生的一切。
-
阶段 5: 数学和数据库 6–8 周
学习内容
动手做: 为一个小图书馆或小商店设计数据库,并用 SQL 回答 20 个相关问题。
进入下一阶段的标准: 你能写出带连接和分组的查询,并能推理简单的概率问题。
Web 开发
构建网站和 Web 应用,从用户看到的页面,到背后的服务器和数据库。
- 时长
- 28–38 周
- 先修
- 计算机科学基础
- 可从事
- 前端开发, 后端开发, 全栈开发
适合想做出别人马上就能在浏览器里使用的东西的人。
-
阶段 1: HTML、CSS 和 Web 的工作原理 4–6 周
学习内容
动手做: 一个在手机上也好用、并能通过无障碍检查的个人主页。
进入下一阶段的标准: 你能从零复刻一个你喜欢的网站的布局。
-
阶段 2: 深入 JavaScript 6–8 周
学习内容
动手做: 一个使用公开 API 的应用,例如天气查询或图书搜索。
进入下一阶段的标准: 你能不用框架做出一个交互式页面。
-
阶段 3: 前端框架和 TypeScript 6–8 周
学习内容
动手做: 一个多页面应用,包含表单、保存的状态和一些测试。
进入下一阶段的标准: 你能解释组件在什么时候、为什么会重新渲染。
-
阶段 4: 后端和数据库 8–10 周
学习内容
动手做: 一个带用户账户和数据库、写好测试并被你的前端使用的 API。
进入下一阶段的标准: 你能设计 API、安全地存储数据并为它写测试。
-
阶段 5: 安全地上线 4–6 周
学习内容
动手做: 部署你的完整应用,每次推送都自动运行测试,并对照 OWASP Top 10 检查。
进入下一阶段的标准: 陌生人在使用你的应用,而且它出问题时你会知道。
网络安全
了解系统是如何被攻击的,从而保护它们:网络、Web 应用、检测与响应。
- 时长
- 30–38 周 + 持续
- 先修
- 计算机科学基础
- 可从事
- SOC 分析师, 渗透测试工程师, 安全工程师, AI 安全研究员
适合喜欢拆解事物、想保护人和系统的好奇的人。
只测试属于你自己或已获得书面授权的系统。请使用下面的练习环境;攻击他人的系统几乎在所有地方都是违法的。
-
阶段 1: 面向安全的网络和 Linux 6–8 周
学习内容
动手做: 用 Wireshark 抓取你自己的上网流量,并简要说明每部分流量是什么。
进入下一阶段的标准: 你能读懂一份抓包并说出发生了什么,并且完成了 OverTheWire Bandit 的大部分关卡。
-
阶段 2: 安全基础 6–8 周
学习内容
动手做: 为你做过的一个应用写一页威胁模型:可能出什么问题、可能性多大、先修什么。
进入下一阶段的标准: 你能解释 TLS 如何保护登录,以及为什么密码要哈希而不是加密。
-
阶段 3: Web 应用安全 8–10 周
学习内容
动手做: 在 OWASP Juice Shop 中找出并记录至少十个漏洞,并写明每个的修复方法。
进入下一阶段的标准: 你能解释 OWASP Top 10 中的每一类,在实验环境中利用它,并修复它。
-
阶段 4: 选一个方向:防守或进攻 10–12 周
学习内容
动手做: 防守:搭一个家庭实验室,收集日志并检测三种 ATT&CK 技术。进攻:完成 20 道 picoCTF 题目并发布解题记录。
进入下一阶段的标准: 你能把实验室或解题记录展示给雇主,并讲清楚你的思路。
-
阶段 5: 专精并保持更新 持续
学习内容
免费资源
动手做: 发布一些别人能用的东西:一篇分析、一条检测规则或一个小工具。
进入下一阶段的标准: 这个阶段永远不会结束。安全每个月都在变化。
人工智能与机器学习
从学习背后的数学,到训练模型、使用语言模型,再到负责任地投入使用。
- 时长
- 35–44 周 + 持续
- 先修
- 计算机科学基础
- 可从事
- 机器学习工程师, 数据科学家, AI 研究员, MLOps 工程师
适合编程熟练、喜欢数学和做实验的人。
-
阶段 1: 机器学习的数学 6–8 周
学习内容
动手做: 只用 NumPy 实现带梯度下降的线性回归,并画出损失下降的曲线。
进入下一阶段的标准: 你能在白板上讲清楚梯度下降。
-
阶段 2: 用于数据的 Python 3–4 周
学习内容
动手做: 清洗并探索一个公开数据集,写下三个发现。
进入下一阶段的标准: 你能加载、清洗并总结一个从没见过的数据集。
-
阶段 3: 经典机器学习 8–10 周
学习内容
动手做: 一个端到端训练、在没见过的数据上测试的模型,并诚实写明它在哪里失败。
进入下一阶段的标准: 你能看出一个好分数其实是数据泄漏造成的。
-
阶段 4: 深度学习 10–12 周
学习内容
免费资源
动手做: 训练一个图像或文本分类器,并和上一阶段的经典模型比较。
进入下一阶段的标准: 你能自己编写并调试训练循环。
-
阶段 5: 语言模型 8–10 周
学习内容
动手做: 一个基于你自己笔记的问答应用,并用一个小测试集衡量它答对的比例。
进入下一阶段的标准: 你能解释模型为什么答错,并衡量一次改动是否有帮助。
-
阶段 6: 负责任地投入使用 持续
学习内容
动手做: 部署你的一个模型并加上监控,再写一份简短的模型卡,说明它不应该被用于什么。
进入下一阶段的标准: 这个阶段永远不会结束。持续发布,持续衡量。
数据分析与数据工程
把原始数据变成人们可以据此行动的答案,并构建让数据持续流动的管道。
- 时长
- 27–36 周
- 先修
- 计算机科学基础
- 可从事
- 数据分析师, 分析工程师, 数据工程师
适合喜欢提问、并在数字中寻找答案的人。
-
阶段 1: 深入 SQL 4–6 周
学习内容
动手做: 只用 SQL 回答关于一个公开数据集的 15 个真实问题。
进入下一阶段的标准: 你能用一条写得好的查询回答大多数业务问题。
-
阶段 2: 统计 6–8 周
学习内容
动手做: 分析一个 A/B 测试数据集,并用通俗的语言给经理写出结论。
进入下一阶段的标准: 你不仅能说出结果是什么,还能说出对它有多大把握。
-
阶段 3: 用 Python 或 R 做分析 6–8 周
学习内容
动手做: 一份从杂乱原始数据开始、任何人都能重新运行的完整报告。
进入下一阶段的标准: 你能在一个下午内从原始文件得到清晰的答案。
-
阶段 4: 可视化与讲故事 3–4 周
学习内容
动手做: 一个非技术人员不需要你解释就能看懂的仪表盘或一页报告。
进入下一阶段的标准: 你的图表一眼就能回答一个问题。
-
阶段 5: 数据工程 8–10 周
学习内容
动手做: 一个定时运行的管道:从 API 拉取数据,存入数据仓库,并为你的仪表盘提供数据。
进入下一阶段的标准: 你的管道能自动运行,出错时会通知你。
云与 DevOps
可靠地运行软件:服务器、容器、自动化、云平台以及保证服务在线。
- 时长
- 30–40 周
- 先修
- 计算机科学基础
- 可从事
- DevOps 工程师, 云工程师, 站点可靠性工程师, 平台工程师
适合喜欢让系统更快、更安全、更自动化的人。
-
阶段 1: 面向运维的 Linux 和网络 6–8 周
学习内容
免费资源
动手做: 搭建一台 Linux 服务器,加固 SSH,并在上面用 HTTPS 托管一个网站。
进入下一阶段的标准: 你能查出服务器为什么变慢或网站为什么打不开。
-
阶段 2: 容器 4–6 周
学习内容
动手做: 用 Docker Compose 打包一个 Web 应用及其数据库,让它一条命令就能启动。
进入下一阶段的标准: 任何人都能一步在自己的电脑上运行你的应用。
-
阶段 3: 自动化:CI/CD 和基础设施即代码 6–8 周
学习内容
动手做: 一条在每次推送时测试、构建并部署的流水线,基础设施用 Terraform 编写。
进入下一阶段的标准: 你能用代码重建整个环境。
-
阶段 4: 认真学好一个云平台 6–8 周
学习内容
动手做: 把你的应用部署到一个云平台,使用最小权限,并设置预算提醒。
进入下一阶段的标准: 你能解释你的云账单,以及谁能访问什么。
-
阶段 5: Kubernetes 与可靠性 8–10 周
学习内容
动手做: 在本地 Kubernetes 集群上运行你的应用,加上监控和一个服务等级目标仪表盘。
进入下一阶段的标准: 在用户发现之前,你就知道服务出了问题。
为什么这些链接值得信赖
我只收录可以免费使用的资源,作者是大学、工具的开发者或长期运营的非营利组织。没有推广链接,也没有付费训练营。有些大学课程可以免费学习,但证书收费,这些都已标出。一个脚本每周检查一次所有链接。
发现失效链接,或者希望增加一条路线? 联系