如何开始学习?
基于CS学习规划文档的建议,从基础工具开始,逐步深入到各个专业领域
先掌握命令行、Git等基础工具,然后学习数学基础
按照从初级到高级的顺序,每个阶段都打好基础
每门课程都包含实际项目,通过动手实践来巩固理论知识
循序渐进
建议学习顺序
按照这个顺序学习,可以建立扎实的计算机科学基础
阶段 1
基础工具
掌握每个计算机科学学生都需要的基础工具
阶段 2
数学基础
为计算机科学打下坚实的数学基础
阶段 3
编程基础
从多种语言开始学习编程
阶段 4
计算机系统
从硬件到软件理解计算机的工作原理
阶段 5
算法与理论
掌握计算机科学的理论基础
阶段 6
机器学习与人工智能
探索人工智能的迷人世界
阶段 7
专业领域
探索计算机科学的高级和专业领域
阶段 1
基础工具
掌握每个计算机科学学生都需要的基础工具
命令行与Shell
学习Vim、命令行基础和Shell脚本编程
Git与版本控制
掌握Git进行项目管理和协作开发
信息检索
学习信息检索技术、搜索引擎和数据索引
Docker与容器化
学习现代开发中的容器技术
阶段 2
数学基础
为计算机科学打下坚实的数学基础
微积分与线性代数
算法和机器学习的基础数学
离散数学
逻辑、集合论、图论和组合数学
概率论
机器学习和算法的基础
信息论
熵、编码和通信理论
阶段 3
编程基础
从多种语言开始学习编程
编程入门
从Python或C开始学习 - 哈佛CS50,MIT 6.100L
数据结构与算法
UCB CS61B,普林斯顿算法 - 核心CS基础
软件工程
MIT 6.031,UCB CS169 - 编写生产级代码
高级编程
斯坦福CS106B/X,MIT 6.824 - 系统编程
阶段 4
计算机系统
从硬件到软件理解计算机的工作原理
计算机体系结构
Nand2Tetris,UCB CS61C - 从零开始构建计算机
操作系统
MIT 6.S081,UCB CS162 - 编写自己的操作系统内核
计算机网络
斯坦福CS144 - 实现TCP/IP协议栈
数据库系统
CMU 15-445,UCB CS186 - 构建自己的数据库
阶段 5
算法与理论
掌握计算机科学的理论基础
算法设计
UCB CS170,MIT 6.046 - 高级算法技术
计算理论
MIT 6.045J - 自动机、可计算性、复杂性
密码学
斯坦福CS255 - 安全的数学基础
凸优化
斯坦福EE364A - 机器学习和算法中的优化
阶段 6
机器学习与人工智能
探索人工智能的迷人世界
机器学习基础
Andrew Ng ML,斯坦福CS229 - 核心ML概念
深度学习
斯坦福CS231n,CS224n - CNN、RNN、Transformer
强化学习
UCB CS285 - 深度RL和策略优化
AI系统
CMU 10-414 - 深度学习系统和优化
阶段 7
专业领域
探索计算机科学的高级和专业领域
计算机图形学
斯坦福CS148,Games101 - 渲染和可视化
并行计算
CMU 15-418/斯坦福CS149 - GPU编程和CUDA
分布式系统
MIT 6.824 - 共识、复制、容错
系统安全
UCB CS161,SU SEED Labs - 安全和密码学