1 以学习US university的课程为主.
1.1 Programming Foundations
我的学习路径:
Python 方向:
Mit Python.
Java方向:
duke java series coursera.
代码量都比较多, 比较好. 但入门肯定Mit python最好. Java比较侧重写代码.
Udacity cs101, 很多人推荐, 但我的感觉是性价比不高, 时间太长, 然后好像没有教在编辑器里编写. 适合简单的入门吧.
个人比较喜欢的是UCB 61A, 讲的东西很多, 特别是比如variable 如何存储, reference的区别, 也是讲的非常仔细, 缺点是无法在线提交作业, 如果完全没接触编程, 容易有恐惧感, debug, 安装工具比较琐粹.
Mit Edx 6.001很不错. 因为是mooc形式, 里面有教安装anado, 用编辑器, 而且课程深度很好. 所以很推荐.
如果直接入手Mit觉得难, 先上完coursera rice python 1,2, 再上mit课程也不错.
1.2 Data structure and Algorithms
我的学习路径是:
OOD design coursera -> UCB 61b -> Princeton.
好的课程有UCB 61B, 在学习完之前的mit课程后, 可以开始学61b了, 这门课最好的是quiz设计, lab, hw, Project, 非常好, 推荐版本16spring, 因为还有dp版本. 唯一不好的遗憾, 可能就是没有将backtracking技巧.
Princeton的也不错, 但不建议直接学. 感觉难度比较大.
Mit intro to algorithm可以作为理论的补充, 哪块不懂, 具体就看哪一块, 做哪一块的作业.
难度是:
OOD design coursera < ucb 61b < princeton = Mit. 学习也建议按照这个路径来.
1.3 Computer System and Architecture
cmu 15213, UW coursera, Mit computer strcuture.
1.4 Software Construction and more
Mit software 6.005.
Coursera java concurrent series.
2 学习做实用型项目, 上udemy或者udacity.
项目比较考实际操作, udacity上的课, 每个小段, 可以把细节讲的非常清楚. 但推荐按照nanodegree来学, 因为有的单独的课, 学起来比较浅, 没什么太大的作用感觉, 比如python foundation, deep learning, 之类的, 感觉不是很实用.
Udemy上的一搜, 很多可以直接做出project, 也是很不错的.
一般有时候需要补充理论知识, 再回头看coursera, edx上的理论课比较好.
学习的感想:
学习CS最重要的还是不断写代码, 不断debug, 想的多了, 写的多了才有意义. 所以每门课的视频都可以不看, 但作业是必须要做的, 只有这样才有提高.
每次很容易听老师讲, 感觉很容易, 挺好做的, 但是自己写代码, 其中的corner case, 主体怎么写, 如何debug, 这些自己思考的步骤, 才是锻炼思维, 提高编码能力, 帮助真正理解所学知识点.