在中学教育中引入动手计算

还没有读者喜欢这篇文章。
Several crayons

Opensource.com

教学开源邮件列表中,最近发布了以下问题

我正在为一位正在编写计算机编程课程的高中老师提供建议。我们正在考虑以下几个方面:

  • 基于 PIC 处理器的基础电子学
  • 汇编语言
  • C 语言
  • 使用 VEX 的机器人编程

其基本思想是确保学生有充足的机会进行实验,并了解事物的运作方式(而不仅仅是使用黑盒子)。

理念

在我评论这一点之前,我应该明确我的立场。自 1998 年 LEGO Mindstorms RCX 发布以来,我一直在高等院校中使用小型机器人进行教学。我曾担任英国地区和国家一级 FIRST LEGO League 的评委,并且我仍在为这些小型系统的 运行时 的开发做出贡献。

我的教学理念应该是真实的、建设性的和有趣的。我能提供的最短合理总结如下:

我认为好的学习体验应该是真实的、建设性的和有趣的。当学习体验反映了学习者现在和将来的需求时,它们是真实的。当学生不仅有机会创造一件作品,而且有机会建立自己对创造过程的理解时,它们是建设性的。当学习既有吸引力又有挑战性时,这个过程是有趣的

教育工作者和学生的需求

教师工作时间长,但工资低于他们所做的工作。从早上 7 点到下午 3 点,他们要对学生负责,而且(可能)每天只有一小时的时间可以“准备”。 事实是,许多教育工作者的“准备时间”要么在清晨,要么在下班后。 许多教师会在下班后花一、两甚至更多的时间(在学校或在家中)准备第二天的课程。 同样,周末通常用于补课、评分或做其他(理论上)应该在“准备时间”内完成的工作。 简而言之,教育工作者工作很努力。

如果教师希望让学生参与课外活动或无法随意纳入标准化课程的机会,则意味着他们要投入自己的时间来为学生服务。 在开源世界中,这应该很熟悉……将时间捐赠给对个人重要的事业。 如果时间和精力的捐赠不成功,那么在进行专业评估时,仍然会对他们产生负面影响——即使这是“捐赠”。 如果学生或家长抱怨老师的努力,没有人会关心他们是否“超出预期”,他们只会关心事情是否出了问题。

因此,绝对至关重要的是,如果您要帮助老师进行某些教育活动,则您必须完全致力于在整个过程中为他们提供支持。 这不是您发送到邮件列表并希望有人接收的补丁。 这不是您留在跟踪系统中的工单,希望有人可能会做些什么。 您必须从头到尾与老师并肩作战 110%。 这样做的原因不是为了让老师过得更好:您在那里是因为它意味着学生更好的教育体验。 永远,永远不要忘记这一点。

选择技术的原则

如果您尝试将技术引入课堂或学习体验中,则必须始终遵守一条关键规则:该技术必须正常运行。 如果他们已经安装了 Windows 计算机,并且它们工作正常(并且受到管理员的支持),请勿建议每个人都启动 Sugar on a Stick 以在课堂上进行机器人技术的探索。 老师、学生或管理员都不会熟悉这些工具,如果出现任何问题,您所做的只是应用开源技术来分散学生的学习体验。 如果练习的目的是了解开源工具,那就太好了——就这样做! 如果练习是关于在编程方面取得成功,请不要混淆这个问题。 使用现有的且机构支持的工具

其次,选择能够尽早且经常取得成功的技术。 这是我尝试应用于自己教学的口头禅。 我对这个理想的承诺是我不太尊重那些说学生应该从学习汇编语言开始,或者坚持“C 语言是我开始的地方,他们也应该这样”或者“Perl 是一种很棒的脚本语言”的人。 汇编语言应该由编译器生成。 C 语言是一种可怕的语言,它无法保护开发人员免受自身的伤害——尤其是新手。 一碗字母汤在语法上可能对 Perl 有效。 这些技术都不能从一开始就取得成功,而且没有一种技术可以支持新手快速学习大创意和概念……它们只是教给学生一些我们作为软件开发人员使用的最糟糕的工具,并要求他们尝试(和失败)在第一天就像专家一样思考。

选择学生可以学习并取得成功的技术,而不是专家在日常实践中仍在努力使用的工具。 ScratchAliceGreenfootNetLogoStarLogo。 这些只是为初学者设计的一些工具,如果您想(成功地)向学生介绍编程,就应该从这些工具入手。

如果您的目标是在物理领域(小型机器人或类似领域)做一些事情,那么我还有一些想法要分享。 当然,以上所有内容仍然适用。

要避免的技术

我会排除 PIC 和汇编语言。 这主要是因为 Microchip 坚持保留其工具链的部分私有,这意味着您将向学生介绍他们永远无法完全拥有的工具。 Atmel 生产非常好的处理器,并且使用 Arduino,您可以做一些非常棒的事情(此外,它拥有庞大的用户社区)。 也就是说,我会谨慎行事。 最近向 12 名大学生介绍了焊接,我学到了很多东西。 尽管创建了一套完整的视频来支持他们的构建过程,但我仍然有机会了解

  • 冷焊点……
  • 不良振荡器……
  • 刻录丢失的引导加载程序……

……以及许多其他问题。 不良振荡器(其中一个套件中的不良组件)花了 4 个小时才诊断出来。 虽然最终这很有意义,但在 1 小时的课后计算机俱乐部(或每周 3 次的 50 分钟课堂设置)中,这将是一场灾难。 或者,也许这正是您希望学生体验的……您必须根据教师和学生的特定需求来权衡可能出现的问题和可能的学习成果。

如果教育体验的目的是学习焊接、电子学及其与计算的关系,那就去做吧! 如果体验的目的是让学生快速参与并授权他们从一开始就做一些很酷的事情,那么 Arduino 套件可能并不吸引您的目标受众。 但是,如果我的目标是探索嵌入式电子产品,这绝对是我会向学生介绍的平台。

尝试使用的技术

表达了我对不会从一开始就使用的技术的担忧之后,让我简要地谈谈一些可以在 K-12 课堂中发挥作用的技术。

IPRE Scribbler/Fluke

个人机器人教育研究所是几个学术机构和 Microsoft Research 的合资企业。 Scribbler 平台提供了一种通过 Python 编程语言探索机器人技术的工具。 支持该探索的文本和课程材料是开放的,项目中涉及的所有工具也是开放的。

IPRE 花费了多年的努力,是学习机器人技术和人工智能的绝佳开放资源。 IEEE 机器人与自动化协会 提供了许多(主要是开放的)机器人教育链接;IPRE 的工作在此列表中占有重要地位。

乐高 Mindstorms

乐高 Mindstorms 已经有十多年的历史了。 它拥有庞大的用户社区,并且背后拥有强大的工业和以用户为中心的设计。 该技术很强大,您可以快速使用它做很多事情。 我是 RCX 和 NXT 的粉丝。

两者都需要基础设施:您必须在 PC 上安装软件(套件随附的软件或基于 LabView 的可视化语言 Robolab)。 您需要一种方法在两次使用之间为套件充电——NXT 更容易,而 RCX 更难,因为后者需要 6 节 AA 电池。 (这也意味着,对于 10 个套件,您至少需要 60 节可充电 AA 电池。)您需要学生工作空间,最好是有空间来存储会话之间正在进行中的模型。

社区的重要性(我需要在这里说吗?)是因为老师可以将他们的探索扩展到学生更大的机会。 BotballFIRST LEGO League 都是优秀的竞赛框架,教师可以将他们的学生插入其中。 这些类型的竞赛为从探索开始的事情提供了一种方式,使其发展成为学校的学生和教师参与的高调(和教育性,和优秀)的机会。 最后,可以从 Tufts 的 CEEO 以及通过 LEGO Dacta 获得优秀的课程。

VEX 机器人

我对 VEX 了解不多,但(在概念上)与乐高 RCX/NXT 平台有很多相似之处。 教师可以使用多种 课程资源,并且这些套件在设计时考虑了学生学习者。 与 FIRST LEGO 一样,有 竞赛 教师和学生可以参与其中,并且围绕这些工具有一个从业者社区,他们可以作为您和您合作的老师的资源。

总结

我可能有点长篇大论,但我对学生通过技术获得出色的学习体验充满热情。

像 IPRE Scribbler/Fluke、乐高 Mindstorms 和 VEX 套件这样的工具为进入 Arduino 等工具提供了一个很好的起点。 一旦学生尝到了成功的滋味并了解了可能的事情,我认为您绝对应该将烙铁拿到他们手中并放开他们。 或者,您可以从那里开始……但您需要从一开始就做好充分准备,以彻底支持他们的活动。 无论您做什么,请记住:关注学习者的需求,并努力鼓励尽早成功,经常成功!

User profile image.
Matt热衷于嵌入式控制可用语言的设计与开发。您可以在concurrency.cc上找到他的一些作品,这是在流行的Arduino平台上进行并行编程的集结点。然而,Matt大部分时间都在Berea College担任教员。

9条评论

我知道围绕Mindstorms和开源有很多噪音,各种开源项目为Mindstorms体验增加了多少价值?你玩过这个吗?

嗨 Greg,

我不想在本文中纠缠于任何一个平台;Mindstorms在开源方面有着有趣的历史。

RCX是封闭的,但当RCX被完全逆向工程时,乐高(明智地)没有进行诉讼。pbForth是我最喜欢的RCX项目之一:<a href="http://www.hempeldesigngroup.com/lego/pbForth/homePage.html">在乐高积木上运行的完整Forth解释器</a>。你发送文本,它编译并在32KB中运行。(我喜欢Forth。我是说,仅仅是出于原则... 一种语言扩展语言,你可以用不到1KB的闪存来引导。太棒了... 但我跑题了。)还有<a href="http://bricxcc.sourceforge.net/nqc/">NQC</a>(Not Quite C)和许多其他努力获得了相当大的吸引力。(但将软件移植到RCX很痛苦... 你所做的一切都是通过IR链路进行的,所以如果你崩溃了你的固件,你就会失去调试的能力...)

当NXT问世时,乐高以一种聪明的方式承认了它的社区。它将黑客社区的关键成员聚集在一起,并听取了他们的意见。固件是开放的(但我认为其中有一个受版权保护的短语或其他东西),从一开始人们就为NXT(一个60MHz、ARM7驱动的设备)破解了新的运行时和语言。可以在设备上获得JTAG端口,但大多数你想做的黑客行为都可以通过USB连接完成。

<a href="http://www.botmag.com/articles/10-31-07_NXT.shtml">已经开发了许多用于编程NXT的语言和工具</a>。NXC (not eXactly C),pbLua(也是pbForth的开发者Ralph Hempel),和NXJ(用于LEGO NXT的Java环境)都是开放的解决方案。我已经好几年没有接触过这些了,所以我不能权威地谈论它们的成熟度。 <a href="http://bricxcc.sourceforge.net/nbc">NXC是RCX的NQC端口</a>,所以是一个成熟的工具链,<a href="http://lejos.sourceforge.net/">NXJ是leJOS的修订版</a>,即RCX的Java运行时。Ralph Hempel是一位伟大的开发者,他是一个例子,说明当一个人对某件事充满热情时能做什么---我认为pbForth和<a href="http://www.hempeldesigngroup.com/lego/pbLua/">pbLua</a>的绝大多数工作都是他做的。

(无耻的说明:我们用于并行编程的环境最近被移植到NXT;它<a href="http://projects.cs.kent.ac.uk/projects/kroc/trac/browser/kroc/trunk/tvm/nxt/">现在在我们的树中</a>,但在我们将其集成到我们的开发环境并可以用文档支持它之前,还需要一些改进。)

所以NXT为人们用他们的乐高机器人做很酷的、开放的事情铺平了道路。我可能应该在文章中更好地突出这一点,但我觉得它可能会变得有点冗长。但这就是我们有评论的原因。:)

Mindstorms看起来开箱即用就有很多乐趣。当您使用Mindstorms时,您是否必须学习RCX代码,或者您可以使用其他软件和语言与乐高硬件一起使用?

嗨 James,

请参阅我之前的回复。您不受乐高提供的工具的限制,绝对不受限制。

这是一个对当前问题的很好的关注。不要仅仅因为它开源而推广个人的开源友好设备,而是要使用最有利的东西!

多年来教授BASIC是有原因的,我不认为是因为微软!

Matt,

我们构建自己的PC,并编程路由器、交换机、乐高Mindstorms (Robofest)、C++ (GCC)、汇编(Droidbattles)、shell脚本等等。这些都是由高中三年级和四年级学生完成的。

我们还做了一件这里没有提到的事情。我们使用Gentoo(或LFS)从头开始构建我们的操作系统,并且全年坚持使用Linux。

我们的课程非常棒。我的学生喜欢学习所有这些东西,我也喜欢教他们。不要低估青少年的潜力。

真诚的,

Paul

嗨 Paul,

我相信我们的学生有能力做伟大的事情。我并不是说你不应该让他们接触一切... 我只是建议,当与教师合作或推荐工具时,要准备好完全支持教师和学生。

听起来你可以很好地支持你的学生。在这种情况下,您能够提供积极的教育体验。当技术成为障碍时,这不是一件好事。

继续做很棒的工作。

我强烈推荐在线教育,但要确保它是一个好的项目。我的建议是远离通用学校,并尝试找到一个可以为您的简历增加学分的项目。

过去几年我一直在我的八年级课堂上使用Alice。这是一个教授编程原理的绝佳应用。它在http://alice.org上是免费的。还有一些由教师创建的教程。

Creative Commons License本作品采用知识共享署名-相同方式共享 3.0 未本地化版本许可协议授权。
© . All rights reserved.