我的计算机学习之路。
学习路线:
- 刷课
- 课程源码研究+其他教材阅读
- 自己造轮子
- 学习好的开源项目,试着参与开源贡献,成为核心开发者
- 复现顶会论文
- 个人项目开发
目标:成为法布里斯贝拉和卡玛克那样做出杰出贡献的计算机科学家。
- CMake 基础使用学习
- cmake 基础
- cmake 子项目配置
- 代码静态检查
-
clang-tidy
-
clang-format
-
cpplint
-
cppcheck
-
valgrind
-
LeakSanitizer
-
- 单元测试
-
boost
-
catch2
(这个现在不常用了,因此不一定要学) -
googletest
-
- 文档撰写
-
doxygen
学习
-
-
cpack
打包 - 安装
-
boost
测试框架使用学习 -
googletest
测试框架使用学习 -
CI/CD
学习(为devops
学习做准备) -
github actions
学习(为devops
学习做准备) - C++ 简单项目模板实现
- 熟悉一个成熟的 C++ 项目模板
- 数学基础知识学习
Tip
本阶段完成所有的公开课程学习,熟练掌握数学算法+底层系统+图形编程+AI 编程+Web 前后端+软件开发+安全。
- CLRS 读完并完成所有习题
- 《数据结构与算法分析——Java 语言实现》+《算法 4》阅读,并用 Java 实现一些高级数据结构
- CS61B sp18
- CS61B sp21
- 清华大学邓俊辉 数据结构学习
- Programming Abstractions in C++ 课后习题完成
- Nand2Tetris
- Project Euler 刷完
- Codeforces 达到红名, 拿到 Legendary Grandmaster 称号
- Atcoder rating 达到 2800
- Leetcode Medium 和 hard 习题刷完
Tip
本阶段研究前面部分经典公开课程的课程源码,必须研究透彻,巩固基本知识。
Tip
本阶段实现一些经典轮子的再造,在造轮子的过程中需要思考如何更好地设计。
- Linux 系统管理和配置学习
- 配置 Arch Linux ,作为后期主力环境
-
gitlet
-
TinySTL
- cpp-python
- mini-C
- javascript interpreter
- Scheme interpreter
- Scala compiler
- CPU 模拟器,可运行 Linux
- 一些小的操作系统构件,如 FAT32 文件系统
- 一个小型操作系统,可以运行在 ARM/RISCV32/RISCV64 机器上
- 小型 TCP/IP 协议栈,让操作系统联网
- 小型关系型数据库
- KV-Store 数据库
- NoSQL 数据库
- 实现 mysql 协议,支持 mysql 连接
- 为数据库添加实现分布式协议
- 实现 Web 版本数据库
- C++实现 raftcore 分布式算法
- C++实现 Paxos 分布式算法
- 成为逆向工程和 binary hacking/binary exploition, pwn 的大佬
- 给系统提安全漏洞补丁
- 称为计算机系统黑客!
Tip
本阶段根据前面造轮子时期遇到的问题,研究一些经典的开源项目,提出 Patch 和优化甚至研究方法,努力成为 core developer!
- CPython
- Qemu
- Linux
- LLVM
- MySQL
- PostgreSQL
Tip
本阶段搜集一些系统顶会,并且对其系统进行复现,根据论文对已有的系统进行一些优化。本阶段需要达到毕业博士生的科研水平。
Tip
本阶段阅读一些自我提升的书籍,增强自己对社会的认知水平、自己的思想水平、以及领导力。
Tip
本阶段进行个人项目的开发,目的是像卡玛克和法布里斯贝拉那样实现一些改变世界的工程项目。
Tip
本阶段的目的是找到年薪百万的工作并赚到钱,攒钱 1000 万。