Friday, May 4, 2012

Stanford Karel

Wiki: http://en.wikipedia.org/wiki/Karel_(programming_language)

Stanford的CS106A Programming Methodology是頗大的一門課,不論當時在實際在Stanford修課,或是回來後看Coursera(Online Course)和iPad上的iTunes U都有這門課,裡頭的內容也很完善。

這門課的是設計給Computer Science學生的第一門課,第一週裡,他不和你談論真正的程式,而是給出一個只有四個指令的軟體機器人Karel,它只會「前進」、「左轉」、「撿東西」、「放東西」,然後教材一路教導你怎麼讓Karel變聰明,一週內,它學會蓋房子、撿垃圾、...

當時和助教聊天,它說以前CS106A是以C語言為主,但是現在則是教Java (this means that most of Stanford Computer students learn Java as their first programming language),Keral也是用Java寫出來,然後包裝好,不讓一開始學習的初學者看到裡頭複雜的程式,而只有那四個指令。

四個指令會漸漸延伸出很多東西,像是三個左轉形成一個右轉的function,for和if可以形成一個直線走到牆的function等等,基本上程式語言中最基本的概念都會學到。

這門課的修課心得:

  • 以了解概念為主導,課程非常強調學生寫程式要如何思考、如何有一個正確的習慣
  • 它限制了給學生的東西,與一般學校授課的方式不同,過程中由簡入深,把比較深的內容包裝起來不被你看到,讓初學者不會一開始就陷入茫然
  • 很有趣!教材都很完整的教學,修完課讓學生自己有能力可以寫很多東西
上學期我自己用C語言寫了一份Karel(https://github.com/heronyang/smiley),並不會困難,但我過程中是希望把程式碼寫得漂亮,至於GUI的部份做到一半,往後有一些規劃:
  • 製作GUI
  • 自撰教材或是翻譯教材
  • 分享給需要的人