如果國高中生或非本科系大學生想對程式有點概念的話,我覺得 CS50 可以嘗試看看。
https://www.edx.org/course/introduction-computer-science-harvardx-cs50x
這課程本身是免費的,除非要拿一張鑲金的證書才要 149 鎂,不過個人覺得這類研習/課外修課的證書對資工領域來說沒啥用,拿不拿都無所謂。另外這課程是全英文的,可以自己斟酌英文能力。
CS50 是什麼?
CS50 全名是 Computer Science 50,是哈佛和耶魯教授所開的電腦科學課,後來因為非常熱門加上社會有需要,就開放出來成為網路開放課程。『50』的意思是如果把難易度量化成 1-99,它的難度就是 50,是大多數人都能夠駕馭的難度。
也因此 CS50 在全球是相當知名而且熱門的課程,每年修課人數超過萬人,也是哈佛大學跟 edX 上最多人選修的課程,甚至已經有自己的 T-shirt 或周邊產品,你能想像在校園裡有人穿著 "我修過 CS50” 的上衣在路上嗎?
不過我先前帶學生做裡頭的作業,上沒幾堂就要開始用 linux 的 command 交作業,還要用 C 做影像處理,所以我覺得這個 50 應該是指哈佛學生的 50 而非一般人的50……
一學期的課程從基礎程式語言 Scratch、C、Python、SQL,到資工基本功的資料結構與演算法、網頁開發相關的 HTML、CSS、JavaScript、Flask。全部都在一學期的課程內容中,每一週的主題基本上都可以當作一門獨立的課來修,可以說是把眾多課程取最精華入門的一小部分濃縮在一周裡。
CS50 都教些什麼?
上完課後就可以對程式可以做什麼有最粗淺與基本的認識,實際來看一下課綱(Syllabus)最清楚:
Wk0 Scratch:圖像化的程式開發平台,通常是給中小學生或沒有程式經驗的人學習,放在第 0 周讓大家在上課以前對程式的邏輯有最基本的概念。
Wk1 C:廣泛用在系統軟體或驅動程式開發的程式語言,跟其他語言比起較為底層,個人覺得學 C 對非本科系的學生來說有點太硬啦。
Wk2 Arrays:講程式碼是如何變成可以運作的程式,另外也會教陣列的使用、命令列指令(寫軟體必會)。
Wk 3 Algorithms:如何評估程式碼運作的效能,同時教幾種基本的演算法:二分搜尋、冒泡排序、合併排序等。
Wk 4 Memory:記憶體是如何配置的、在什麼狀況下記憶體會出錯,同時會講指標、檔案輸入及輸出及基本影像處理。
Wk 5 Data Structures:資料結構入門課,資料的儲存方式會極大地影響後續演算法的操作以及效率,各種資料結構該對應到什麼情境,會提到 Queue、Stack、二元搜尋樹、雜湊表等。
Wk 6 Python:學函式、布林表達式、流程控制、函式庫等,Python 相比於 C++ 或 Java 更加簡潔好運作,我現在寫小玩意也都是用 Python。
Wk 7 SQL : 用來查詢資料庫的程式語言,基本上我們用到的所有服務都會需要儲存資料,課程內容包括資料庫的索引(Index)、基本原則(Transaction等)、資安(SQL inj.)等都會提到。
Week 8 HTML, CSS, JavaScript:俗稱的網頁前端,學 CSS 搭配 HTML 與 JavaScript 對網頁中字體、顏色、背景、圖像及其他元素控制,也會學網路相關知識:Http、TCP/IP、DNS、GET/POST等。
Week 9 Flask:超輕巧的網頁後端軟體,麻雀雖小五臟俱全,繼續學習 Route、封包、Cookie 等網路知識。
Week 10 Emoji:學編碼的形式等,亂碼是如何產生的,又該如何避免。
可以發現 CS50 包山包海,每一個項目都淺淺上一個禮拜,但最入門一定要知道的知識都會講到,我自己認為這很適合拿來當大一計算機概論的課程,或是讓非本科系在一學期內對程式有個基本概念。
如何開始?如何進行?
連結點進去,按下 Enroll 就可以開始了!完成每個禮拜的作業以及測驗率高於一定程度後,就有 edX 發放的證書,這證書是免費的,只有特殊的鑲金證照才需另外付 149 鎂。(但證書其實沒啥用)
CS50 的網路線上課程通常是每年更換教材,也會加入該年度熱門題材,正因如此修課的話需要在該年年底前完成,來不及的話就會到下一年去重新開始囉。至於作業什麼的就別太擔心了,既然每年都有萬人在修課,自然也有許多課程社群,有相當多資源可以參考或是找到人詢問的。
我定期會分享適合國中小、高中、大學的學習資源,因為臉書會有觸及的問題不一定每篇都看的到,歡迎直接訂閱分享:
感謝分享~我也正開始上這門課!