EDU-SIG: Python 教育
EDU-SIG: Python 教育
Python 在教育的各個層面越來越普及。Python 提供了一個互動式環境,可用於探索解決問題的過程式、函式式和麵向物件方法。其高階資料結構和清晰的語法使其成為理想的第一門語言,而大量現有庫使其適合處理幾乎所有程式設計任務。
Edu-sig 透過其郵件列表,提供了一個非正式的場所,用於交流經驗和討論 Python 在教育領域的未來可能性。其起源可追溯到 Guido van Rossum 開創性的全民計算機程式設計 (CP4E),這是一項獲得 DARPA 資助的提案,並在 1999 年獲得了一筆少量資金。
成員包括但不限於在課程中使用 Python 的教育工作者、獨立開發者以及教育材料作者。討論的重點是 Python 在各個層面的使用,從入門到高階應用。
Python 2 還是 Python 3?
幾年前,釋出了新版本的 Python (3)。這個新版本與之前的版本有一些細微但重要的變化。對於初學者來說,最明顯的變化是 print 以前是一個 Python 關鍵字
>>> print "Hello World!" # for Python 2
現在是一個函式
>>> print("Hello World!") # for Python 3
由於這些變化,為 Python 2 編寫的程式很可能與 Python 3 不相容(反之亦然)。你們中的一些人可能無法控制學生可以使用哪個 Python 版本。如果遇到這種情況,如果你們和學生無法訪問最好/最新版本的 Python,也不必過於沮喪:Python 仍然是作為第一門語言的絕佳選擇,版本之間相對較小的變化並不會改變這一事實。
如果您可以控制學生可以使用哪個 Python 版本,那麼您需要做出選擇。在這種情況下,我們想提供以下建議
- 如果可以,請使用 Python 3,特別是 3.4 版本,並利用其日益增長的第三方庫。如果您計劃將 Python 作為入門語言(例如在 CS-1 課程中)教授,尤其如此,因為 Python 3 是 Python 的未來。此外,如果您用英語以外的語言教授 Python,並且可以在編寫識別符號時充分利用非 ASCII 字元,那麼 Python 3 絕對是您的選擇。
- 如果您需要尚未移植到 Python 3 的第三方模組,請使用 Python 2,特別是 2.7 版本。
郵件列表等
如上所述,Edu-Sig 社群擁有自己的郵件列表。另外兩個郵件列表可能對教育工作者感興趣:python tutor 和通用的python-list。這三個列表都可以在 ActiveState 網站上的可搜尋檔案中找到,該網站也託管了著名的Python Cookbook。python tutor 郵件列表對學習該語言並尋找程式設計問題答案的初學者很有用;歡迎教育工作者作為志願者加入;edu-sig 郵件列表更多用於討論 Python 在教育環境中的使用。
教育工作者免費書籍和教程
有許多免費的 Python 教程。例如,Python wiki 上有一系列Python 初學者指南。此外,以下內容可能特別引起教育工作者的興趣
- Allen B. Downey 的《像計算機科學家一樣思考 Python》是《用 Python 學習如何像計算機科學家一樣思考》的重大修訂版。它以各種格式免費提供;也可以購買印刷版。
- Charles Severance 的《Python 資訊學:探索資訊》是另一本源自上述免費《用 Python 學習如何像計算機科學家一樣思考》的書。截至 2010 年 1 月,這本書只完成了一部分,章節以 pdf 檔案的形式免費提供。
- Dave Kuhlman 的免費書籍和其他教程合集也是教育工作者非常好的資源。
- Andrew Harrington 的動手教程適用於高中和大學級別的 CS-0 學生。Harrington 博士在芝加哥洛約拉大學任教。
教科書和其他非免費書籍
雖然有許多免費書籍和教程,但有些人更喜歡擁有實際的紙質版。如果您屬於這一類,您可能會驚訝地發現已經編寫了近一百本關於 Python 程式設計的書籍。在這裡,我們將只關注其中一部分,這些書籍可能對教授程式設計入門課程的教育工作者感興趣。更多書籍可以在此處和此處找到,或者透過網際網路搜尋。
獻給孩子,無論老少
- Michael Dawson 的《Python 程式設計絕對初學者指南》是為這一受眾編寫的第一批書籍之一,並且仍然是最受歡迎的書籍之一。
- Warren Sande 的《你好世界!兒童及其他初學者計算機程式設計》就像書名所說的那樣。
- David Handy 的《計算機程式設計很有趣!》是為年幼的孩子編寫的。
大學教材也已上市
- John Zelle 的《Python 程式設計:計算機科學導論》是一本為 CS-1 課程設計的書籍。Zelle 博士在 Wartburg 學院任教。
- David M. Reed 和 John Zelle 合著的《使用 Python 和 C++ 的資料結構與演算法》是一本為 CS-2 課程設計的書籍。
- Michael H. Goldwasser 和 David Letscher 合著的《Python 面向物件程式設計》是一本為 CS-1 課程設計的書籍。Goldwasser 博士和 Letscher 博士在聖路易斯大學任教。他們編寫了一個免費的面向物件圖形包作為其教科書的配套材料。
- Paul Gries、Jennifer Campbell 和 Jason Montojo 合著的《實用程式設計(第 2 版):使用 Python 的計算機科學導論》是一本為 CS-1 課程設計的教科書。這三位作者都與多倫多大學有關。
- Bradley N. Miller 和 David L. Ranum 合著的《Python 程式設計語境》是一本為 CS-1 課程設計的書籍。Miller 博士和 Ranum 博士在路德學院任教。
- Bill Punch 和 Rich Enbody 合著的《使用 Python 進行計算實踐》是一本使用 Python 語言教授 CS1 概念的書籍。教育材料包括一套完整的 PPT 幻燈片、實驗練習、Python 專案以及書中 600 多個練習的解決方案。Punch 和 Enbody 都是密歇根州立大學計算機科學與工程系的教員。
- Maria Litvin 和 Gary Litvin 合著的《數字時代的數學與 Python 程式設計》是一本採用截然不同方法的書籍。根據網站上的描述,它獨特地融合了數學和程式設計,旨在讓計算機科學入門課程的學生既能體會到與計算相關的嚴謹數學,又能掌握編寫程式的實用技能。
- Hans Petter Langtangen 博士撰寫的《Python 科學計算指令碼》教授了對科學研究特別有用的工具和程式設計概念。該書的主頁包含一套相關且相當完整的幻燈片。
- Hans Petter Langtangen 博士撰寫了第二本書,《Python 科學程式設計入門》。這本書使用了數學、統計學、物理學、生物學和金融學方面的例子。該書教授“Matlab 風格”和程序式程式設計以及面向物件程式設計。它也可以從 亞馬遜獲得。
學習環境
由於 Python 是一種解釋型語言,因此開始程式設計所需的一切只是一個終端視窗。但是,對於您的學生來說,這並不是最友好的環境;相反,我們建議您使用像 IDLE(代表整合開發環境)這樣的工具,它包含在支援 Tcl 的任何平臺(包括 Windows)上的 Python 安裝檔案中。
至於您自己,如果您喜歡直接從終端視窗程式設計,那麼比預設直譯器更好的選擇可能是 IPython。
除了 IDLE,還有許多第三方工具,您可以透過參考 Python 編輯器 Wiki 和 Python 整合開發環境 Wiki 找到它們。
學習資源
這些是資源、互動式線上教程以及其他有助於教授 Python 或使用 Python 教授程式設計的教育資源。
- 線上 Python 導師是 Philip Guo 建立的免費教育工具,旨在幫助學生克服學習程式設計的一個基本障礙:理解計算機執行程式原始碼每一行時發生的情況。使用此工具,教師或學生可以在 Web 瀏覽器中編寫 Python 程式,並逐步視覺化計算機執行程式時的操作。
- 互動式 Python 網站提供即時 Python 書籍,讓學習者能夠在瀏覽器中執行 Python 程式碼並檢視其執行程式的視覺效果。
- Python 趣味程式設計是針對中級程式設計師的一系列小型 Python 程式,探索了廣泛的計算機科學概念——包括邏輯電路和人工智慧。
- Pynguin 是一個統一的編輯器、互動式控制檯和圖形顯示區域,使用 Python 和 PyQt 工具包編寫。Pynguin 旨在為初學者介紹程式設計概念提供一個簡單的環境。Pynguin 程式生成可儲存為 SVG 或 PNG 檔案的數字影像。
- Crunchy 是一個 Python 程式,可以將原本靜態的 HTML 教程轉換為瀏覽器中的互動式 Python 會話。早期版本的 Crunchy 的基本功能在此截圖影片中演示。
- Python 的新“Mathematica-like”環境是 Codenode。您可能想親自嘗試一下。
- PyKata 是一個新穎的線上環境,旨在作為 Python 的教學輔助工具。它包含少量但不斷增長的程式設計練習,學生可以自行嘗試並立即獲得反饋。歡迎教育工作者貢獻自己的練習。
- Pyro 是一個 Python 程式設計環境,可輕鬆探索人工智慧和機器人學的高階主題。
- GvR,或 Guido van Robot,旨在模擬 Richard Pattis 建立的原始《卡雷爾機器人》。它使用基於縮排的類 Python 語言和大約 20 節課程,旨在教授程式設計概念。線上演示可用。
- RUR-PLE 是一個 Python 學習環境,包括一個編輯器、一個 Python shell,更重要的是,一個 Karel the Robot 克隆,它可以使用 Python 語法進行程式設計,無論是使用過程式命令 [例如 move()] 還是面向物件方法 [例如 robot.move()]。它包含大約 40 節課程。一個基於網路的版本 Reeborg's World 提供了比桌面版本更多的教程。
- Python 的 turtle 模組本身並不是一個學習環境,但它已針對 Python 2.6 及更高版本進行了徹底改造,值得一試。示例包含在原始碼分發中(以及一個 demoViewer 程式,它也作為如何將 turtle 圖形嵌入 Tkinter 應用程式的示例)。對於安裝了舊版本 Python (2.3、2.4 或 2.5) 的使用者,可以在此處找到合適的 turtle 模組版本,其示例在此處。有一個展示 turtle 模組的 Pycon 2009 演講影片可用。
影片
Python 社群的播客、截圖影片和影片演示越來越多,其中許多可能對教育工作者感興趣。有關更多詳細資訊,請查閱Python 視聽教學材料
專業軟體包
鑑於 Python 發行版中包含大量模組,人們常說 Python 是“自帶電池”的。如果標準發行版不包含您需要的內容,您可能需要查閱Python 包索引,這是一個包含近 7000 個額外包的儲存庫。
以下僅代表可用內容的一小部分。
- NumPy 是進行 Python 科學計算所需的基本包。它包含
- 強大的 N 維陣列物件
- 複雜的廣播函式
- 基本的線性代數函式
- 基本傅立葉變換
- 複雜的隨機數能力
- 整合 Fortran 程式碼的工具。
- 整合 C/C++ 程式碼的工具。
- SciPy(發音為“賽派”)是用於數學、科學和工程的開源軟體。SciPy 庫依賴於 NumPy,後者提供方便快捷的 N 維陣列操作。SciPy 庫旨在與 NumPy 陣列協同工作,並提供許多使用者友好且高效的數值例程,例如數值積分和最佳化例程。它們一起在所有流行的作業系統上執行,安裝快捷,並且免費。NumPy 和 SciPy 易於使用,但功能強大,足以受到世界領先科學家和工程師的信賴。如果您需要在計算機上處理數字並顯示或釋出結果,請嘗試 SciPy!
- matplotlib 是一個 Python 2D 繪相簿,可在各種硬複製格式和跨平臺互動式環境中生成出版質量的圖形。matplotlib 可用於 Python 指令碼、Python 和 IPython shell(類似於 matlab 或 mathematica)、Web 應用程式伺服器以及六個圖形使用者介面工具包。matplotlib 試圖讓簡單的事情變得容易,讓困難的事情變得可能。只需幾行程式碼,您就可以生成圖表、直方圖、功率譜、條形圖、誤差圖、散點圖等。
- PIL,即 Python 影像庫,為您的 Python 直譯器添加了影像處理功能。該庫支援多種檔案格式,並提供強大的影像處理和圖形功能。
- OpenOpt 是一個免費的最佳化框架,它建立在 Numpy 之上。除了各種數值最佳化包之外,它還包括
- FuncDesigner - 一種用於快速構建變數/陣列函式並透過自動微分獲取其導數的工具。此外,還可以透過 OpenOpt 在 FuncDesigner 中執行積分、插值、求解線性/非線性/ODE 方程組和數值最佳化問題。
- DerApproximator - 一種透過有限差分近似獲取(或檢查使用者提供的)導數的工具。
- SpaceFuncs - 一種用於 2D、3D、N 維幾何建模的工具,具有引數化計算、數值最佳化和求解幾何方程組的可能性。
- VPython 使建立可導航的 3D 顯示和動畫變得容易,即使對於程式設計經驗有限的人也是如此。它包括 IDLE 的修改版本。
- ReportLab 賦予 Python 程式直接輸出 Adobe PDF 格式的能力。開源版本在 Python 程式設計師手中功能齊全。可用於釋出課程材料。
- SymPy 是一個用於符號數學的 Python 庫。它旨在成為一個功能齊全的計算機代數系統 (CAS),同時保持程式碼儘可能簡單,以便易於理解和輕鬆擴充套件。SymPy 完全用 Python 編寫,不需要任何外部庫。
- Sage 不是一個 Python 包,但提供了一個展示 Python 作為程式語言的環境。它是一個根據 GPL 許可的免費開源數學軟體系統。它將許多現有開源包的功能組合到一個基於 Python 的通用介面中。Sage 的使命是為 Magma、Maple、Mathematica 和 Matlab 建立一個可行的免費開源替代品。
- Blender 是一款跨平臺 3D 建模套件,提供建模、動畫、互動式建立和回放功能。Blender 並非 Python 包,但它確實使用 Python 提供指令碼支援。
- Michael H. Goldwasser 和 David Letscher 編寫了一個面向物件圖形包,用於配合他們的教科書(上文提及)。
學術論文
關於使用 Python 作為程式語言,已經撰寫了許多學術論文。其中包括以下內容
- Fotis Georgatos 博士的碩士論文,從教師的角度看,Python 作為在大學預科教育環境中教授程式設計的第一門計算機語言的適用性如何?
- 在高中計算機科學課程中使用 Python 記錄了 Jeff Elkner 在第九屆國際 Python 大會上報告的 Python 課堂經驗。(另請參閱 Frank Willison 為 O'Reilly 對 Jeff 的採訪。)
- Wartburg 學院的 John Zelle 博士提倡將 Python 作為第一門語言,並在其網站上發表了幾篇關於該主題的論文。
- John Miller 的博士論文,透過 Python 程式設計促進計算機素養(1.37 MB),探討了使用 Python 進行教學的問題,並探索了edu-sig上的一些討論線索。
- Atanas Radenski 博士撰寫了一篇題為“Python 優先”:基於實驗室的計算機科學數字導論的論文,描述了將 CS1 課程的語言從 Java 切換到 Python 後的積極體驗。
- Michael H. Goldwasser 博士和 David Letscher 博士撰寫了一篇題為“用 Python 教授面向物件的 CS1”的論文,該論文已於 2008 年 6 月在第 13 屆計算機科學創新與技術年會論文集 (ITiCSE) 上發表。他們還撰寫了“第一天及以後圖形包”,該論文已於 2009 年 5 月在第 40 屆計算機科學教育 SIGCSE 技術研討會論文集上發表。(免費圖形包的連結已包含在上文)。
最後,雖然這並非一篇學術論文,但 Philip Guo 的《為什麼 Python 是教授程式設計入門課程初學者的絕佳語言》絕對值得一讀。
遊戲時間!
如果沒有遊戲,對程式設計感興趣的人可能會少很多——結果是開發出的免費軟體也會少很多。Python 有兩個著名的遊戲開發框架
雜項
- Python for secretaries:一個資源網站,旨在向商業使用者展示如何使用少量 Python,完全專注於幫助他們完成日常工作。
- 可自由重用資料:教師經常需要有意義的資料來構建程式設計練習。為了支援這種用法,許多教育社群成員貢獻了可自由重用資料,以便在此基礎上進行構建。
- Greg Wilson 的軟體木工是一門針對科學家和工程師的軟體開發技能課程。
- Kirby Urner 的 CP4E 資源將 Python 程式設計與數學主題相結合。
- Phil Hugues 為《Linux Journal》採訪的Guido van Rossum 訪談,是與 Python 創始人關於向非計算機科學專業的學生教授 Python 的努力的對話。
- 駭客與追蹤者:CP4E 和用 Python 教數學,這兩篇文章都由 Stephen Figgins 撰寫,是關於全民計算機程式設計倡議初期的舊文章。
SIG 管理
- 訂閱 edu-sig 郵件列表
- 瀏覽 edu-sig 郵件列表存檔
- 向 edu-sig 列表傳送更改建議。
