良心推薦:一份20周學(xué)習(xí)計算機(jī)科學(xué)的經(jīng)驗(yàn)貼(附資源)

這里是,油管Artificial Intelligence Education專欄,原作者Siraj Raval,原標(biāo)題?Computer Science Curriculum。
這是一份五個月(20個星期)學(xué)習(xí)計算機(jī)科學(xué)的經(jīng)驗(yàn)貼,希望幫助你跟我一樣從入門到精通。
傳統(tǒng)的大學(xué)開設(shè) ACS 專業(yè),主要是引導(dǎo)學(xué)生從毫無任何編程經(jīng)驗(yàn),到對計算機(jī)科學(xué)領(lǐng)域的一些相關(guān)學(xué)科有一個較為寬泛的認(rèn)識。
WEEK 1-2 Python
在最開始,我們要學(xué)的是 Python 這種編程語言。
什么是Python?
Python是一種解釋執(zhí)行的具有動態(tài)語義的面向?qū)ο蟮母呒壘幊陶Z言。
啊什么鬼啦,定義中這么多專業(yè)術(shù)語,看不下去怎么辦?
別著急,我給大家介紹一個學(xué)習(xí)資源,這個資源不要求你了解計算機(jī)科學(xué)領(lǐng)域的相關(guān)術(shù)語也能看懂。
在網(wǎng)絡(luò)上有一本極好的免費(fèi)的書,叫做Automate The Boring Stuff With Python。這本書對編程小白來說相當(dāng)實(shí)用,書中展示了如何完成一些基本的任務(wù),例如:使用 Python 語言發(fā)送提醒郵件,移動文件夾以及格式化數(shù)據(jù)等。
我建議你第一周的時間來讀這本書,總共有18章,如果每天完成三到四個章節(jié)周末就能完成。這本書中里面有許多練習(xí),你可以在你使用的任何操作系統(tǒng)的終端上去完成這些練習(xí)。如果你在自己的機(jī)器上安裝Python時遇到了問題,可以到Python 的官網(wǎng)上查查詳細(xì)的相關(guān)信息。
在學(xué)習(xí) Python 的第二周,我推薦參加CodeAcademy的Python課程。在課程中,你的網(wǎng)頁上就會有交互式的控制臺,你可以馬上得到反饋,知道自己的代碼是否編譯正確。這些年,這個平臺的這個課程一直很受初學(xué)者的歡迎。
總共兩個周的時間,差不多足夠你對 Python 語言有一個基本的了解了。當(dāng)然,前兩周你寫的程序還不足以改變世界,但是,理解這門語言的語法、關(guān)鍵詞、使用的頻率以及為什么使用,這些都是至關(guān)重要的。它們能夠幫助你在下一階段中構(gòu)建以及理解一些數(shù)據(jù)結(jié)構(gòu)。
Automate the Boring Stuff with Python:https://automatetheboringstuff.com/
Codecademy的Python教程:https://www.codecademy.com/learn/learn-python
WEEK 3-4 數(shù)據(jù)結(jié)構(gòu)
我還記得:當(dāng)我還是哥倫比亞的一個計算機(jī)科學(xué)的大一新生時,每個人都會告訴我,在你的專業(yè)里面,你將要上的最重要的兩門課是數(shù)據(jù)結(jié)構(gòu)與算法。
在那個時候,這聽起來很滑稽。怎么能說數(shù)據(jù)結(jié)構(gòu)與算法比學(xué)習(xí)令人激動的機(jī)器人學(xué)和計算機(jī)視覺還要重要呢?
結(jié)果我被啪啪打臉了,他們是對的。
在計算機(jī)科學(xué)領(lǐng)域,如果你要創(chuàng)造出無窮無盡超級棒的應(yīng)用,你就必須理解如何正確地存儲數(shù)據(jù),以及對數(shù)據(jù)進(jìn)行處理,以便完成任務(wù)。
有一個 UC SanDiego開設(shè)的數(shù)據(jù)結(jié)構(gòu)課程,這門課程會展示給你各種各樣的數(shù)據(jù)結(jié)構(gòu)——從二叉樹到鏈表,以及在 Python 中如何實(shí)現(xiàn)這些數(shù)據(jù)結(jié)構(gòu)。
UC SanDiego的Data Structures Fundamentals:?https://www.edx.org/course/data-structures-fundamentals-uc-san-diegox-algs201x
WEEK 5-6 算法
之后,你也許會想了解一些算法方面的東西,使用Python作為基礎(chǔ)語言的最好的一門課程是MIT的算法介紹課程。在他們的網(wǎng)站上,你可以看到所有的課程和相關(guān)的筆記以及問題集。
你會注意到:當(dāng)談到數(shù)據(jù)結(jié)構(gòu)和算法,一旦你開始構(gòu)建并且能夠理解其中的一些東西,一切都會開始變得有用起來。當(dāng)涉及到數(shù)據(jù)的正確存儲時,你會開始理解,你必須要做的一些折衷處理;當(dāng)你開始考慮應(yīng)用的時候,你將能夠知道,為了完成任務(wù),你需要什么類型的數(shù)據(jù)結(jié)構(gòu)以及算法。
MIT 6.006: Introduction to Algorithms?:https://courses.csail.mit.edu/6.006/fall11/notes.shtml
WEEK 7 數(shù)據(jù)庫
接下來,無論你是構(gòu)建一個web應(yīng)用、移動應(yīng)用或者是僅僅進(jìn)行數(shù)據(jù)處理,了解數(shù)據(jù)庫如何運(yùn)作都是十分重要的。
SQL是最普遍的標(biāo)準(zhǔn)的數(shù)據(jù)庫語言,Coursera上有一門課程,課程名字叫做Using databases with Python,這門課程能夠幫助你容易地理解數(shù)據(jù)庫。
你可以跳過這門課程的第一周,繼續(xù)往后學(xué),因?yàn)槲覀円呀?jīng)了解了Python學(xué)習(xí)部分的內(nèi)容。
密歇根大學(xué) Using Databases with Python:?https://www.coursera.org/learn/python-databases
WEEK 8 網(wǎng)絡(luò)
在接下來的一周,我們將在Python上稍微停一下,轉(zhuǎn)而把注意力放在網(wǎng)絡(luò)上。
在你構(gòu)建一個需要使用互聯(lián)網(wǎng)的應(yīng)用時,你必須要弄明白:互聯(lián)網(wǎng)這個人類設(shè)計的復(fù)雜的系統(tǒng),是如何允許我們在一瞬間與全球各地的人進(jìn)行交流的。
Coursera上有一門課程,這門課程是Google開設(shè)的,叫the bits and bytes of computer networking。你會學(xué)到互聯(lián)網(wǎng)協(xié)議是如何工作的,你會弄明白,當(dāng)你向網(wǎng)頁中輸入網(wǎng)頁鏈接并且點(diǎn)擊回車鍵時,在搜索引擎之下發(fā)生了什么。
The Bits and Bytes of Computer Networking:?https://www.coursera.org/learn/computer-networking
WEEK 9-10 網(wǎng)頁開發(fā)
在你完成這一部分的學(xué)習(xí)之后,你就能開始進(jìn)行網(wǎng)頁以及移動應(yīng)用的編程開發(fā)了。我是哈佛大學(xué)計算機(jī)科學(xué)教授David Malan的忠實(shí)粉絲,他個人充滿熱情,極富感染力,能夠讓你一直沉浸在課堂中。
網(wǎng)絡(luò)方面最好的課程是哈佛的cs50 web編程課程,課程使用的是Python和JavaScipt,我們目前只了解了 Python 的相關(guān)知識,但是很有必要去了解一下JavaScipt這門web語言。
Git – Lecture 0 – CS50’s Web Programming with Python and JavaScript:?https://www.youtube.com/watch?v=1u2qu-EmIRc
Github參考:https://github.com/melanierichards/just-build-websites
WEEK 11-12 移動端
接下來,你需要花兩周的時間,構(gòu)建一個讓你激動的應(yīng)用。你可能會灰心,不過沒有關(guān)系,你有兩個選擇——IOS和安卓。
可以在第一個周構(gòu)建一個IOS應(yīng)用,第二個周構(gòu)建一個安卓應(yīng)用。這樣你就能看到兩者之間的差別,并且能夠意識到自己更喜歡哪一個編程環(huán)境。
蘋果端:https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/
安卓端:https://developer.android.com/training/basics/firstapp/
WEEK 13-14 數(shù)據(jù)科學(xué)
數(shù)據(jù)科學(xué)是從數(shù)據(jù)中尋找結(jié)論的一門學(xué)科,通常這會用到機(jī)器學(xué)習(xí)和統(tǒng)計分析部分的知識。
EDX上有一門UCSD開設(shè)的一門課程,名字叫做Python for data science。通過這門課來進(jìn)入這個領(lǐng)域是一個很好的方法,課程略長,因此這門課需要一到兩周的時間。
這門課會讓你直接使用到你的Python知識,你會接觸到一些常用的數(shù)據(jù)科學(xué)方面的Python庫,如:pandas numpy。學(xué)完這門課之后,你會對機(jī)器學(xué)習(xí)有一點(diǎn)了解。
Python for Data Science:https://www.edx.org/course/python-for-data-science
WEEK 15-16 計算機(jī)視覺
Udacity上有計算機(jī)視覺方面特別好的課程,當(dāng)然也推薦斯坦福的CS231n。
https://www.udacity.com/course/introduction-to-computer-vision–ud810
斯坦福CS231n:http://www.mooc.ai/course/268
WEEK 17-18自然語言處理
我推薦Coursera的這門課:
Applied Text Mining in Python :https://www.coursera.org/learn/python-text-mining
WEEK 19 軟件編程實(shí)踐
僅僅知道如何編程還是不夠的,你還需要知道在一個團(tuán)隊中如何進(jìn)行編程。這就是為什么,你需要在接下來這個周學(xué)習(xí)軟件開發(fā)實(shí)踐。
Coursera上有一門課程,名字叫做軟件開發(fā)過程與方法論。在這門課程中,涵蓋了許多和其他人一些協(xié)同編碼開發(fā)的團(tuán)隊技巧。如果你想在一家公司工作,比如:Google者一些很小的初創(chuàng)公司,了解這些東西至關(guān)重要。
Software Development Processes and Methodologies:https://www.coursera.org/learn/software-processes
WEEK 20 區(qū)塊鏈
最后一個周,你需要,對加密貨幣、區(qū)塊鏈等技術(shù)有一個大致的認(rèn)識,因?yàn)檫@些技術(shù)現(xiàn)在很火。在Youtube上我已經(jīng)準(zhǔn)備好了一個加密貨幣的播放列表,你可以打開看看。
翻譯 | 王飛? ? ?整理 | 凡江
作者:雷鋒字幕組
來源:https://www.leiphone.com/news/201805/qFtW0h1tJagXpJV9.html
本文來源于人人都是產(chǎn)品經(jīng)理合作媒體@雷鋒網(wǎng),作者@雷鋒字幕組
題圖來自StockSnap.io,基于 CC0 協(xié)議
這些應(yīng)該也要學(xué)好久好久了,數(shù)據(jù)結(jié)構(gòu)…………加油加油
趕腳堅持學(xué)了之后代碼會不會我不知道,但英文一定能有提高。。。
然而,并沒什么卵用
??
然鵝,現(xiàn)實(shí)并不是這樣簡單。