完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,推荐你关注 炼瓜研究所 ,或者从 Mega Project List (https://github.com/karan/Projects/)中选取自己喜欢的项目。
编程
启蒙
编程基础
学习导引
MIT 6.00.1x (麻省理工:计算机科学和 Python 编程导论)
Harvard CS50x (哈佛大学:计算机科学)
廖雪峰Python教程
熟悉完python就学习 The C Programming
入门
入门阶段需要做什么
入门阶段导引
SICP 计算机程序的构造和解释
辅导资料
Udacity CS212 Design of Computer Program:由上文提到的Google 研究主管 Peter Norvig 主讲,教学语言为 Python,内容有一定难度。 https://www.udacity.com/course/cs212
How to Design Programs, Second Edition:HtDP 的起点比SICP低,书中的内容循循善诱,对初学者很友好,如果觉得完成SICP过于困难,可以考虑先读一读 HtDP。 http://www.ccs.neu.edu/home/matthias/HtDP2e/Draft/index.html
UC Berkeley SICP 授课视频以及 SICP 的两位作者给 Hewlett-Packard 公司员工培训时的录像(中文化项目) https://github.com/DeathKing/Learning-SICP
Composing Programs:一个继承了SICP思想但使用Python作为教学语言的编程导论(其中包含了一些小项目) http://composingprograms.com/
SICP 解题集:对于书后的习题,作为初学者应尽力并量力完成。 http://sicp.readthedocs.org/en/latest/index.html
完成了这部分学习后,你会逐步建立起一个自己的程序设计模型,你的脑子里不再是一团乱麻,你会意识到记住库和语法并不会教你如何解决编程问题,接下来要学些什么,在你心里也会明朗了很多。这时候才是真正开始进行项目实践,补充推动力的好时机。关于项目实践:对于入门阶段的初学者,参与开源项目还为时过早,这时候应该开始一些简单的项目,诸如搭建一个网站并维护它,或是编写一个小游戏再不断进行扩展,如果你自己的想法不明确,推荐你关注 炼瓜研究所 ,或者从 Mega Project List (https://github.com/karan/Projects/)中选取自己喜欢的项目。
读 The Elements of Computing Systems http://book.douban.com/subject/1998341
进阶
计算机系统基础
深入理解计算机系统
The Hardware/Software Interface(https://www.coursera.org/course/hwswinterface),这门课的内容是 CSAPP 的一个子集,但是最经典的实验部分都移植过来了。同时,可以看看 The C Programming Language(http://book.douban.com/subject/1139336/),回顾一下C语言的知识。
数据结构与算法基础
算法导论
课程 麻省理工学院:算法导论
结合SICP,读《编程珠玑》,《程序设计实践 》
编程语言基础
学习资源
《程序设计语言-实践之路》:CMU 编程语言原理的教材,程序语言入门书,现在就可以看,会极大扩展你的眼界,拉开你与普通人的差距。
Programming Languages(https://www.coursera.org/course/proglang):课堂上你能接触到极端 FP (函数式)的 SML,中性偏 FP 的 Racket,以及极端 OOP (面向对象)的 Ruby,并学会问题的 FP 分解 vs OOP 分解、ML 的模式匹配、Lisp 宏、不变性与可变性、解释器的实现原理等,让你在将来学习新语言时更加轻松并写出更好的程序。
Udacity CS262 Programming Language(https://www.udacity.com/course/cs262):热热身,教你写一个简单的浏览器——其实就是一个 JavaScript 和 HTML 的解释器,完成后的成品还是很有趣的;接下来,试着完成一个之前在SICP部分提到过的项目:用Python写一个 Scheme Interpreter(http://inst.eecs.berkeley.edu/~cs61a/fa13/proj/scheme/scheme.html)