编程入门指南学习路线
知乎上萧井陌和Badger共同署名的一篇文章——编程入门指南v1.4——提及了很多编程入门阶段所需要学习的内容以及相关参考资料,本文做了一个简单的整理,并提供了相关资源的链接。
本人打算从2016年开始,用3-5年的时间完成入门阶段所有学习的内容,也将用此博客记录自己的学习过程。
启蒙阶段
1. Learn Python the Hard Way
2. MIT: 计算机导论
- 支线任务:完成《Python核心编程》
3. Harvard CS50
- 阅读《编码的奥秘》
- 完成《C语言编程》
入门
1. SICP:Structure and Interpretation of Computer Programs
这本书很难,因此这里提供更多的参考材料:
- SICP 解题集:对于书后的习题,作为初学者应尽力并量力完成
- Udacity CS212: Design of Computer Programs
- How to Design Programs:低起点,更容易的SICP,如果觉得SICP困难,可以尝试这本HtDP
或者可以先跳过此书,以后再慢慢研读。
2. The Elements of Computing Systems
- 教会你从最基本的 Nand 门开始构建计算机,直到俄罗斯方块在你的计算机上顺利运行
- 这本书会贯穿你的整个编程入门阶段,你入门阶段的目标就是坚持完成这本书的所有项目(包括一个最简的编译器与操作系统)
3. 计算机系统基础
- Computer Systems: A Programmer's Perspective
- The C Programming Language
- 接触Unix系统
- 阅读《UNIX编程环境》
- 阅读《UNIX编程艺术》
- 折腾你的Unix系统
4. 数据结构与算法基础
- 算法导论或者数据结构与算法分析
- Algorithms: Design and Analysis (MOOC) [part1] & [part2]
- 注意培养使用常规算法解决小规模问题的能力: 《编程珠玑》和《程序设计实践》
5. 编程语言基础
- C++入门: C++ Primer
- [可选]进阶:
- 高效使用:Effective C++
- 深入了解:深度探索C++对象模型, C++ Templates
- 研究反思:The Design and Evolution of C++
- 其它参考教材:
- Udacity CS262: Programming Language
- 程序设计语言——实践之路