计算机科学
计算机理论与实践基础包括:
数据结构和算法是解决所有问题的通用手段,而在不同的领域里又有不同的解决方案。AI System 覆盖 AI 的全栈知识。
学习资源
https://jyywiki.cn/Reading_List.md
NJU 程序的构造:http://www.why.ink:8080/CPL/2023/
https://zhuanlan.zhihu.com/p/654821469
https://www.zhihu.com/people/lawliet111/posts?page=5
NJU OS https://njuics-wiki.github.io/ics-wiki/
- 刷题:
- 编程语言
- 数据结构与算法:
- 计算机基础
- 计算机组成
- 计算机网络
- 《计算机网络自顶向下方法》
- 《Unix 网络编程》
- 《Linux 高性能服务器编程》
- 《Linux 多线程服务端编程》
- 《TCP/IP 网络编程》
- 操作系统
- 数据库
- 分布式系统
- 6.5840 Schedule: Spring 2024
- 并行计算
- gfxcourses.stanford.edu/cs149/fall24
- 人工智能
- 编译原理
mit 6.824 / CMU 15445
Gpu:cuda 编程的优化,算子优化,flash attention,一些复杂算子的实现等
OS: 如果能理解 linux 内核的任意一个子模块,甚至子模块的部分功能就已经很牛逼了。感觉光是各种自旋锁的实现都够你喝一壶
编译:llvm,深度学习编译器等。看个人兴趣,主要是注重后端优化
网络:最新的网络技术,例如 RDMA。它的编程是怎么写的,它的协议都有什么,和 tcp 相比它的优缺点,rdma 引入的新的拥塞控制和流量控制都是什么 / DPDK 技术 / ovs / 怎么用 fpga 写网卡 / 网卡驱动等等
存储:云存储场景下跟 RDMA 更分不开了,针对不同大小,不同类型的对象怎么设计存储方式和通信,怎么做事务,纠删码之类的。以及 spdk 技术和 nvme
分布式: MIT 6.5840 (原 6.824) 学完 +raft 系列 Project 做完
计算机基础: CMU 15213 学完 +lab 做一半
操作系统: MIT 6. S 081 学完 +xv 6 lab 做完
数据结构: CS 61 B 学完 + 绝大部分 lab 做完 (差一个没做)
计算机网络也是我基础四大件之一,且这直接对应于互联网后端这一岗位,非常重要。我学习路线是:
- 阅读《计算机网络:自顶向下方法》
- 刷 CS 144
这里说明一下, 中科大的计算机网络课程也是使用的《计算机网络:自顶向下方法》这本教材, 且更精炼一些, 如果时间不够或者读教材困难, 可以选择直接刷 https://www.bilibili.com/video/BV1JV411t7ow/?spm_id_from=333.337.search-card.all.click&vd_source=bc07d988d4ccb4ab77470cec6bb87b69
同样, 时间不多的同学可以只看一下《计算机网络:自顶向下方法》就可以了, 不需要再去刷公开课的 Lab, 反正后面你大概率会通过 C++ 网络编程的学习巩固这些知识
网络
操作系统
分布式
- mit 6.824:主要是互联网场景的分布式系统 https://pdos.csail.mit.edu/6.824/schedule.html