良心推薦:一份20周學習計算機科學的經驗貼(附資源)

 2018-05-08 11:07:00.0

這裏是,油管Artificial Intelligence Education專欄,原作者Siraj Raval。

原標題 Computer Science Curriculum

翻譯 | 王飛     整理 | 凡江

這是一份五個月(20個星期)學習計算機科學的經驗貼,希望幫助你跟我一樣從入門到精通。

傳統的大學開設 ACS 專業,主要是引導學生從毫無任何編程經驗,到對計算機科學領域的一些相關學科有一個較爲寬泛的認識。在這條視頻中,我將給大家介紹一下,我個人是如何安排自己的學習規劃,在短短的五個月內,掌握計算機科學這門領域的知識。

我列在這裏的資源,在互聯網上都能找到,並且都是免費的。在我開始之前,請大家記住,你可以根據自己的情況加快學習進度比如視頻加速觀看,每天學習兩到三個小時,每門課在週末只做一個項目等等。在學習的時候,手寫筆記以便記住所學的內容,在你學習列表中的內容時,記住關注一些計算機行業的大牛,這樣就能及時瞭解到相關領域的最新動態了。

WEEK 1-2 Python

在最開始,我們要學的是 Python 這種編程語言。什麼是Python?Python是一種解釋執行的具有動態語義的面向對象的高級編程語言。啊什麼鬼啦,定義中這麼多專業術語,看不下去怎麼辦?彆着急,我給大家介紹一個學習資源,這個資源不要求你瞭解計算機科學領域的相關術語也能看懂。

在網絡上有一本極好的免費的書,叫做Automate The Boring Stuff With Python。這本書對編程小白來說相當實用,書中展示瞭如何完成一些基本的任務,例如使用 Python 語言發送提醒郵件,移動文件夾以及格式化數據等。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

我建議你第一週的時間來讀這本書,總共有18章,如果每天完成三到四個章節週末就能完成。這本書中裏面有許多練習,你可以在你使用的任何操作系統的終端上去完成這些練習。如果你在自己的機器上安裝Python時遇到了問題,可以到Python 的官網上查查詳細的相關信息。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

在學習 Python 的第二週,我推薦參加CodeAcademy的Python課程。在課程中,你的網頁上就會有交互式的控制檯,你可以馬上得到反饋,知道自己的代碼是否編譯正確。這些年,這個平臺的這個課程一直很受初學者的歡迎。

總共兩個周的時間,差不多足夠你對 Python 語言有一個基本的瞭解了。當然,前兩週你寫的程序還不足以改變世界,但是,理解這門語言的語法、關鍵詞、使用的頻率以及爲什麼使用,這些都是至關重要的。它們能夠幫助你在下一階段中構建以及理解一些數據結構。

Automate the Boring Stuff with Python: https://automatetheboringstuff.com/

Codecademy的Python教程:https://www.codecademy.com/learn/learn-python

WEEK 3-4 數據結構

我還記得,當我還是哥倫比亞的一個計算機科學的大一新生時,每個人都會告訴我,在你的專業裏面,你將要上的最重要的兩門課是數據結構與算法。在那個時候,這聽起來很滑稽。怎麼能說數據結構與算法比 學習令人激動的機器人學和計算機視覺還要重要呢?結果我被啪啪打臉了,他們是對的。

在計算機科學領域,如果你要創造出無窮無盡超級棒的應用,你就必須理解如何正確地存儲數據,以及對數據進行處理,以便完成任務。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

有一個 UC SanDiego開設的數據結構課程,這門課程會展示給你各種各樣的數據結構——從二叉樹到鏈表,以及在 Python 中如何實現這些數據結構。

UC SanDiego的Data Structures Fundamentals: https://www.edx.org/course/data-structures-fundamentals-uc-san-diegox-algs201x

WEEK 5-6 算法

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

之後,你也許會想了解一些算法方面的東西。使用Python作爲基礎語言的最好的一門課程是MIT的算法介紹課程。在他們的網站上,你可以看到所有的課程和相關的筆記以及問題集。你會注意到,當談到數據結構和算法,一旦你開始構建並且能夠理解其中的一些東西,一切都會開始變得有用起來、當涉及到數據的正確存儲時,你會開始理解,你必須要做的一些折衷處理,當你開始考慮應用的時候,你將能夠知道,爲了完成任務,你需要什麼類型的數據結構以及算法。 

MIT 6.006: Introduction to Algorithms https://courses.csail.mit.edu/6.006/fall11/notes.shtml

WEEK 7 數據庫

接下來,無論你是構建一個web應用、移動應用或者是僅僅進行數據處理,瞭解數據庫如何運作都是十分重要的。SQL是最普遍的標準的數據庫語言,Coursera上有一門課程,課程名字叫做Using databases with Python,這門課程能夠幫助你容易地理解數據庫。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

你可以跳過這門課程的第一週,繼續往後學,因爲我們已經瞭解了Python學習部分的內容。

密歇根大學 Using Databases with Python https://www.coursera.org/learn/python-databases

WEEK 8 網絡

在接下來的一週,我們將在Python上稍微停一下,轉而把注意力放在網絡上。在你構建一個需要使用互聯網的應用時,你必須要弄明白,互聯網這個人類設計的複雜的系統,是如何允許我們在一瞬間與全球各地的人進行交流的。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

Coursera上有一門課程,這門課程是Google開設的,叫the bits and bytes of computer networking。你會學到互聯網協議是如何工作的,你會弄明白,當你向網頁中輸入網頁鏈接並且點擊回車鍵時,在搜索引擎之下發生了什麼。

The Bits and Bytes of Computer Networking https://www.coursera.org/learn/computer-networking

WEEK 9-10 網頁開發

在你完成這一部分的學習之後,你就能開始進行網頁以及移動應用的編程開發了。我是哈佛大學計算機科學教授David Malan的忠實粉絲,他個人充滿熱情,極富感染力,能夠讓你一直沉浸在課堂中。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

網絡方面最好的課程是哈佛的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應用,第二個周構建一個安卓應用,這樣你就能看到兩者之間的差別,並且能夠意識到自己更喜歡哪一個編程環境。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

蘋果端:https://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/

安卓端:https://developer.android.com/training/basics/firstapp/

WEEK 13-14 數據科學

數據科學是從數據中尋找結論的一門學科,通常這會用到機器學習和統計分析部分的知識。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

EDX上有一門UCSD開設的一門課程,名字叫做Python for data science。通過這門課來進入這個領域是一個很好的方法,課程略長,因此這門課需要一到兩週的時間。這門課會讓你直接使用到你的Python知識,你會接觸到一些常用的數據科學方面的Python庫,如pandas numpy。學完這門課之後,你會對機器學習有一點了解。

Python for Data Science:https://www.edx.org/course/python-for-data-science

 WEEK 15-16 計算機視覺

Udacity上有計算機視覺方面特別好的課程,當然也推薦斯坦福的CS231n。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

 https://www.udacity.com/course/introduction-to-computer-vision--ud810

斯坦福CS231nhttp://www.mooc.ai/course/268

WEEK 17-18自然語言處理

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

我推薦Coursera的這門課:

Applied Text Mining in Python https://www.coursera.org/learn/python-text-mining

WEEK 19 軟件編程實踐

僅僅知道如何編程還是不夠的,你還需要知道在一個團隊中如何進行編程。這就是爲什麼,你需要在接下來這個周學習軟件開發實踐。

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

Coursera上有一門課程,名字叫做軟件開發過程與方法論,在這門課程中,涵蓋了許多和其他人一些協同編碼開發的團隊技巧。如果你想在一家公司工作,比如Google者一些很小的初創公司,瞭解這些東西至關重要。

Software Development Processes and Methodologies:https://www.coursera.org/learn/software-processes

 WEEK 20 區塊鏈

良心推薦:一份20周學習計算機科學的經驗貼(附資源)

最後一個周,你需要,對加密貨幣、區塊鏈等技術有一個大致的認識,因爲這些技術現在很火。在Youtube上我已經準備好了一個加密貨幣的播放列表,你可以打開看看。

How Does Monero Work? 

文章來源:雷鋒網