全球各地的教师们都响应了学习编程的号召。他们说:“是的,我们会教孩子们编程,即使我们自己也不完全了解。” 他们已经教授了关于 Scratch 的课程;他们庆祝了 编程一小时 活动。也许他们甚至涉足了 Codecademy 的课程,以熟悉这种新近流行、突然无处不在的名为“编码”的技能。
学生和教师接下来应该去哪里探索呢? 许多——可能大多数——这些计算机编程的新探索者完全不熟悉职业开发者和技术专家所穿梭的语言丛林。 这给探索计算机科学的学生和教师制造了一个绊脚石。 从像 Scratch 那样以直白的语言指令视觉化地组装代码块,到大胆地在空白文本编辑器中键入奇怪的语法,至少可以算是令人望而生畏的。 像 Codecademy 这样的工具可以缓解这种过渡,但即使在那里,选择也可能让人眼花缭乱。 在教授学生编程和计算思维多年之后,我确信 Python 是通常的入门级编码活动之后最好的路径。 在这里,我们将探讨如何开始使用 Python 进行真正的计算机科学探索。
考虑一下教授编程的真正目标。“编程一小时”活动这样说:
每个学生都应该有机会学习计算机科学。 它有助于培养解决问题、逻辑和创造力方面的技能。 通过尽早开始,学生将为在任何 21 世纪的职业道路上取得成功奠定基础。
我想补充一点,面向所有人的编码目标,不仅仅是未来的科学家和工程师,是计算思维:学习分析和分类问题,将难题分解为更小、更简单的问题,以及修改和构建适合特定情况的工具。 每个学生的未来都需要这些技能。
迷人的 Python
对于年轻的编码人员来说,Python 是第一个“真正的”编程语言的明确选择。 其简洁的语法使计算思维的概念优先于棘手的语言特性。 Python 是一种解释型语言,而不是编译型语言(如 Java 或 C++),这意味着修改和测试所需的时间更少。 Python 广泛的 模块 库(如 Turtle,一个类似 Logo 绘图的实现)使 Python 开箱即用,非常实用。 但也许最重要的是,Python 背后有强大的推动力:Python 已经超过 Java,成为美国顶尖大学计算机科学系最受欢迎的入门级编程语言。
如何最好地入门? 如果您使用的是 Linux,那么您已经拥有开始使用 Python 编程所需的一切。 对于 Mac 和 Windows 用户,请访问 python.org 下载官方的 IDLE 解释器/开发环境。 在您和您的学生在 Python 之旅中更进一步之前,IDLE 将完全能够满足您的编程需求。
当您去下载 Python 时,您可能会注意到似乎有两个版本可用:2 和 3。您应该选择哪个版本? Python 2.7 非常稳定,但已处于其开发周期的末尾。 Python 3 正在积极开发中,被认为是“当前”版本。 许多人还认为 Python 3 是 更好的教学语言。 我也这么认为。
下载并安装 IDLE 后,您和您的学生就可以开始探索单行命令了。 我是一个传统主义者,所以我鼓励您从 print("Hello, World!") 开始。 通过这一行代码,您的学生将加入程序员的光荣行列。
接下来,变量是一个简单的入门。 尝试以下命令:
>>> x = 5
>>> x
>>> x + 2
等等。 至关重要的是,学生要习惯使用键盘输入命令,而屏幕上没有太多提示。 当他们去编写他们的第一个 .py 文件(Python 的文件扩展名)时,他们将看到一个空白屏幕和一个闪烁的光标。 随着时间的推移,这可能代表着编程的无限潜力,但起初他们会迷失在一片浩瀚的白色像素海洋中。
如果您比您的学生更熟悉 Python,您可能会很想引导他们度过这段困惑时期。 这里最好采取轻柔的方式。 抵制住大部分教学时间都在教室前面举例子的诱惑。 相反,让您的学生自己探索 Python——或者更好的是,与他们一起探索! 许多刚接触编程的教师和学生都犹豫是否要深入研究 官方文档。 在 Python 的情况下,官方文档清晰且信息丰富。 当与基于强大的计算机科学基础知识的课程结合使用时,Python 文档将成为宝贵的资源。 此外,教导学生如何研究编程语言中未知的片段本身就是一堂有价值的课。 任何称职的程序员都会花费大量时间研究他们还不了解的东西。
不久之后,您和您的学生将把模块导入到 Python 中——random 很有可能是第一个。 也许您会使用 turtle 来创建过程艺术。 Python 自带许多有用的模块,但很快我确信您和您的学生会想要用 Python 做更多的事情。 这就是 pip 的用武之地。
Pip,Python 包管理器,允许用户从命令行安装额外的模块。 Pip 随您从 python.org 下载的版本一起提供。 借助 pip 和少许命令行技巧,您可以轻松扩展 Python 的功能。
我建议使用 pip 安装的第一个模块之一是 matplotlib。 Matplotlib 是一个历史悠久的项目,它为 Python 带来了强大的数据可视化功能。 借助 MPL,您可以开始可视化地探索数据。 如果您的学生正在学习代数或更高阶的数学课程,那么将 Python 融入数学课程具有巨大的潜力。 想象一下,让学生制作自己的图形计算器,或者使用 蒙特卡洛模拟 解决概率问题。
科学也是如此。 从病毒种群随时间推移到火箭飞行轨迹的模拟,Python 都能轻松实现。 当学生必须使用数学或科学概念构建程序时,他们对这些概念的理解会比其他方式更深入。
这是一个非常简单的数学示例:编写一个函数来求平方根。 当然,Python 有一个 math.sqrt() 函数,但这会让乐趣大打折扣。 想象一下,您没有记住任何数学事实,但您知道什么是平方根并且可以进行简单的算术运算。 现在求 16 的平方根。您将如何进行?
通过代码来思考这个问题有两个教学目标:首先,它确保学生牢固地理解根的概念以及如何求根。 其次,由于他们必须编写一些算法来寻找根,他们会考虑许多可能的策略中哪种最有效。 他们将以计算方式思考来解决问题,并在这样做时遇到并找到了针对整个问题类别的解决方案。
一旦学生编写了相当数量的代码,您可能会寻求更好的方法来收集编程作业。 我建议使用 git 和在线仓库,如 GitHub 或 BitBucket。 GitHub 更受欢迎,让学生开始在 GitHub 上创建仓库可能会让他们获得职业优势。 BitBucket 具有某些对教育工作者有吸引力的功能,例如免费的私有仓库。 无论哪种方式,学习使用 git 对于任何年轻的程序员来说都将是一堂重要的课。 对于教师来说,这些在线代码仓库可以作为模板代码的分发点,以及其他计算机科学教师的示例库。 CodeSchool 有一个很棒的 免费的 git 和 GitHub 入门教程,可以帮助您入门。
关于 Python 的进一步阅读和资源数不胜数。 Codecademy 的 Python 课程 很基础,但如果这是您的第一门编程语言,则值得学习。 笨办法学 Python 是一本流行的电子书/网站,以前是完全免费的,但后来完整版开始收费。 我不太喜欢 Zed Shaw 针对完全初学者的脚本编写方法,尽管我看到了学生掌握 Python 基础知识后的好处。 对于大量内容来说,这是一笔很小的投资。 但也许网络上最丰富、最有价值的 Python 资源是 MIT 的 edX 课程,它们使用 Python。 MIT 提供了数小时的免费教学,深入探讨了严肃的计算机科学问题,但即使对于初学者来说也很容易理解。 尽管这些课程需要付出真正的努力才能完成,但通过这些课程获得的技能可以为任何新的程序员奠定坚实的基础。
有了这些资源,您和您的学生就可以开始通过 Python 语言探索代码世界了。 当您踏上这段旅程时,我想向您提出一些要求:将您的发现贡献回这个社区! 如果您开发了使用 Python(或任何其他编程语言)的成功课程,请考虑通过 GitHub 或 BitBucket 发布代码,以便其他教师可以从您的发现中受益。 我们的这个社区在每个人都做出贡献时是最强大的。 这可能是您学生最重要的一课。
学校
本文是 返校季 系列文章的一部分,该系列文章侧重于面向各级别学生的开源项目和工具。
1 条评论