我蠻推薦大家來看看這門 MIT 公開課 Introudction to computational thinking,所有的課程影片跟作業都可以在網站上面看到。當初是因為 3B1B 也有來授課所以就跟著一起看,沒想到內容比我想像中的還要有趣。
課程看似內容很雜,有涵蓋像是資料科學、氣候變遷建模、Ray Tracing、偏微分、統計、image processing,等等其實都圍繞在 computation 這件事上面,我覺得這種方式反而能訓練用電腦解決問題的能力。
舉例來說,第一二堂課教你 image convolution,進一步拆解問題變成矩陣乘法,然後作業是實作一個簡單的高斯模糊。convolution 這個概念可以再進一步延伸,例如做邊緣檢測甚至是做傅立葉轉換都可以套用同一個概念。這種將看似很困難的問題一步步拆解成可以用數學表示的方法,甚至教你怎麼套用到其他地方,是我覺得很棒的學習方式,也是蠻多人欠缺的技能。
接下來講到 seam carving,是一個能夠改變圖片 ratio 卻不會覺得「怪怪的」。一般我們改變圖片的比例時,圖片的某一個維度會被延伸或壓縮,看起來就會很奇怪。這個演算法可以找出圖片當中不重要的地方,將不重要的地方移除後讓整張圖看起來還是很正常。
接下來講到如何處理資料,這邊用 COVID-19 當作舉例我覺得還蠻符合時事的,可以用真實案例來學習。裡面還有提到像是 PCA 降維或是奇異值分解所代表的意義,也順便把統計的概念帶過一遍。
後面的課因為比較沒有興趣再加上自己偷懶所以只有大概看過,把大綱列出來給大家參考參考:
- Random walks
- 離散數學
- 偏微分方程
- 氣候變遷建模
個人覺得都是蠻實用的概念,如果有時間應該會繼續追完整個課程。
這堂課都是用 Julia 當作主要程式語言在上課,我自己覺得寫起來很舒服,以後如果想要簡單做一些矩陣運算或資料分析應該都會用 Julia 了。對於有經驗的工程師來說應該很快就可以學會,而且搭配 Plutco 可以直接在網頁上面寫程式(類似 Jupyter notebook),實時看到結果。
p.s: Grant Sanderson 的口條跟影片實在是太用心了,我覺得是教授群裡面品質最好的。