Posts

Showing posts from September, 2017

從反及閘到俄羅斯方塊之旅

Image
(這篇是前陣子幫台大 點開小視窗工作坊 寫的一篇資源分享文案,因為寫的時候腦中的預設對象其實還蠻大眾的,所以決定也搬到這分享) 今天要分享的,是一個對於學習編程和電腦科學十分有用的課程,畢竟在二十一世紀,基本的電腦科學知識已被視為一種基本素養。 先講結論。不論你是否接觸過程式相關的領域、不論你高中是幾類組、更不論你對自己的未來是否已經做足了打算,只要平常還撥的出時間,我強烈推薦你,到網路上註冊一個 Coursera 的帳號,上上看 From Nand to Tetris 這套課程。 在這個網路課程滿天飛的時代,想要自學程式其實是非常簡單的,諸如 Udacity、CodeAcademy、CodeSchool 等程式教學平台都已有一定的成熟度,較為學術性的 Coursera、edx 或商業化的 Udemy 也有許多高品質的課程,許多論壇、Blog 裡頭更是充斥著淺顯卻充滿洞見的閱讀素材。 從軟體設計到網路開發、從程式語言到資料結構與演算法,基本上任何初學者想學的內容,大都可以在網路上找到對應的學習資源。但是,如果要在我至今接觸過的所有編程資源裡頭萬中選一,推薦一套課程給朋友,那麼 From Nand to Tetris 將會是其中首選。 編程的世界十分廣大,光語言就有千百種,其涵蓋的領域更是多如牛毛,諸如作業系統、演算法、App、遊戲、社群網站、搜尋引擎...等等,每個大主題背後更是由無數的支幹撐起,不同領域與支幹上手的難易度也大相逕庭。 若要在這程式碼的茫茫大海中站住陣腳,勢必需要先將出航的基本配備準備周全,例如一艘穩固的船、指北針、航海圖和糧食配備,可以的話最好找幾個出海經驗豐富的人當你的航海士。 Coursera 的這門課所扮演的角色,即是那艘帶著你出海的船,裡面的老師正是你的航海士。 課程價值 在武俠小說裡,如果沒有內功為基礎,練習各種武術招式是沒有實際意義的。學習編程亦是如此。倘若對於電腦的結構和運作原理沒有一定程度的暸解,或是對於程式語言背後在記憶體上的運作機制一竅不通,那麼在編程這條路上愈到後頭走的只會愈加艱難,亦容易因知其然不知其所以然,導致最後處處碰壁。 同時,當今跟程式相關的大學教育主要落於電機和資工兩系,前者著重硬體層面的課程較多,後者則較強調程式設計。然而一直以來除非是將兩方相關領域的課程修好修滿,再查閱