11 个用于教学和学习 Python 的资源

还没有读者喜欢这个。
Open education resources

Opensource.com

如果您正在寻找教导、辅导或指导初学者程序员的方法,您还有很多工作要做。不同的学习风格、不同的知识水平以及不断变化的主题领域共同作用,使您作为一名教师疲于奔命。幸运的是,有帮助——很多帮助。它以开源教科书、工具甚至游戏的形式出现——所有这些都是为了让教师(和学习者)比以往任何时候都更容易。

一点背景:我去年夏天完成了信息和计算机科学硕士学位,大约两周后开始教我的第一门大学课程(Python 编程)。我是一名自学成才的程序员,主要在工作中学习。我从未上过 Python 课程。更让人兴奋的是,我的学生范围从从未编写过一行代码的真正初学者到尝试新语言的经验丰富的程序员。按理说,我一开始就应该注定失败。

开源课件来救援

尽管我的学生在经验和兴趣方面存在多样性,但我们还是设法度过了这个学期,并且最大限度地减少了令人沮丧的无聊感。这完全得益于 Python 世界中丰富的开源教育材料和工具。

就像开源软件一样,开源课件指的是可以免费使用、共享甚至修改的书籍、教程、游戏和测验。内容创作者可以使用多种开源许可证,包括 GNU 通用公共许可证MITBSD 许可证,以及 知识共享 许可证的几种变体。它们在允许的内容上有所不同,但重要的是它们都可以在您的课堂上免费使用。

我没有强迫学生花 150 美元购买一本枯燥的教科书,并输入让一半学生感到困惑,同时让另一半学生感到厌烦的例子,而是完全取消了教科书的要求。这门课没有使用一本价格过高的书,而是使用了几本高质量、最新、免费的书。我没有死板地使用那些在我自己的教育中未能激励我的旧“实现链表”或“构建图书馆借阅应用程序”示例,而是能够给学生布置诸如“模拟星系”、“为生物实验设计引物”、“制作平台游戏”或“构建 Web 服务”之类的任务。

开源 Python 教科书

对于班级中的初学者,Charles Severance 的著作 Python for Informatics (知识共享许可)提供了帮助。这与 Coursera 的“Programming for Everybody”课程中使用的教科书相同。我为任何输入书中代码示例并在博客上写下他们所学知识的学生提供积分。

想要以不同方式入门 Python 的更有经验的程序员能够借助 GPL 许可的 Pygame 模块和 Al Sweigart 的知识共享许可教科书 Invent Your Own Computer Games with Python 直接开始游戏编程。选择这种方法的学生通过输入教科书中的示例代码并最终学会修改代码来创建自己的游戏而获得积分。

开源库和文档

对于真正的初学者来说,学习教科书的前几章就足以完成一个学期的工作。但是那些报名参加轻松获得 A 的经验丰富的程序员呢?开源社区也为他们提供了大量的乐趣。

Python 作为一种语言的最大优势之一是各种强大、良好支持、文档齐全的库和软件包。对于那些不需要学习列表和函数的学生来说,可用的项目数不胜枚举。

对于理科专业的学生,有几个选项,包括以下 BSD 许可的软件包

  • Astropy,其中包含用于 天文常数坐标系模型拟合 等的模块(和示例代码)。
  • Bokeh,一个可视化库。文档非常广泛(而且很漂亮)。任何科学家或理科专业学生都应该能够在她自己的领域中获得一些有趣的测试数据,如果她可以做到这一点,她就可以通过遵循 Bokeh 示例将其变成漂亮的图形。
  • Vispy,另一个可视化库,附带许多复杂、令人印象深刻的示例项目。一位初学者能够找到、运行、阅读、理解并成功修改 3D 螺旋星系模拟。你们有多少人在编码的第一个学期做了这么酷的事情?

当科学家们在一个角落里处理数据时,许多对学习 Web 技术感兴趣的学生能够借助以下优秀资源构建自己的相关项目

  • BeautifulSoup 是一个 MIT 许可的软件包,它使解析 HTML 就像浏览渲染版本一样愉快。文档是对 Python、解析和 HTML 的完美介绍,一应俱全。
  • Flask 是一个 BSD 许可的 Web 微框架。快速、切中要点的教程带领新手了解模板、请求和响应、数据库操作和测试等主题。对于中级程序员来说,这个单独的演练比任何初学者教科书都能提供更完整、更引人入胜的 Python 入门。

游戏和互动教程

该课程还得益于为 Python 和一般编程学生提供的丰富游戏化资源。以下是一些知识共享许可的选项

  • Project Euler 是一个具有难度递增的编码挑战的网站。它们大多简短、数学性质,非常适合练习新语言。学生们能够完成一组这些问题,并在课堂上展示他们的解决方案以获得积分。
  • Slice Like a Ninja 是我构建的一个 Web 游戏,它向玩家呈现字符串和一个终端。目标是使用 Python 切片语法将输入字符串转换为给定的输出字符串。我没有展示关于切片的章节和测试,而是等到学生遇到可以用切片解决的问题,介绍了这个主题,然后让他们玩这个游戏。

Python 不是在真空中发生的,熟悉编程环境本身通常是初学者编码员的最大障碍。有些学生走进我的课堂时已经是成熟的命令行和版本控制向导,但大多数人需要入门指导。以下是一些用于学习命令行和相关工具的优秀(MIT 许可)资源

  • Bashy 是一款简短的游戏,它介绍了基本的命令行用法,同时为那些难以摆脱 GUI 世界的人提供可视化反馈。(完全披露:Bashy 是我在研究生院构建的。但我并没有从中赚钱!)
  • OpenVim 是针对功能强大的 Vim 文本编辑器的完全初学者的交互式教程。
  • VimGolf 是一个命令行工具和网站,它实现了一个竞争性游戏,可以帮助所有级别的 Vim 用户提高效率。
  • learnGitBranching 是一个内容丰富、全面、交互式的 Web 应用程序,它通过精美的可视化和鼓励性反馈涵盖了初级和中级 Git 命令。我拒绝在不要求版本控制的情况下教授编程,因此这是一个无价的资源。它胜过就 Git 滔滔不绝地讲几个小时!

特别是版本控制是一个复杂的主题,深入研究会得到回报。对于需要比 Web 游戏更多的东西来掌握它的学生,Scott Chacon 和 Ben Straub 的知识共享许可的 Pro Git 教科书可以免费在线阅读。

经验教训

开源课堂取得了喜忧参半的结果。对于更高级的学生来说,这是一个巨大的成功。他们欣赏有机会探索自己的兴趣,而不是被束缚在一本教科书中的例子中,并且感觉他们获得了对 Python 的扎实介绍。初学者不太热情,在某些情况下抱怨感到不知所措或困惑。

也许这是课程的弱点,但也可能感到不知所措和困惑是对进入像开源 Python 世界这样多元化且充满可能性的世界的自然反应。想到 GitHub 上有近一百万个 Python 项目确实令人震惊,而想到一种语言可以为网站、游戏和宇宙飞船提供动力也有些令人困惑。

理解开源格局可能需要不止一个学期的努力,但每个学生都清楚地了解了有多少优秀的资源可用,以及它们为我们提供了多少力量。被束缚在一本教科书上的日子已经一去不复返了,而且最好永远不要再回来!开源课件允许教师和学习者设计丰富、定制化、交互式的学习体验,而且都是免费的。现在让我们编写一些代码吧!

User profile image.
Brian Hall 是一位教育家和开发者,他的经验包括生物信息学、A/B 测试、用户体验和与幼儿园学生一起拆卸计算机。他住在夏威夷希洛,很乐意听到(并帮助宣传)您的开源项目。

6 条评论

这太棒了!感谢分享。我正在向 EdTech 和数学老师广泛分享这篇文章,他们要么正在教授 Python,要么正在考虑教授 Python。您是否考虑过在 https://www.oercommons.org/ 上分享您的作品

谢谢 Sebastian,这门课程看起来很棒。我应该向大家展示 `import turtle`!

Don,OER Commons 上的资源看起来很不错。我在夏威夷大学的一些讲师开发的自定义框架中构建了我的课程,所以我不确定它是否可以转移。都在这里 tinyurl.com/cs294-python

Maggye,genial!Gracias por leer!

有趣的帖子。让我想起了翻转课堂模式,在这种模式中,教师是引导者,学生主导自己的学习体验。听起来这对于更有经验的人来说效果更好!

很棒的帖子 :)

知识共享许可协议本作品根据知识共享署名-相同方式共享 4.0 国际许可协议获得许可。
© . All rights reserved.