Skip to content

Latest commit

 

History

History
198 lines (133 loc) · 4.79 KB

README.md

File metadata and controls

198 lines (133 loc) · 4.79 KB

CS-Journey

我的计算机学习之路。

学习路线:

  1. 刷课
  2. 课程源码研究+其他教材阅读
  3. 自己造轮子
  4. 学习好的开源项目,试着参与开源贡献,成为核心开发者
  5. 复现顶会论文
  6. 个人项目开发

目标:成为法布里斯贝拉和卡玛克那样做出杰出贡献的计算机科学家。

Pre

Tip

cmake部分:使用cmake-examples仓库学习,完整的配置过程参考这里:cmake 配置

数学基础学习部分:见math-Journey

  • 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

计算机体系结构

系统构建

操作系统

计算机网络

数据库系统

并行与分布式系统

系统安全

Web 前后端开发 & 移动软件开发

计算机图形学

电子信息,数字信号处理和通信相关学习

嵌入式系统

密码学,网络安全,软件安全和嵌入式安全

AI 方向

算法刷题准备

  • 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 万。