2014年10月27日 星期一

演講:程式 x 設計 @ MOPCON 2014


此次 MOPCON 的議程與會眾數可以說是質量俱增,感謝工作人員的努力 Orz
圖片出處:MOPCON 粉絲團

噢噢~噢噢~噢噢~噢噢~
>////<"
第一日晚宴時,最讓我印象深刻故事是
(用詞不太一樣,大致上的語意如下)
「工程師參加社群聚會活動後跑出來創業很正常,結果某一群人參加活動後,最後出來創業的是設計師」
圖片出處:MOPCON 粉絲團




從 MOPCON 2014 開始徵稿以後,就一直在想該聊些什麼?
恰好截稿前夕正在閱讀 諾曼先生的設計心理學一書 ...

該書當頭棒喝地把我敲醒!
之前所讀的幾本設計入門書籍的內容再度湧入腦中
彷彿可以重新組織架構這些知識

最後,儘管我處於才剛看懂設計領域中的「hello world」的狀態
卻斗膽投了「講個秘訣之: ooxx ...」一題(可以化簡為「程式 x 設計」)

投稿順利被接受後,我就有了「理由」放下手邊看不完的技術書籍
一頭栽進所謂互動設計 / 設計心理學的入門領域
讀書期間,感謝幾位設計師朋友的協助:

大宇人。小雨宙 - 借我兩本好書
十分設計工作室 - 從設計師角度解答許多問題




# 投影片高畫質 pdf 下載




我花了約整整三天準備好投影片,且內容高達 128 頁 ...
剛開始,我沒有很滿意自己的準備內容
這一系列的書給了我太多,而就我的理解程度與「輸出能力」卻只能淺聊到這一丁點的內容
有種愧對大師的心情 ... Orz


但是後來仔細想想,半個多小時的分享中
如果能夠讓碼農對「易用性」、「設計」、「人」感興趣
或反之,能讓設計師找到可以「說服」碼農的突破點(尤其是認知科學)
那麼便是功德圓滿


又,在準備演講內容查閱書籍的過程中
許多諾曼先生的看法與觀點亦再次觸發我的思考
我想,這一系列的書,絕對不是看個一次兩次就能吸收消化得了的


而,這一個多月以來的收穫
除了初窺設計領域與反思程式設計以外
大概就是某種程度的更加「了解自己」





這張演講照片被 MOPCON 官方粉絲團分享 XD
我要澄清我沒有強烈政治傾向也沒有台北市投票權,只是就事論事 ...
圖片出處:MOPCON 粉絲團


聽眾爆滿  T_T
圖片出處:hychen


最後一個秘訣:明年 PyConAPAC 仍然在台灣舉辦
敬請期待!!!







2014年10月20日 星期一

好課分享:更多的 OO, MIT 與 Python


看到了嗎?Unit 1 的第一個子項目是 Object-Oriented Programming


更多的 OO

上個月的 Tainan.py x MOSUT 聚會,我投稿了「OO x Python」的主題
準備資料的過程中,有點好奇國內外「物件導向」相關課程的開設情況
發現專講 OO 的課程真的是好少啊

不難發現,由於現在許多人學習程式入門的語言都已支援或立基於 OO paradigm
所以學校內的基礎課程,不太會刻意去開設 OO 相關的課程
又或以「物件導向程式設計」名義開設基礎 Java/C++ 入門課程,而並沒有深入探討 OO 議題

使得學生:
  • 僅能「見葉」(學會語法)
  • 無法「見樹」(理解單一語言層級上的 OO 概念)
  • 更遑論「見林」(更加廣泛深入地探討 OO 概念)

為何相關課程如此之少?
原因不外乎與行政因素、教師專長、教學意願、熱門程度及對軟體工程的重視與否有關
然而,學生大學畢業後若要到業界工作
恐怕有一半以上的工作內容都是以 C++/Java/C#/Objective-C/Python/Ruby ... 等擁抱 OO paradigm 的語言為開發主力


好,不再碎碎念,在此補上幾門開放課程 or 課程網頁:


面向對象技術高級課程 (北京大學 @ Coursera)
https://www.coursera.org/course/aoo
# 參考資料全部都有簡體翻譯本 or 有簡中書籍


物件導向程式設計 (台灣交通大學開放課程 - 電機系大一)
http://ocw.nctu.edu.tw/course_detail_4.php?bgid=8&gid=0&nid=343#.VB--zpOSw_M
# 參考資料乍看就是一本書 (c++)


物件導向軟體工程(成大資工研究所)
http://casd.csie.ncku.edu.tw/Object-Oriented_Software_Engineering.html
# 參考資料為 http://www.amazon.com/Object-Oriented-Software-Engineering-Practical-Development/dp/0077109082 (java)


Object Oriented Development (Telecom SubParis)
http://www-public.it-sudparis.eu/~gibson/Teaching/CSC7322/
# 參考資料極為廣泛而深入,強烈推薦看一下課程網頁



更多的 MIT 與 Python

查找上述 OO 相關的課程資料時,看到 MIT 的開放課程心頭不禁一震:


6.01
Introduction to EE and CS (MIT OPEN COURSEWARE)
Unit 1-1 Object-Oriented Programming
# 有影音等課程資料可下載


對,物件導向只是入門課程中的一個單元中的子單元!
好奇之下,索性就把該單元的錄影、文件翻一翻 ...

在此子單元內,OO 的部份沒有講得很多
因為老師必須先 overview 課程大綱
然後再把學生帶到軟體工程的世界,及透過使用 python interpreter 傳授 programming 概念

以專業魯蛇的角度來看,此上課的投影片與課後素材的設計非常優異
以 Primitives – Combination – Abstraction – Patterns (PCAP) 的概念為主軸
課堂上雖然在各方面都只是點到為止
但有強調 environment 的概念,使學生對其建立概念模型
當學生閱讀課後素材時,自然就能克服許多障礙

更甚者,課後素材的最後一部分
是引導學生利用 Python 實作帶有 Scheme 風格的半成品 interpreter:Spy
能夠這麼做,是因為教材設計具有連貫性且事先灌輸 environment 的概念模型
(連我都忍不住打開 vim 跟著寫寫看)





等等!入門課怎麼可能上這麼快?
第一堂課上完,就已經直達 OOP  ... 這哪招 XD
6.01 的課程進度大概是國內的 N 倍了吧 



其實在正式課程之前,有一門只有三禮拜的先修課程可以上  
內容大概是「溫和」地讀完「How to Think Like a Computer Scientist: Learning with Python」
然後寫寫作業、考考試 ...



6.189
A Gentle Introduction to Programming Using Python
# 無影音但有課程資料可下載(含 How to think ... 一書)




您發現了嗎?6.01 其實是 EECS 的入門課
要軟一點,有下面這門課可以修:


課程大綱如下:


上面的課程大綱完全就是我夢想中的第一門程式設計課(流口水)



更多的碎碎念


自從三年前我第一次接觸到 Python 後
我常常會思考,是否能拿此一優雅的思想介質來協助新手學習 CS 的課程?
又或者,數學類型的課程若能透過 Python 計算、實作以為輔助
是否數學概念能夠更加紮實地深植於我的腦中?
(或是以程式碼的形式放置在程式作業的資料夾內亦可)


約耳在接近十年前,撰寫了「爪哇學校的危害」一文,頗推薦一觀
文中反映該時代背景下,他所見到的問題


這幾年以來 MIT 的 CS 入門課程,也投奔到使用 Python 語言
以上述 MIT 開放課程的優秀內容看來
我倒不擔心「拍桑學校的危害」會傷害到 MIT ...
更何況,入門後還有多采多姿的 其他課程 可以深入學習


對於 MIT 的開放課程而言
我看不到最聰明的一群學生如何學習
但是看得到有智慧的教授如何教書
之所以這麼說,是從教材與談吐可以得知開課教授具有深厚的 CS 涵養


仔細想想,CS 入門課程才是最難教的
絕對不是僅用單一觀點與狹隘的經驗,就能引導學生順利踏入 CS 的世界



更多更多的 MIT 與 Python
edX 上面有這門課:
Introduction to Computer Science and Programming Using Python及其後續課程:
Introduction to Computational Thinking and Data Science