一、課程說明

Part 1: 另一種 programming paradigm

這門課我們要介紹另外一種 paradigm: functional programming。我們會發現,在這種 paradigm 之
下,程式較 imperative language 更容易寫對。一些 OOP 複雜的 design pattern 在這裡將被輕鬆地消
除。換言之,functional programming 可能是更適合 general purpose 的 programming paradigm。

Part 2: 如何「一開始就把程式寫對」

在這門課,我們會介紹不同於「依著機器寫程式」的另一種編程原則,「依照數學邏輯原則寫程式」;我們將
看到一套新的方式來面對編程問題,包括如何更嚴格地定義需求,及「建構」正確的程式。學會這套方法後,
儘管不使用這堂課我們學習的程式語言,同學也仍能在其他語言寫出正確的程式。


二、指定用書


三、參考書籍
Types and programming languages
Learn you a Haskell for great good

四、教學方式
每個星期 3 小時課堂講解與討論
期末 Hackathon


五、教學進度
未定
請先參考 http://www.cs.cmu.edu/~15150/


六、成績考核
60%: 作業
30%: projects
10%: 課堂參與及平常表現

七、可連結之網頁位址
未定