注意: 虽然 JavaScript 对于本网站不是必需的,但您与内容的互动将受到限制。请开启 JavaScript 以获得完整的体验。

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 Cookbookpython tutor 邮件列表对学习该语言并寻找编程问题答案的初学者很有用;欢迎教育工作者作为志愿者加入;edu-sig 邮件列表更多用于讨论 Python 在教育环境中的使用。

教育工作者免费书籍和教程

有许多免费的 Python 教程。例如,Python wiki 上有一系列Python 初学者指南。此外,以下内容可能特别引起教育工作者的兴趣

教科书和其他非免费书籍

虽然有许多免费书籍和教程,但有些人更喜欢拥有实际的纸质版。如果您属于这一类,您可能会惊讶地发现已经编写了近一百本关于 Python 编程的书籍。在这里,我们将只关注其中一部分,这些书籍可能对教授编程入门课程的教育工作者感兴趣。更多书籍可以在此处此处找到,或者通过互联网搜索。

献给孩子,无论老少

大学教材也已上市

  • 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 风格”和过程式编程以及面向对象编程。它也可以从 亚马逊获得。

系统消息:警告/2 (<字符串>,第 208 行);反向链接

重复的显式目标名称:“python 科学编程入门”。

学习环境

由于 Python 是一种解释型语言,因此开始编程所需的一切只是一个终端窗口。但是,对于您的学生来说,这并不是最友好的环境;相反,我们建议您使用像 IDLE(代表集成开发环境)这样的工具,它包含在支持 Tcl 的任何平台(包括 Windows)上的 Python 安装文件中。

至于您自己,如果您喜欢直接从终端窗口编程,那么比默认解释器更好的选择可能是 IPython

除了 IDLE,还有许多第三方工具,您可以通过参考 Python 编辑器 WikiPython 集成开发环境 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 作为编程语言,已经撰写了许多学术论文。其中包括以下内容

最后,虽然这并非一篇学术论文,但 Philip Guo 的《为什么 Python 是教授编程入门课程初学者的绝佳语言》绝对值得一读。

游戏时间!

如果没有游戏,对编程感兴趣的人可能会少很多——结果是开发出的免费软件也会少很多。Python 有两个著名的游戏开发框架

  • pygame 是使用 Python 进行游戏开发的原始且仍然非常活跃的软件包。它允许 Python 与 SDL(一个跨平台多媒体库)进行通信。由于它需要为每个平台和每个 Python 版本进行编译,因此当发布新的 Python 版本时可能会出现滞后。
  • pyglet 是基于 OpenGL 的后起之秀。由于它是一个纯 Python 包,即使发布了新的 Python 版本,它也可以按原样使用(Python 2 到 Python 3 的过渡除外)。

杂项

  • Python for secretaries:一个资源网站,旨在向商业用户展示如何使用少量 Python,完全专注于帮助他们完成日常工作。
  • 可自由重用数据:教师经常需要有意义的数据来构建编程练习。为了支持这种用法,许多教育社区成员贡献了可自由重用数据,以便在此基础上进行构建。
  • Greg Wilson 的软件木工是一门针对科学家和工程师的软件开发技能课程。
  • Kirby Urner 的 CP4E 资源将 Python 编程与数学主题相结合。
  • Phil Hugues 为《Linux Journal》采访的Guido van Rossum 访谈,是与 Python 创始人关于向非计算机科学专业的学生教授 Python 的努力的对话。
  • 黑客与追踪者:CP4E用 Python 教数学,这两篇文章都由 Stephen Figgins 撰写,是关于全民计算机编程倡议初期的旧文章。

SIG 管理