阿群的CS50上課全紀錄week0-由淺入深的電腦科學起手式

原本是想說取個更生猛的名字,但是為了標題的一致性還是含著眼淚把我的低能創意給刪去了,淌血的心和成長的淚,想哭。

在2/28連假過後正式開始的CS50課程是Harvard的熱門課程之一,由沒沒無聞的課程一舉成為炙手可熱的風雲網紅,甚至產出了大量的線上討論社群還有無數跨國跨洲的社團都顯出了他無與倫比的魅力。我會知道這門課得益於訂閱的TECHBRIDGE WEEKLY 技術週刊,前一陣子認為程式語言底子一直不佳的我正好在翻閱舊周報,正好看到CS50的一些介紹,好奇心驅使下找了許多相關的資訊後就直接在EdX上登記了這門課。

基本上對於有寫過程式的人這們課程內容並不難,但是在闡述一個觀念時所使用的教學方式都會讓你驚嘆 "哦對原來這樣表達程式語言的概念更直觀!",也是一個很好的去修飾自己既有知識的好手段之一。

以上,算是上過第一堂week 0之後附註的小小前言,之後的內容大概就會是課程的筆記和最後作業的分享,以及互相交流的一些心得。



以第一堂課的內容來說是很基礎的介紹到電腦最入門的相關知識

總結來說可以分成三的部分

  1. Binary
  2. Algorithms
  3. Scratch

二進制表示法



不同於人類計算或說計量的十進位,電腦使用的進制是眾所周知的0、1來與世界互動。而二進制對比於十進制的優點在哪邊呢?以手來表達數字舉例,十進制的情況下一隻手所能表達的數字最高為5,但若是以豎起的手指作為1而反之為0的情況下,二進制表示法可以得到五位數11111的數字,換算成十進位為31。簡單來說二進制的優點在於電腦系統當中可以用同樣的空間而做出更多樣的變化。在教學當中David也很直接地以電燈的開關來表示二進制的0、1,所以或許還要加上以電路系統來說同時也可以代表有和無。

二進制演進-ASCII、RGB

那為了讓人類的語言能夠顯示在電腦上,0、1就顯得不堪使用,為此產生出按圖索驥功能的即是ASCII,當然還有中文的Big5啦或是其他的,就不再多做贅述,只要了解到這是一種類似於公定的參照表就可以了。除了文字之外,在色域上的表示也是以數字參照的系統來溝通,RGB三色分別以不同的數值來表達其色彩的混合程度。
最後不論是ASCII或是RGB的範圍都是0~255,8個bits組成(想像成八根手指),組成一個byte。

演算法-一步步解決問題的方法

這一段課程就是我個人認為頗為精湛之處,在了解所謂的輸入輸出以及電腦的表示方式二進制後,接下來是在講解關於演算法這一概念。隨著工作時間漸長,對於演算法的概念也逐漸僅限於處理大數據或是一些排序優化等,但David很簡單的解釋所謂的演算法即是一步一步解決問題,這當中就需要依靠電腦思維(Computational Thinking)來精確地說明執行的步驟。
而接下來David說出他的需求:做出一個花生&果醬三明治。台下的學生就開始一步一步的指示David的動作。這邊有趣的點是在於一般人做事情通常都已經習慣於直覺,但電腦是愚笨的,他只會參照你的指示來進行動作,從影片上就可以看到這種錯誤,例如說拿起果醬刀挖果醬卻忘記要先打開果醬的蓋子直接插在瓶蓋上,抑或是插進果醬後說拿出果醬刀卻忘記下挖取的指令等等,整個課程非常生動的表達了演算法的核心概念:Step-by-step instructions on how to solve problem.



演算法-縮減資料量

同樣是演算法的觀念,這裡則是講述了縮減資料量這件事情。就我個人的理解我會把他視為優化,也就是現在很多數據分析、統計等等。David在這邊則是利用要從電話簿中找人來舉例:一頁一頁翻?或是因為電話簿的排序是照姓名筆畫,我們可以先利用此一特性分開電話簿只找前半或後半然後不斷循環直到找到想找的人為止。優點在於或許在低資料量的時候看不出差異,但是當數據量提升到一個層度時,優化後的演算法會極為明顯地展現出其優勢來。

Scratch-模組化程式語言的學習工具

在最後電話簿舉例當中,把每一個步驟都轉換成描述性文字後,將主題轉向學習語言的工具Scratch,每一個條件式和執行的動作模組化成拼圖的Scratch是目前幾乎程式教學入門的必備工具。課堂中講解了一些基本的使用方式後為了完成作業我也跑去玩了一輪,確實以程式語言的學習來說,他用很視覺化的方式來描述了演算法中醫部不解決問題的概念。BUT!!!對於已經有寫程式經驗的人來說操作上會有不小的麻煩,例如說我要的功能沒有啊要怎麼建,那個什麼功能放在哪邊啊之類的。

超 級 麻 煩

作業做到後來我超想能不能我用隨便一個語言寫就好了我不想再跟那隻貓有什麼互動了please~

但是憑良心而論,這真的是新手學習的超強入門教材,絕對可以在短時間內了解控制邏輯這回事。

總結

以上,是我的第一次上課筆記還有想法的紀錄,說筆記有點不優啦應該直接說心得。這一門課上完之後真的會有耳目一新的感覺,討論的時候大家也都是七嘴八舌地說如果當初老師是這樣教那真的是很吸引人,由此可見他的魅力。

最後附上一些課程的連結,本來我是在EdX上註冊的,但是後來我發現Harvard X上的UI比較好用,他還會幫你把一些比較大的Topic在影片當中分段,對於作筆記頗有幫助。那作業的部分之後在另寫一篇好了。

結論,不管有沒有寫過程式的人都適合的好課。








留言

這個網誌中的熱門文章

[Android][功能] 倒數計時