一路 BBS

 找回密码
 注册
搜索
查看: 3771|回复: 2

转载 自学CS总结

[复制链接]
发表于 5-9-2013 19:34:44 | 显示全部楼层 |阅读模式
转载  自学CS总结

http://blog.renren.com/share/240140575/15616859544?from=0101010

首先这只是我个人的总结,希望能提供大家一些好的建议或者想法,至于具体的可实施
性和可推广性就不做任何保证了。。。



如果确实准备通过自学CS来找工作,那么最好先确保有足够的时间,能力和毅力。大忙
人,作业写不完天天赶ddl的,数学恐惧症,编程恐惧症或者重度拖延症基本可以点叉
了。而且请至少留出一年时间来学习吧。



我的背景本科是药学和心理,MS是Columbia的Biostatistics,然后工作拿到了。。。
加州某小IT公司(也就是说你们大部分不会知道名字的公司)的offer,package勉强可
以跟CS MS comparable这样。不过鉴于这里面有极大的运气成分所以没有任何可推广性
和借鉴价值。然后我就进入正题说自学CS了。



我的背景算是统计吧,然后这样的话是要往machine learning的方向转,其他专业的同
学请看看就好了。。。而且申请OPT什么的时候还要考虑工作和学位的匹配程度。



首先一点,一定要是免费!或者基本免费。。。不过现在网络上有极其丰富的教学资源
,尤其是在计算机这方面更是非常丰富。这里我用的主要是三个平台:



1, Coursera,由Stanford的吴恩达(什么没听说过?英文名应该更熟叫Andrew Ng)和
Daphne Koller教授创建,现在有200多面课程,基本上有100多所大学吧,其中CS的课
应该就有50+。他们的特点是每门课都有一定的开放时间,而且有deadline,如果没有
赶上开放时间就要等半年或者更长时间才能赶上下次开放。。。所以要上的话建议提前
半年到一年看好所上课程的下次开课时间。(如果是某门课的first run那么很可能会
推迟开课。。。)最后一般会给certificate,但是不会有人看那玩意的。。。编程作
业会有,不过一般不会限定语言。课程跟大学内教授的相似,会更偏理论。课时基本上
是5-8周,然后每门课的用时不定,2-4小时吧,如果有programming assignment会更
多。



2, Udacity,cofounder是google一个教授,另一个也是stanford的。。。课非常
flexible。只要材料全部post了那么什么时间上都可以,什么时间完成作业也都没要求
,适合填充碎片时间(比如coursera的课很少的时候安排看Udacity),会更加注重应
用,会有autodesk,nvidia的人去讲。并且我认为很适合学编程。用的Python较多,如
果没注明的话默认就是python了,最近也有需要C/javascipt/HTML的课。缺点是他的视
频是upload到Y2B上面的(虽然现在基本都开放下载了),所以需要翻墙。技术好的请
翻墙的,技术不好的请搞一个V*P*N,一个月也没多少钱,跟你学到的知识相比绝对物
超所值。课基本是7周,6周的正课,最后一周一般是叫点牛人然后来个展望这样。。。
每周时间也要看programming的比重,不会很多。



3, 其他,主要是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,国内的同学请准备翻墙。难度适
中。而且最后一单元会谈到很多很实用的问题比如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的最后一题,设计得非常巧,有大概四五个环节要把很多学到的东西都用上。做
的感觉就跟拿着藏宝图寻宝,然后一个一个解开线索一样。。。因为是密码学,所以必
须的自虐指数三星,难度也真的很难。另外上这课有时候也需要翻墙。



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语言
。看各位的需要了。



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完全不熟。



31, Coursera Linear and Discrete Optimization:2星,有很弱智的PA,基本就是填
空题。然后就是线性规划嘛。。。主要cover了simplex算法等。也不是很花时间。



32, Coursera Natural Langauge Processing:看在是鄙校的份上违心给个3.5星吧。
。。这个课主要是先期准备不足所以一开始很乱套导致扣了很多印象分。讲的目前为止
也中规中矩,PA难度也还可以。不过那些东西感觉都太经典了。。。是不是有点过时了
啊。。。NLP基本也和ML关系很紧密,所以个3.5也不算很过分。。。



33, Coursera Social Netwrok Analysis: 3星,社交网络诶很火的,虽然讲的似乎也
比较浅,而且老师没有照片上那么好看。。。



34, Udacity CS291 Interactive 3D Graphics:2.5星。用Threejs吧,build on
javascript。恩,想想这是魔兽会用到的技术我就觉得很有动力。。。



下面这个课我没上过:



??: Coursera Complier,所以也没法打分,用的应该是C,目测比较难但是上过的同学
感觉收获还是很大的。。。不过因为python不用compile所以我也没什么概念。。。



总结:必上:MIT的导论,Udacity 262, 212,Coursera上斯坦福的算法。还有Andrew
在Coursera和Stanford上面的两版Machine Learning。



另外我们有个关于Udacity和Coursera这些公开课的QQ群:424077



最后的废话:感谢Andrew Ng,Peter Norvig等人的努力,没有他们就不会有这么多这
么好的免费资源给我们。我的偶像是Steve Jobs和Walt Disney,他们不仅改变了我,
也改变了世界。Andrew他们还不算,因为虽然这些公开课改变了我,但是还没看到他们
改变世界,不过他们都还活着。。。所以我觉得肯定会看到那一天的。另外感谢他们给
这么好的机会和资源,我觉得如果可能的话我会贯彻终身学习,坚持一直学习下去的。
。。



以及感谢太傻的任老师虽然把我搞出国服务就算结束了但是一直还在帮我。。。发各种
信息给我(虽然大多不靠谱),但是Udacity和Coursera也是他介绍的。。。我后面找
工作的position大部分也是他发给我的。。。虽然造就了超低的回复率但是至少我要去
的公司也是包含在里面的。。。
--
回复

使用道具 举报

 楼主| 发表于 5-9-2013 19:35:25 | 显示全部楼层
发信人: demoner (New York State of Mind), 信区: biojailbreak
标  题: Re: 转载  自学CS总结
发信站: BBS 未名空间站 (Tue Apr  9 17:27:27 2013, 美东)

Many of them are too theoretical and too machine learning for beginners,

I would recommend the first three in Stanford Engineering Everywhere:

http://see.stanford.edu/see/courses.aspx
Programming Methodology CS106A
Programming Abstractions CS106B
Programming Paradigms CS107

All class videos are on Youtube. These three is about Java, C++ and C
language programming skills with algorithm examples. It will give you a
solid foundation on programming.
回复 支持 反对

使用道具 举报

 楼主| 发表于 5-9-2013 19:35:53 | 显示全部楼层
发信人: demoner (New York State of Mind), 信区: biojailbreak
标  题: Re: 转载  自学CS总结
发信站: BBS 未名空间站 (Tue Apr  9 22:49:32 2013, 美东)

The title is "自学CS", I just suppose it's aiming for beginners,
Any beginner in "CS" should have a solid understanding and skills
in C, C++, Java, and be able to apply them to algorithms.

Of course, for a pure data analyst job, R or Python should be enough.

But only being able to code R or Python, is not easy to land a job
nowadays.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表