網易公開課《電腦科學導論》簡評
這門課是導論性質的課程,基本認為你對計算機的瞭解僅限於開機關機。講的內容都比較淺顯,而且是具有啟發性質的,比如:
如果郵箱可以對電子郵件進行排序,那麼你期望的準則是什麼?比如基本的資料恢復原理?還有就是通過虛擬碼來做遊戲,體驗程式設計的基本思想,順序,選擇,迴圈。
等到真正開始程式設計了,使用的既不是C也不是JAVA,而是一個MIT開發的基於圖形程式設計的語言,將一個一個控制元件組合起來形成程式,而且能夠通過命令直接將圖片移動、翻轉等等。它的好處在於:1跳過了變數、函式、定義、宣告、陣列甚至指標那些程式語言的細節問題,而著重體現了程式設計思想:順序、選擇、迴圈;2.能夠對圖片進行操作,也提供了豐富的介面,可以很快上手做一些類似於仙劍之類的2D遊戲,趣味性很強。
剩下的幾講還是回到了C語言,hello world,介紹了了基本變數型別和if、while、do……while和for。亮點不是很多,其中之一是封裝了一個課程使用的庫,包括getString、getInt之類,便於人機互動。還有就是在C99之前,是沒有bool型別的,這點我也是今天才知道。當時讀TCPL時,竟然沒有發現。
還有就是上課真的是老師拼了命的講,幾乎不管你有沒有聽懂。很多基礎的東西都沒講,就開始講排序了,而且氣泡排序,選擇排序和歸併排序都講了。雖然是基本思想,但是估計學生們的作業中少不了程式碼實現。有一些複雜的東西也是沒有講的,比如指標陣列,指標函式,函式指標,位域等等。
大概課程的一半左右,就結束了C的講解,轉到了網路程式設計。給人的感覺並不是培養“電腦科學家”,而是在培養碼農。簡單的講了HTML,然後就是PHP,然後是javascript,利用Google earth的API,實現了一個小的遊戲。總之就是忽略底層細節,儘可能的作出一個小玩意來。我沒有看到他們的練習題,從上課的感覺來講,應該是大的框架都已經搭建好了,你只需要網上填程式碼。但是課程的期末考試確是小專案,從創意到程式碼實現都是你自己的小團隊自己做的。
其實我感覺對於毫無程式設計經驗的人而言,這個難度還是有點大的,要麼上哈佛的都是天才,要麼就是歸功於一個講課的老師背後龐大的輔助團隊。這門課的顧問,就是大名鼎鼎的Brian W.Kernighan,沒錯就是K&R的第一作者(據說此人之前就是教這門課的)。其次,是教師反覆提到的助教(他們有一些是之前上過課的學生),對同學的問題作出課詳盡輔導。我覺得這是一個絕佳的注意,就是當你聽過這門課,覺得不錯以後,可以投身它,再幫助別人學習這門課,這是一種文化的傳承。怎麼說呢?有點像“豪門底蘊”的感覺。(他們還經常舉辦相關的聚餐活動,還有這門課的T恤之類的商品。)相反,咱們國家的這種大課,往往是樹倒猢猻散的感覺。老師教的累(因為人多,所以作業量大,答疑多),學生學著也沒興趣(缺少針對性的輔導)。這是值得反思的地方。
還有就是哈佛的名聲實在太大了。儘管上這門課的是大一大二的新生,一般而言是不具備編寫工業級別的程式碼,也不瞭解相關的演算法、硬體、網路知識的,但是很多企業都會與這門課程合作,辦一些小的推廣、實習活動。說不定這些新生裡面,就有下一個Brian W.Kernighan呢?