自学CS总结-by 要有光LTBL

转载 2013年12月06日 12:12:44

转自:课程图谱博客

这篇文章大半年前看过,原作者 要有光LTBL 同学也在课程图谱的群里,这两天群里讨论的时候想到了这篇文章,还花了一点时间扒了出来,所以征得作者有光大神的同意,转发和备份到这里,顺便给课程做了一个内部链接。以下系转载:

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

只是汇报一下我学了这些课,而且做一些个人的评价,并不代表着就等同于CS的学位了。。。额,操作系统编译等等都没上过这是必然不能比的。。。我只是上了这些课,而且这些课都属于CS的范畴而已。现在也只不过是拿到了offer所以汇报一下,肯定还要继续学的。。。

如果确实准备通过自学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什么的时候还要考虑工作和学位的匹配程度。

首先一点,一定要是免费!或者基本免费。。。为什么不旁听的原因是我在医学部的校区离计算机系的主校区还是有相当距离的,所以我懒得去。。。不过现在网络上有极其丰富的教学资源,尤其是在计算机这方面更是非常丰富。这里我用的主要是三个平台:

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群:244689946 (课程图谱)

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

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

好吧再加一句太傻的服务基本上似乎是不太好的,这真的不是广告啊你们妹的,有这么广告的么。。。只不过这个老师是真的对我不错。。。


相关文章推荐

自学计算机科学CS总结-by 要有光LTBL

这篇文章大半年前看过,原作者 要有光LTBL 同学也在课程图谱的群里,这两天群里讨论的时候想到了这篇文章,还花了一点时间扒了出来,所以征得作者有光大神的同意,转发和备份到这里,顺便给课程做了一个内部链...

WebGL自学教程——WebGL示例:12. 要有光

12. 要有光        WebGL没有光(没有像OpenGL中那样提供光方面的API)。要想有光,那就全靠我们自己进行计算了。      在http://learningwebgl.com...
  • tiewen
  • tiewen
  • 2011-10-29 22:03
  • 3206

Mycat十分钟入门---上帝说要有光,于是便有了光

10分钟入门MyCAT是使用JAVA语言进行编写开发,使用前需要先安装JAVA运行环境(JRE),由于MyCAT中使用了JDK7中的一些特性,所以要求必须在JDK7以上的版本上运行。 1 环境准备 ...

CS294A Lecture Notes by Andrew Ng

  • 2015-10-25 23:44
  • 583KB
  • 下载

Photoshop CS6 自学(二)图像知识

Photoshop自学 第二节 第二章 图像相关知识学习 像素与分辨率 什么是像素 什么是分辨率 位图图像 矢量图像 图像的颜色模式 位图模式 小扩展 灰度模式 双色调模式 索引颜色模式 RGB模式 ...

Photoshop CS6自学(五)图片编辑

Photoshop CS6自学五图片编辑 修改图像大小 像素大小 文档大小 缩放样式 约束比例 自动 插值方法 修改画布大小 当前大小 新建大小 画布扩展颜色 旋转画布 撤销返回恢复文件 用历史记录面...

Photoshop CS6自学(一)认识

Photoshop CS6 自学 第一节 第一章 进入CS6世界 Photoshop的发展历史 CS6的工作界面 菜单栏 标题栏 文档窗口 工具箱 选项栏 状态栏 面板 首选项设置Photoshop...

本科学材料,读研学CS找工作总结,强烈推荐!

CS找工作总结 从去年7月份开始准备,到今年5月底确定下来,我找工作断断续续也有个快一年了,现在回想起来还是有些东西想分享出来,给后来的人做个参考,毕竟在准备的过程中还是看了前人的心得面经之类的东西...

因子分析、主成分分析(PCA)、独立成分分析(ICA)——斯坦福CS229机器学习个人总结(六)

因子分析是一种数据简化技术,是一种数据的降维方法。 因子分子可以从原始高维数据中,挖掘出仍然能表现众多原始变量主要信息的低维数据。此低维数据可以通过高斯分布、线性变换、误差扰动生成原始数据。 因子...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)