自学计算机科学CS总结-by 要有光LTBL
這篇文章大半年前看過,原作者?要有光LTBL?同學也在課程圖譜的群里,這兩天群里討論的時候想到了這篇文章,還花了一點時間扒了出來,所以征得作者有光大神的同意,轉發(fā)和備份到這里,順便給課程做了一個內部鏈接。以下系轉載:
首先這只是我個人的總結,希望能提供大家一些好的建議或者想法,至于具體的可實施性和可推廣性就不做任何保證了。。。
只是匯報一下我學了這些課,而且做一些個人的評價,并不代表著就等同于CS的學位了。。。額,操作系統(tǒng)編譯等等都沒上過這是必然不能比的。。。我只是上了這些課,而且這些課都屬于CS的范疇而已。現在也只不過是拿到了offer所以匯報一下,肯定還要繼續(xù)學的。。。
如果確實準備通過自學CS來找工作,那么最好先確保有足夠的時間,能力和毅力。大忙人,作業(yè)寫不完天天趕ddl的,數學恐懼癥,編程恐懼癥或者重度拖延癥基本可以點叉了。而且請至少留出一年時間來學習吧。
我的背景本科是藥學和心理,MS是Columbia的Biostatistics,然后工作拿到了。。。加州某小IT公司(也就是說你們大部分不會知道名字的公司)的offer,package勉強可以跟CS MS comparable這樣。不過鑒于這里面有極大的運氣成分所以沒有任何可推廣性和借鑒價值。然后我就進入正題說自學CS了。
我的背景算是統(tǒng)計吧,然后這樣的話是要往machine learning的方向轉,完全沒必要我也不愿意做純碼農or Software Engineer,我投的基本上還是比較交叉的Data Scientist或Modeling Scientist這樣。需要一定的programming能力但是要求并不深。除此之外可能會一些database或者machine learning會有幫助。。。我學其他的基本是個人愛好。其他專業(yè)的同學請看看就好了。。。而且申請OPT什么的時候還要考慮工作和學位的匹配程度。
首先一點,一定要是免費!或者基本免費。。。為什么不旁聽的原因是我在醫(yī)學部的校區(qū)離計算機系的主校區(qū)還是有相當距離的,所以我懶得去。。。不過現在網絡上有極其豐富的教學資源,尤其是在計算機這方面更是非常豐富。這里我用的主要是三個平臺:
1, Coursera,由Stanford的吳恩達(什么沒聽說過?英文名應該更熟叫Andrew Ng)和Daphne Koller教授創(chuàng)建,現在有200多面課程,基本上有100多所大學吧,其中CS的課應該就有50+。他們的特點是每門課都有一定的開放時間,而且有deadline,如果沒有趕上開放時間就要等半年或者更長時間才能趕上下次開放。。。所以要上的話建議提前半年到一年看好所上課程的下次開課時間。(如果是某門課的first run那么很可能會推遲開課。。。)最后一般會給certificate,但是不會有人看那玩意的。。。編程作業(yè)會有,不過一般不會限定語言。課程跟大學內教授的相似,會更偏理論。課時基本上是5-8周,然后每門課的用時不定,2-4小時吧,如果有programming assignment會更多。
2, Udacity,cofounder是google一個教授,另一個也是stanford的。。。課非常flexible。只要材料全部post了那么什么時間上都可以,什么時間完成作業(yè)也都沒要求,適合填充碎片時間(比如coursera的課很少的時候安排看Udacity),會更加注重應用,會有autodesk,nvidia的人去講。并且我認為很適合學編程。用的Python較多,如果沒注明的話默認就是python了,最近也有需要C/javascipt/HTML的課。缺點是他的視頻是upload到Y2B上面的(雖然現在基本都開放下載了),所以需要翻墻。技術好的請翻墻的,技術不好的請搞一個V*P*N,一個月也沒多少錢,跟你學到的知識相比絕對物超所值。課基本是7周,6周的正課,最后一周一般是叫點牛人然后來個展望這樣。。。每周時間也要看programming的比重,不會很多。
3, 其他,主要是iTunes U或者翻譯過來的網易公開課,相比而言視頻的質量會非常差。。。沒了。不是特別推薦。優(yōu)點是網易公開課的話是有中文翻譯的。這個一般相比,看視頻的時間需要的較多。
然后我第一次上Coursera的時間是4.23,第一次上Udacity的時間是4.18,也就是說到現在也沒有一年。這之前我的編程經驗是:R,基本可以熟練運用。。。如果統(tǒng)計的同學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星,一般。沒什么特別的意思。。。有些需要自己設計界面什么的對那種基本不感冒。而且后面居然開始講統(tǒng)計和實驗心理學一類的東西了我有些接受不了。。。
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。不過難的同時同樣的也很有挑戰(zhàn)性。這個比較偏理論。有三星的自虐指數,難度是真的很難。
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題目,是真的很變態(tài)。。。尤其是final的最后一題,設計得非常巧,有大概四五個環(huán)節(jié)要把很多學到的東西都用上。做的感覺就跟拿著藏寶圖尋寶,然后一個一個解開線索一樣。。。因為是密碼學,所以必須的自虐指數三星,難度也真的很難。另外上這課有時候也需要翻墻。
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什么的難度也適中。不算特別變態(tài)。
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也變態(tài)了很多python真的特別慢。在此力薦pypy。沒什么可說的算法是必須看的。而且這倆part加起來本科畢業(yè)生的水平至少就有了。。。
25,?Coursera Interctive programming in Python:2.5星,用他們自己建的一個GUI去遍圖形界面,也算是python入門課。很簡單,不過如果是machine learning的話用處不大。。。(這門課當是因為沒時間只是看了視頻,也沒有做作業(yè),沒拿certificate)
26,?Coursera: Intro to Database: 3星 現在搬到Class2Go上面去了貌似。介紹數據庫,包括一些xml啊json什么的還有nosql的部分。當然大頭是SQL,因為考SAS證的時候學過了,所以也就看看。不過數據庫對于big data什么的還是很重要的(準確地說nosql數據庫還有DFS什么的很重要。。。),所以應該還是看看比較好。
27,?Coursera Computing for Data Analysis: ?星,簡單的但是比較系統(tǒng)的介紹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,基本就是填空題。然后就是線性規(guī)劃嘛。。。主要cover了simplex算法等。也不是很花時間。
32,?Coursera Natural Langauge Processing:看在是鄙校的份上違心給個3.5星吧。。。這個課主要是先期準備不足所以一開始很亂套導致扣了很多印象分。講的目前為止也中規(guī)中矩,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他們還不算,因為雖然這些公開課改變了我,但是還沒看到他們改變世界,不過他們都還活著。。。所以我覺得肯定會看到那一天的。另外感謝他們給這么好的機會和資源,我覺得如果可能的話我會貫徹終身學習,堅持一直學習下去的。。。
以及感謝太傻的任老師雖然把我搞出國服務就算結束了但是一直還在幫我。。。發(fā)各種信息給我(雖然大多不靠譜),但是Udacity和Coursera也是他介紹的。。。我后面找工作的position大部分也是他發(fā)給我的。。。雖然造就了超低的回復率但是至少我要去的公司也是包含在里面的。。。
好吧再加一句太傻的服務基本上似乎是不太好的,這真的不是廣告啊你們妹的,有這么廣告的么。。。只不過這個老師是真的對我不錯。。。
源地址:?http://blog.renren.com/GetEntry.do?id=900262844&owner=232614149
總結
以上是生活随笔為你收集整理的自学计算机科学CS总结-by 要有光LTBL的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安装开源在线教育平台edX的一个简单方法
- 下一篇: 斯坦福大学深度学习与自然语言处理第一讲: