国内大学生靠公开课改变人生 去加州IT公司上班
原标题:自学 CS 总结
额...标题的 CS 指的是 Computer Science... 计算机科学...
首先这只是我个人的总结,希望能提供大家一些好的建议或者想法,至于具体的可实施性和可推广性就不做任何保证了...其实主要是“我上过的与 CS 有关的公开课的总结”,不过为了名字的短小精悍所以...
只是汇报一下我学了这些课,而且做一些个人的评价,并不代表着就等同于 CS 的学位了...额,操作系统编译等等都没上过这是必然不能比的...我只是上了这些课,而且这些课都属于 CS 的范畴而已。现在也只不过是拿到了 offer 所以汇报一下,肯定还要继续学的...忘了哪位同学评论的对,这些都是 CS Technology,主要面向的其实是非 CS 专业的同学,打一些基础吧,毕竟现在不会 programming 什么的基本寸步难行啊...
如果确实准备通过自学 CS 来找工作,那么最好先确保有足够的时间,能力和毅力。大忙人,作业写不完天天赶 ddl 的,数学恐惧症,编程恐惧症或者重度拖延症基本可以点叉了。而且请至少留出一年时间来学习吧。
我的背景本科是药学和心理,MS 是 Columbia 的 Biostatistics,然后工作拿到了...加州某小 IT 公司(也就是说你们大部分不会知道名字的公司)的 offer,package 勉强可以跟 CS MS comparable 这样。不过鉴于这里面有极大的运气成分所以没有任何可推广性和借鉴价值。然后我就进入正题说自学 CS 了。
我的背景算是统计吧,然后这样的话是要往 machine learning 的方向转,完全没必要我也不愿意做纯码农 or Software Engineer,我投的基本上还是比较交叉的 Data Scientist 或 Modeling Scientist 这样。需要一定的 programming 能力但是要求并不深。除此之外可能会一些 database 或者 machine learning 会有帮助...我学其他的基本是个人爱好。其他专业的同学请看看就好了...而且申请 OPT 什么的时候还要考虑工作和学位的匹配程度。
首先一点,一定要是免费!或者基本免费...为什么不旁听的原因是我在医学部的校区离计算机系的主校区还是有相当距离的,所以我懒得去...不过现在网络上有极其丰富的教学资源,尤其是在计算机这方面更是非常丰富。这里我用的主要是三个平台:
Coursera
Coursera,由 Stanford 的吴恩达(什么没听说过?英文名应该更熟叫 Andrew Ng)和 Daphne Koller 教授创建,现在有 200 多面课程,基本上有 100 多所大学吧,其中 CS 的课应该就有 50+。他们的特点是每门课都有一定的开放时间,而且有 deadline,如果没有赶上开放时间就要等半年或者更长时间才能赶上下次开放...所以要上的话建议提前半年到一年看好所上课程的下次开课时间。(如 果是某门课的 first run 那么很可能会推迟开课...)最后一般会给 certificate,但是不会有人看那玩意的...编程作业会有,不过一般不会限定语言。课程跟大学内教授的相似,会更偏理论。课时基本上是5-8 周,然后每门课的用时不定,2-4 小时吧,如果有 programming assignment 会更多。
说一下 PA(Programming Assignment),PA 这个东西我觉得是非常好也非常有用的。有实验表明学习的最好方式之一就是通过教别人,而 PA,我的理解就是把你的概念教给计算机的一个过程,所以真的是非常有用的,不做 PA 基本等于白学虽然有些夸张但是收获少了 80% 应该是会有的。
Udacity
Udacity,cofounder 是 google 一个教授,另一个也是 stanford 的...课非常 flexible。只要材料全部 post 了那么什么时间上都可以,什么时间完成作业也都没要求,适合填充碎片时间(比如 coursera 的课很少的时候安排看 Udacity),会更加注重应用,会有 autodesk,nvidia 的人去讲。并且我认为很适合学编程。用的 Python 较多,如果没注明的话默认就是 python 了,最近也有需要C/javascipt/HTML 的课。缺点是他的视频是 upload 到 Y2B 上面的(虽然现在基本都开放下载了),所以需要KX上网。技术好的请KX上网的,技术不好的请搞一个V*P*N,一个月也没多少钱,跟你学到的知识相比绝对物超所 值。课基本是 7 周,6 周的正课,最后一周一般是叫点牛人然后来个展望这样...每周时间也要看 programming 的比重,不会很多。
其他
主要是 iTunes U 或者翻译过来的网易公开课,相比而言视频的质量会非常差...没了。不是特别推荐。优点是网易公开课的话是有中文翻译的。这个一般相比,看视频的时间需要的较多。
然后我第一次上 Coursera 的时间是 4.23,第一次上 Udacity 的时间是 4.18,也就是说到现在也没有一年。这之前我的编程经验是:R,基本可以熟练运用...如果统计的同学R或者 Matlab 应该是肯定会一个的吧...然后后面我会按照我上的课的时间顺序给出评价。基本上 5 星是必选,4 星是 machine learning 必选,3 星是推荐,2 星是一般,1 星是不推荐。
0、MIT 计算机科学导论,5 星。请到网易公开课找,或者 iTunes U 等找英文资源。我上课的时间是大四。讲的内容基本是以 python 编程为主,并且会涉及到一定的 OOC(面向对象)的内容,鉴于后面的课都跟 OOC 没什么关系所以这个课也还是挺好的。讲的也不错,相比之下 harvard 的 CS101 我就很不喜欢...
1、Udacity CS101 Intro to CS: 2.5 星,作为入门课是很可以的,讲的也很适合美国人(对我的意思是他们比较笨),不过如果有了 MIT 的做基础这个基本就跟玩似的...有时间上了就好也不花什么精力。或者直接作为 python 入门也是不错的。内容基本是 build a toy search engine。还算有趣。
2、Udacity CS262 Programming Language:5 星,通过 build 一个 javascript 和 html 的 interpreter 可以对计算机语言的运行方式有一个更深层次的理解。尤其是对于各种 syntax error 之类的。而且他的成品基本上是 Udacity 所有课里面最 exciting 的,老师的声音也很好听。难度适中。有前两个的基础应该问题不大
3、Udacity CS212 Design of Computer Program: 5 星,Google 的 Peter Norvig 讲,基本讲完之后的感觉就是所有编程都没问题了...不过也很难,我当时每周的课都...比较困难。因为当时我是 101,212,262 还有 machine learning 同时上的,外加还要抽出一点点时间复习期末考试...每周基本上都能有一定的成果,第一周是 poker,然后后面还有 word game,game solver,grammar 等等非常有趣的内容,极力极力推荐。难度,挺难的,不过收获也非常大。顺便这老师我特喜欢,也是 Udacity 的 cofounder。
4、Coursera Machine Learning:4 星,ML 必须课需要说什么么...不过比较偏应用,会介绍 Neural Network,但是对 SVM 基本上一带而过。还有 recommendation system 和别的一些较应用的内容。没有 reinforcement learning 的部分,unsupervised 也比较浅。有 PA,没有期末考试,一般人这课都能拿满分吧因为没有限制尝试的次数...用的语言是 Octave/Matlab,难度一般。顺便 Andrew Ng 的奇怪的中国口音实在是听起来好爽。以及老师也是 Coursera 的 cofounder,还经常来中国玩。
5、Coursera Software Engineer for SaaS: 1 星,看情况应该是不再开了,随便说几句。课的视频直接就是上课录得,质量很差非常没有诚意,而且感觉就是一直在卖自己的教材的样子。课...因为上的太早 了我完全没概念所以也基本没听懂。勉强做了前面几个 PA 实在忍不了了最后这个课我就基本没上...用的是 Ruby on Rails。
6、Coursera Human-Computer Interaction: 2 星,一般。没什么特别的意思...有些需要自己设计界面什么的对那种基本不感冒。而且后面居然开始讲统计和实验心理学一类的东西了我有些接受不了...
7、Udacity CS253 Web Application: 3 星,挺不错的课,就是最后用 GAP 搭建一个非常简单的 blog 以及 wiki。能够提供一些关于网页应用的 insight (当然非常浅),做的东西也算是非常有意思的,另外用的平台是 Google 的 GAP,国内的同学请准备KX上网。难度适中。而且最后一单元会谈到很多很实用的问题比如 scale 什么的。而且能给一些关于 software engineering 的 idea。
8、Coursera Algorithms: Design and Analysis Part 1: 5 星,这个是 Stanford 开的那版,不是 Princeton 的,后者我没上过不过据说更浅一些。老师很有激情语速也比较快,写字也很难看...不过看多了就习惯了。算法对 CS 是非常重要的,也是面试常考的。这个介绍的是基本概念 big-O,还有 sort 和 search。每周都有 PA,基本是给 input 然后求 output 这样,不限定语言,不过 python 有时候会非!常!慢!难度适中
9、Coursera Cryptography I: 3 星,Stanford 的密码学,讲得很详细,而且也非常难...毕竟都是最最聪明的人在搞这些玩意。有很多非常奇妙的 trick。不过难的同时同样的也很有挑战性。这个比较偏理论。有三星的自虐指数,难度是真的很难。
10、Udacity CS373 AI: Robotics: 3 星,是 Udacity 另一位 cofounder 讲的,也很不错介绍了 particle filter 和A*什么的。缺点是一开始重复了两周的非常基础的 probability 的内容,不然的话还是可以考虑给 4 星的...难度适中。
11、Udacity CS387 Applied Cryptography: 也是密码学,一视同仁给 3 星。这个就很应用,理论的部分不多,而且 cover 的比 Coursera 的多(Coursera 的毕竟只是 part I、part II 还遥遥无期。。)每单元最后都有 challenge 题目,是真的很变态...尤其是 final 的最后一题,设计得非常巧,有大概四五个环节要把很多学到的东西都用上。做的感觉就跟拿着藏宝图寻宝,然后一个一个解开线索一样...因为是密码学,所以 必须的自虐指数三星,难度也真的很难。另外上这课有时候也需要KX上网。
12、Udacity CS215 Algorithms:3 星吧,鉴于有上面的 algo 了这个也不是很难...算是巩固好了。介绍的重点是关于 graph 的,dijkstra 什么的...老师很有趣,见过一面。难度适中。
13、Udacity CS258 Software Testing: 1 星,我上过的 Udacity 最差劲的课,课内容非常少,而且总之这个现在也用不到。我反正是有时间就上了。唯一的收获是中间写了一个数独的 solver,然后我自我感觉写得很不错...导致后面我对数独完全失去兴趣了...
14、Coursera Quantum Mechanics and Quantum Computation:2 星。量子...啊这些其实没什么关系上纯是兴趣因为密码说过量子计算机可以破 RSA... 然后非常难,非常虐。所以就不推荐了...我现在也只能记住最基本的 qubit 的共轭...
15 Stanford Machine Learning: 4 星。是 iTunes U 上面的,Andrew Ng 在斯坦福的讲课视频,相比前面 coursera 的就更理论,虽然没有 NN 的内容,但是 svm 讲得很细,还有 ica 和 reinforcement 的部分。总之算是巩固基础,然后相辅相成。同样我还是很喜欢吴恩达老师的口音!
16、Coursera Web Intelligence and Big Data: 1 星。大部分很浅,不喜欢。而且考试非常无厘头。不过基本上介绍得很全面,包括 file system 也涉及到了。PA...比较傻逼。不过也不是很花时间,所以还好。
17、Udacity CS222 Differential Equation:3 星,在学校基本算是没学过微分方程所以挺遗憾的...这个课也有涉及很多实际问题所以算是有趣。画的图也很好看...总之最后的感觉就是世界真和谐,世界 真奇妙,世界真美好。而且用 matplotlib,需要的同学可以借鉴一下。
18、Coursera Introduction to Computational Finance and Financial Econometrics:2 星,本科难度的课,基本上很傻逼...前面 70% 都是在复习什么矩阵啊概率啊之类的...用的是R。会有一些 time series 的东西...还有一点关于股票的,不然根本就是白上了...
19、Coursera Probabilistic Graphical Models: 3.5 星,和 Machine Learning 的关系也没有那么大,还不算一定必选。老师是 Coursera 的另一位 cofounder,内容是研究生级别的,很难,PA 也很难。我现在有些概念也没完全理解透...而且内容很多。借用 weibo 上老师木的评价:“别的都是讲的术,图模型讲的是道”。自虐指数三星。我当时经常周六下午做这个 PA 做的死去活来...
20、Coursera Neural Networks for Machine Learning: 4 星。现在 Deep Learning 的领军人大牛 hinton 亲自讲授。内容有点...晦涩,但是理解之后概念还是不错的。PA 什么的难度也适中。不算特别变态。
21、Udacity CS313 Theoretical Computing:2.5 星,主要讲关于 NP 的,这个 topic 还是蛮有趣的。Programming 的比重也不大,应该可以轻松上完...因为确实跟 CS,主要是找工作的话关系没那么大所以到不了 3 星,何况 NP 后面还有 5 星课程会 cover 到...
22、Udacity CS259 Software Debugging: 2 星。主要是 Coursera 的课都上完了没事就上了。内容如题...其实也可以,但是我肯定不是这么 debug 的...
23、Udacity CS271 Intro to Artificial Intelligence: 4 星。Udacity 当年的第一门课。两个 cofounder 讲。对于 ML,NLP,CV,机器人,game theory 等都有所涉及。看完了我突然觉得...尼玛原来我感兴趣的这些全都是 AI 啊...不难,没有 PA,花点时间就好了。
24、Coursera Algorithms: Design and Analysis Part 2: 5 星。必须的五星,之前的 part 2,内容是 greedy algorithm,dynamic programming 和 NP。涉及的东西很多,PA 也变态了很多 python 真的特别慢。在此力荐 pypy。没什么可说的算法是必须看的。而且这俩 part 加起来本科毕业生的水平至少就有了...
25、Coursera Interctive programming in Python:2.5 星,用他们自己建的一个 GUI 去遍图形界面,也算是 python 入门课。很简单,不过如果是 machine learning 的话用处不大...(这门课当是因为没时间只是看了视频,也没有做作业,没拿 certificate)
26、Coursera: Intro to Database: 3 星现在搬到 Class2Go 上面去了貌似。介绍数据库,包括一些 xml 啊 json 什么的还有 nosql 的部分。当然大头是 SQL,因为考 SAS 证的时候学过了,所以也就看看。不过数据库对于 big data 什么的还是很重要的(准确地说 nosql 数据库还有 DFS 什么的很重要...),所以应该还是看看比较好。
27、Coursera Computing for Data Analysis: ?星,简单的但是比较系统的介绍R语言。看各位的需要了。时间只有 4 周,感觉老师讲的还不错。
28、Coursera Game Theory: 2 星,感觉...好奇怪的,感觉什么都没说就上完了,最后就记得一个词叫纳什均衡了...而且很浅,尤其是 rational 的假设令我感到很不安...当然我会说我选这课的时候根本不知道 Game Thoery 是博弈论...我还以为是什么游戏之类的呢...
29、Coursera Image and video processing:3 星,介绍基本的关于 image processing 的东西,挺好的。有时候挺好奇 PS 里那些效果是怎么办到的,就看这个就好了...当然那部分貌似跟 PDE 有关所以其实我基本没看懂...
30、Udacity CS344 Parallel Computing:2.5 星,用的是 build on C 的 CUDA。因为主要是为了提高运算速度所以用C还是可以理解的。因为不熟悉C...所以上成了一个傻逼啊!不过有些概念学一下还是很有助于开阔眼界的。现 在 Program GPU 也很是流行的样子...而且我觉得挺难,主要是C完全不熟。这门课的唯一宗旨就是提高 Performance,是非常 practical 的一门课,虽然其实 Udacity 很多课都很 practical...
31、Coursera Linear and Discrete Optimization:2 星,有很弱智的 PA,基本就是填空题。然后就是线性规划嘛...主要 cover 了 simplex 算法等。也不是很花时间。后面还有一些很有趣的应用比如在 graph 上面的。越上越觉得真的是很奇妙。
32、Coursera Natural Langauge Processing:一开始是想看在是鄙校的份上违心给个 3.5 星的,上完之后觉得还是可以给 4 星的...这个课主要是先期准备不足所以一开始很乱套导致扣了很多印象分。讲的算是清楚明白,只是不知道到底 cover 了多少,PA 难度也还可以。不过那些东西感觉都太经典了...是不是有点过时了啊...NLP 基本也和 ML 关系很紧密,所以个 3.5 也不算很过分...最后又给了一个 optional 的 PA 导致我很感动,外加是鄙校的缘故果断 4 分。
33、Coursera Social Netwrok Analysis: 3 星,社交网络诶很火的,虽然讲的似乎也比较浅,而且老师没有照片上那么好看...上完了,感觉讲的确实比较浅。有同学推荐 Stanford 的 network,看上去这个 Umich 全部 8 周的内容在那里也就3-4 周...不过反正每周也就 1 个多小时的时间,不能要求太多了...
34、Udacity CS255 HTML5 Game Development: 可以给 1.5 星么,真的不是很喜欢这门课,虽然讲课的是 Google 的,但是 quiz 什么的设计的特别粗糙,意思就是一般而言 solution 的答案直接提交都是会有错的...也不像一般的课有独立的 pset 或者 final,这门课所有的内容就是围绕一个 game 展开的。不过如果真的有兴趣做这方面的话,收获还是挺大的。而且非常适合作为 OOC 的教材。不过总体而言由于 quiz 太烂的问题打下 2 分。而且似乎有一个单元必须用 chrome 才可以。
35、Udacity CS291 Interactive 3D Graphics:2.5 星。用 Three.js 吧,build on javascript。恩,想想这是魔兽会用到的技术我就觉得很有动力...内容非常具体也非常多,涵盖面非常广,可能是 Udacity 内容相对而言较多的一门课,不过由于前后隔的时间比较长...我觉得很多概念都记不太清了,所以学的效果不能算好,但是其实很有趣的。
以下课程是我在上的还没上完...
36、Coursera Computational Neuroscience: 2.5 星。用一点 Octave,恩,老师感觉挺有趣的,才刚 3 周,不过感觉内容不会太差。总之 computation 的东西和 Neuroscience 我都学过所以这个应该比较无压力吧哈哈哈
37、Intro to Data Science: 4 星,最近发现 UW 的课出其不意的很靠谱啊...这个课只上了第一周但是感觉来说是非常靠谱的,实用性很强,虽然相比 CS 感觉会更适合统计的同学...不过目前的感觉就是如果有志于做 Data Scientist 请一定要上这门课。会使用 Python,SQL,R,基本上这些 Data Scientist 也是必须的。
38、High Performance Scientific Computing: 4 星,同样 UW。这门课同样是非常 statistic friendly,因为是在 applied math 系下面的,对于一些 commend line 的东西会手把手的教。而且练习目测也很靠谱。唯一一点就是没有 certificate,不过学到东西是最重要的吧。同样实用性非常强(意思就是一般面试也不会考,但是日常绝对很常用)。根据 Syllabus 看,会教部分 Python,Fortran 90,OpenMP,推荐所有真的打算从事这个行业的非 CS 的同学学习。上第一周的时候还只是 3.5 分现在想想觉得 4 分一点也不亏,可能还会给到 4.5...(太偏实用不太好给 5 分)
下面这个课我没上过:
Coursera Complier,所以也没法打分,用的应该是C,目测比较难但是上过的同学感觉收获还是很大的...不过因为 python 不用 compile 所以我也没什么概念...
总结:必上:MIT 的导论,Udacity 262、212,Coursera 上斯坦福的算法。还有 Andrew 在 Coursera 和 Stanford 上面的两版 Machine Learning。
另外我们有个关于 Udacity 和 Coursera 这些公开课的 QQ 群:244689946 (课程图谱),有一些下载的资源在:http://blog.coursegraph.com/公开课可下载资源汇总
最后的废话:感谢 Andrew Ng,Peter Norvig 等人的努力,没有他们就不会有这么多这么好的免费资源给我们。我的偶像是 Steve Jobs 和 Walt Disney,他们不仅改变了我,也改变了世界。Andrew 他们还不算,因为虽然这些公开课改变了我,但是还没看到他们改变世界,不过他们都还活着...所以我觉得肯定会看到那一天的。另外感谢他们给这么好的机会 和资源,我觉得如果可能的话我会贯彻终身学习,坚持一直学习下去的...
以及感谢太傻的任老师虽然把我搞出国服务就算结束了但是一直还在帮我...发各种信息给我(虽然大多不靠谱),但是 Udacity 和 Coursera 也是他介绍的...我后面找工作的 position 大部分也是他发给我的...虽然造就了超低的回复率但是至少我要去的公司也是包含在里面的...
好吧再加一句太傻的服务基本上似乎是不太好的,这真的不是广告啊你们妹的,有这么广告的么...只不过这个老师是真的对我不错...