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