就拿程式設計入門課程的 Python 來說,以之作為關鍵字可以搜尋到 242
條課程記錄。即便一門課只要 20 小時,那麼也得學習 201 天才能全部學完。但是我相信沒有人會把某個 topic 的所有課程全都上一遍,所以如何從這麼多的課程中選出最好的課程是非常的重要。
本文在此推薦一個給力的課程挑選平臺,被我稱為MOOC界的大眾點評: Class
Central 。還有我個人上過的高質量程式設計課推薦,讓你一次學個夠!
Class Central 是什麼
Class
Central 是線上課程的搜尋引擎和點評網站,按照課程主題分類、學校分類、課程平臺分類,網羅了包括 edX、Coursera、Udacity、Stanford、MIT、Google 等 500+ 教育平臺和機構的上千門課程的資訊。
由於是國外的網站,瀏覽時需要一些英語基礎,但是畢竟是點評性質的網站,所用詞彙不會過於艱深或生僻。同時大部分使用者都是學生,所以這也是一個熟悉和學習英語的好地方,相信難不倒聰明的你 :D
Class Central 為每門線上課程都提供了詳細的介紹頁面,以 Coursera 上很火的 Learning How to Learn 為例,頁面頭部是課程的總體評分和學員人數。左側是課程的概述和導讀,左側下方有 Tags 可以快速地找到具備相關話題的其他課程。頁面右上方是課程的提供方、價格、開課時間、證書、課業量等資訊,右下方則是精選的學員評價。
當說起課程挑選,其實我在挑選什麼
雖然我們一直說要挑選最好的課程,但這裡「最好」其實換成「最合適」比較能接近問題的本質。弄清楚自己的需求和期望,規劃好自己能投入的時間和精力,是挑選課程時要做的第一件事。
目的 1:為了入門某個未知領域
近兩年科技圈最為火熱的話題是人工智慧和區塊鏈,創投圈的火熱也帶動了相關話題線上課程的製作。如果有心想要系統學習這些全新的領域,甚至在入門之後投身相關領域,那麼選擇名牌大學或者知名學者提供的課程是最完美不過。
我之前在 Coursera 上完成了吳恩達深度學習的系列課程和普林斯頓大學的比特幣及加密貨幣課程,雖然這些系列課程只有幾周或者幾個月的學習長度,但是其知識體系的深度和完整度,是網路部落格或微信公眾號科普文無法相提並論的。
目的 2:為了深入學習某個領域
線上課程的豐富,為我們的學習帶來了極大的便利:熱門的話題往往能夠找到適合初學者(beginner)、中度水平(intermediate)和高階水平(advanced)三個層次的大量課程。
當通過了入門課程後還有強烈的學習慾望,那麼就應該進一步深入學習中級或高階課程。以我自己為例,在 Coursera 上完 Duke 大學的 Java Programming and Software Engineering
Fundamentals 系列課程之後,感覺對系統層面的知識有所欠缺。於是又修了一門 Alberta 大學的 Software Design and Architecture 系列課程。
除了滿足自身的學習熱情和填充自己的技能樹,這些課程更給我帶來了很多的專案經歷和數不盡的回報。我曾在學校招聘會上通過和麵試官聊我在 Coursera 上完成的一個電影推薦系統的專案,而獲得了 Facebook 的實習生面試機會並飛去 Facebook 的加州總部參觀。
目的 3:沒有什麼特別目的,就是愛學習
有時候學習並不是出於什麼功利目的,僅僅是因為自己渴望對世界瞭解更多。在這些平臺上,有非常多關於行為心理學、個人財務管理、語言學習、藝術創作等題材的豐富課程資源。如果你還是個學生,可以考慮在出國旅遊之前學習一門新的語音。如果你是個上班族,可以利用上下班通勤的碎片時間學習個人財務規劃。如果你已經為人父母,可以聽一系列關於飲食健康的講座。只要有求知和好奇,沒有什麼能夠阻止你的提升。
演算法基礎類
1.
作為電腦科學專業的學生,演算法是基礎中的基礎。如果之前沒有任何演算法基礎,加州大學聖地亞哥分校(UCSD,University of California San Diego)的 Data Structure and Algorithms 系列課程是資料結構與演算法課的入門首選。
2.
當具備一定的資料結構與演算法基礎,想要系統地學習演算法,那麼普林斯頓大學(Princeton
University)的 Algorithms 課程 是經典中的經典。這門課有上下兩門,覆蓋了演算法設計和分析的方方面面,並且教材 PDF 可以在網上找到。
3.
如果你還想在演算法上更進一步,那麼斯坦福(Stanford University)大學的 Algorithms 系列課程 絕對應該在你的聽課清單中,這門課難度略大。如果從頭跟到尾且全部掌握,相信面試中的演算法題一定難不倒你。
4.
如果沒有那麼多時間,但是想要突擊面試演算法,可以選擇UCSD的 Algorithmic Toolbox 。這門課把幾個面試中的熱門演算法 topic 做了講解,而且作業題目難度貼近演算法面試中,很適合拿來複習演算法。
程式設計開發類
我個人的首選程式語言是 Java,所以這裡介紹下我上過的 Java
課程。
1.
首先要介紹的是杜克大學(Duke University)的 Java Programming and Software Engineering Fundamentals 專項課程。該專項課程的第一門課是關於 JavaScript,HTML 和 CSS(可以忽略,並不影響後續課程),其後課程介紹了 Java
實現各自資料結構以及一些 OOD 設計方面的內容。課程最後需要用 Java 實現一個電影評分推薦系統。適合需要充實簡歷專案的同學。
2.
其次很推薦的是阿爾伯塔大學(Alberta University)的 Software Design and
Architecture 專項課程。這門課專注於四個話題:面向物件設計(Object-Oriented Design),設計模式,軟體架構和麵向服務架構(Service-Oriented
Architecture)。課程內容略微偏理論,但是這些都是一個合格的軟體工程應當具備的職業素質,而且大學課程中很少會有關於這些實用理論的課程。所以非常推薦這門課,我自己聽課做了密密麻麻的筆記。
3.
最後推薦萊斯大學(Rice University)的 Parallel, Concurrent, and
Distributed Programming in Java Specialization 專項課程。如課程標題所言,這門課就講 Java 語言的並行、併發和分散式程式設計。不過這門課更多是索引性質,當你知道在開發多執行緒的某一個功能時,可以找到對應的框架或正規化來實現。
業界趨勢類
現今大資料、人工智慧、區塊鏈等領域空前火熱,我也跟風上了一些優質好課。
1.
首先要推薦的是吳恩達的 機器學習 及 深度學習 課程,相信知名度已經很高了。這也是我在 Coursera 上聽到的為數不多的質量和完成度超過線下課程體驗的優質課程。吳恩達老師講解流暢條例清晰,每週的作業都能讓你從0到1完成一個小專案。即便不做人工智慧相關的工作,也非常抽時間瞭解一下基本的原理。
2.
其次是普林斯頓大學的 Bitcoin and Cryptocurrency Technologies 。這是現今為數不多地能將比特幣和區塊鏈原理概念講解清楚的優質好課。配套教材pdf可以從網上找到,課程內容包括加密和加密貨幣、如何實現去中心化、比特幣運作的機制、如何挖礦(哇)、如何做到匿名和儲存比特幣。
關於選課的幾個的小建議
挑選課程需要結合自身興趣和需求,我個人的選課建議是:
1. 珍惜自己的時間 :線上課程浩如煙海,而且常常只能在自身主業之餘進行,珍惜和管理好自己的時間是要做的第一件事。上到一半覺得課程內容不是自己想要的則應該及時停止,如果英語聽力好,可以把播放速度調到 1.5x 或 2x,比別人少花一半時間(前提是不影響理解課程內容)。
2. 清楚自己的學習目標 :選課之前問自己幾個問題,我想學的是什麼?想要學到什麼程度?這門課程能不能讓我達到這個目標?如果不能,我是否應該在完成這門課之後再學習哪些相關課程?
3. 除了知識,還要有更多野心 :知識本身很重要,但是如果能從課程中獲取更多東西則更好。例如完成一門計算機課程之後手上多了幾個小專案,完成財務類的課程後製作出了自己的財務狀況表,完成行為心理學課程之後對世界觀人生觀有了新的體悟。
沒有留言:
張貼留言