看到了嗎?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 倍了吧
第一堂課上完,就已經直達 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 的入門課
要軟一點,有下面這門課可以修:
要軟一點,有下面這門課可以修:
6.00
Introduction to Computer Science and Programming
http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-00sc-introduction-to-computer-science-and-programming-spring-2011/index.htm
# 有影音等課程資料可下載
課程大綱如下:
上面的課程大綱完全就是我夢想中的第一門程式設計課(流口水)
更多的碎碎念
我常常會思考,是否能拿此一優雅的思想介質來協助新手學習 CS 的課程?
又或者,數學類型的課程若能透過 Python 計算、實作以為輔助
是否數學概念能夠更加紮實地深植於我的腦中?
(或是以程式碼的形式放置在程式作業的資料夾內亦可)
約耳在接近十年前,撰寫了「爪哇學校的危害」一文,頗推薦一觀
文中反映該時代背景下,他所見到的問題
這幾年以來 MIT 的 CS 入門課程,也投奔到使用 Python 語言
以上述 MIT 開放課程的優秀內容看來
我倒不擔心「拍桑學校的危害」會傷害到 MIT ...
更何況,入門後還有多采多姿的 其他課程 可以深入學習
文中反映該時代背景下,他所見到的問題
這幾年以來 MIT 的 CS 入門課程,也投奔到使用 Python 語言
以上述 MIT 開放課程的優秀內容看來
我倒不擔心「拍桑學校的危害」會傷害到 MIT ...
更何況,入門後還有多采多姿的 其他課程 可以深入學習
對於 MIT 的開放課程而言
我看不到最聰明的一群學生如何學習
但是看得到有智慧的教授如何教書
之所以這麼說,是從教材與談吐可以得知開課教授具有深厚的 CS 涵養
仔細想想,CS 入門課程才是最難教的
絕對不是僅用單一觀點與狹隘的經驗,就能引導學生順利踏入 CS 的世界
之所以這麼說,是從教材與談吐可以得知開課教授具有深厚的 CS 涵養
仔細想想,CS 入門課程才是最難教的
絕對不是僅用單一觀點與狹隘的經驗,就能引導學生順利踏入 CS 的世界
更多更多的 MIT 與 Python
edX 上面有這門課:
Introduction to Computer Science and Programming Using Python及其後續課程:
Introduction to Computational Thinking and Data Science
感謝大大分享Orz 但是課程太多根本修不完QQ
回覆刪除