核心方法:learn from best

看行业中最优秀的人怎么做,看行业中培养出最优秀人才的机构怎么做。

  • 做法:
    • 查看北美计算机四大本科课程设置
  • 具体核心知识如下:
    • 编程语言学,算法与数据结构,操作系统、计算机网络,数据库,分布式系统

学习途径

1.学习公开课

公开课平台推荐

平台:

课程特点

  • 课程资料齐全:包含视频、课件、Lab(实验)以及方便配置的实验环境或虚拟机。
  • 对于程序员来说,仅懂理论是不够的,Lab 是最重要的部分

名校课程资源丰富

  • Stanford
  • MIT
  • UCB
  • CMU

搜索建议
在搜索引擎中输入 Stanford/CMU/MIT/UCB + OS/DB/Networking 等关键词,可找到高质量课程。

课程推荐

  1. Composing Programs

    • 适合编程入门,注重函数式编程思想。
  2. The Missing Semester of Your CS Education

    • 涵盖 Shell、Git、Tmux 等实用工具,提升日常开发效率。
  3. Data Structures and Algorithms Specialization (UCSD)

    • 内容涵盖:贪心算法、分治算法、动态规划
    • 数据结构:动态数组、哈希表、二叉树等
  4. CSAPP, CMU: Intro to Computer Systems

    • 深入讲解数据在计算机中的存储方式、汇编语言、程序优化、内存分级、控制流等。
  5. CMU 15-445/645 Intro to Database Systems

    • 内容包括:数据库存储、缓存机制、查询执行、事务处理等。
  6. MIT 6.S081 Operating System

    • 涉及系统调用、页表、异常处理、多线程、进程管理等内容。
  7. Stanford CS144 Computer Networking

    • 从零开始实现 TCP 协议,理解网络通信底层原理。
  8. MIT 6.824 Distributed Systems

    • 实现 Raft 协议,构建 KV Server,实现动态分片等分布式系统核心内容。

课程优势

  • 难度可控:每门课程都有从易到难的系列课程,若某门课程太难,可选择前置课程。
  • 学习时间灵活:通常为 10-20 周,每周约 1 小时的讲座。
  • 基础知识要求明确:有明确的前置课程要求。
  • 作业设置合理:一般包含 4-10 个 Lab,每个 Lab 完成时间在 5-20 小时之间。
  • 学习曲线平滑:循序渐进,适合自学和系统性学习。

2.阅读经典书籍

例如unix网络编程,unix环境高级编程,,csapp等 除少数书籍以外(例如csapp),绝大多数书籍很难有平滑的学习曲线,很难控制学习时间,作业设置也不是很好


3.学习方法论

《精力管理》 《成功动机与目标》 《深度工作》 《学习之道》