30 秒看懂
Brown University 教授 Shriram Krishnamurthi 介绍 Bootstrap 将计算融入学校科目的经验。他根据公平、严谨和规模三个目标评估必修课、选修课及课后项目,并说明 Bootstrap 为何将编程引入代数、数据科学和物理。 他讨论计算与数学之间的迁移、结构化练习表、教师支持和评估。在问答环节,他还谈到无障碍、隐私、纵向证据、跨学科教学,以及将模拟应用于物理世界的局限。
- 1先提出工程问题Krishnamurthi 对比了两种做法:立即推荐一门语言,或先询问课程要实现什么目标、满足哪些约束。
- 2三个目标:公平、严谨和规模Bootstrap 用三个目标共同评估课程的实施方式,而不假定某一种形式能解决所有问题。
- 3将计算带入其他学科他主张将计算融入现有学科,尤其是代数,借助现有必修课程和教师网络覆盖更多学生。
- 4知识迁移很难他将明确教学、深层结构相似性和操作流程视为跨情境运用所学的重要条件。
- 5为程序设计提供支架练习表将程序的契约、例子和代码与数学中的定义域和值域、输入输出表及符号形式联系起来。
- 6让教师成为核心教师需要符合真实课堂条件的专业发展、教材和实际支持。
要点建议
- 课程设计应从教育目标和课堂约束出发,而不是先选自己喜欢的编程语言。
- 公平、严谨和规模这三个目标可能与必修课、选修课和课后课程的实际条件发生冲突。
- 将计算融入现有必修科目,可以触及那些可能从不选择独立计算机选修课的学生。
- 计算与代数之间的知识迁移需要明确教学、深层结构相似性和解决问题的流程。
- 教师培训、教材和课堂支持是课程不可或缺的组成部分,而非事后补充。
- 短期学习进步的证据不同于纵向证据;在保护隐私的同时收集后者十分困难。
按章节阅读整理后的全文
课程设计始于提问
Krishnamurthi 请工程师在选择工具前考虑目标和约束,并梳理教师准备、无障碍和电脑使用等实际障碍。
有人问工程师该如何教授计算时,他们往往立刻推荐一门语言:Scratch、Logo、Haskell、JavaScript、OCaml 或其他语言。但如果有人问怎么开发软件,工程师通常会先问软件有什么用途。课程设计也应该遵循同样的原则。
面对工程问题,我们先询问目标和约束,再选择方法。教育领域常常颠倒这个顺序,先从偏爱的方法入手。我希望像构建、管理或运行系统一样来设计课程。
明显的约束包括学生的年龄和已有经验、课程是否必修、上课频率以及学生人数。适合两个人的方法未必适合三十人的课堂;连续第三年使用同一个工具,也未必能满足学生下一步的需求。
还有一些约束对技术人员来说可能不那么明显。课堂有可靠的互联网吗?教师是否刚接触编程?学生会打字吗?依赖将积木拖到精确位置的界面,视力或运动障碍学生能使用吗?
家里和学校能否使用电脑都很重要。不能指望家里没有电脑的学生完成电脑作业;假设随时都能使用电脑的课程,也不适合每周只能用一小时机房的学校。
公平、严谨和规模
Bootstrap 的目标为评估必修课、选修课和课后项目提供了视角。每条路径在资源、参与和稳定性方面都有不同限制。
听众提出的目标包括将计算与现实生活联系起来、培养推理能力、提出更好的技术问题、建立信心、为就业做准备,以及将知识迁移到其他领域。这些都是可能的目标,但不会自动导向同一种课程。
Bootstrap 的工作由三个目标驱动:公平、严谨和规模。我们希望学生真正学到东西,而不是接受缩水的课程。我们还需要能够覆盖许多学校的方法,即使这意味着做出与我在 Brown 面对经过挑选的学生时不同的选择。
公平很重要,因为计算机科学存在代表性不足的问题。我希望评估我们的决定如何影响学习机会的公平。接下来用三个目标考察三种常见的实施路径:必修课、选修课和课后项目。
计算机科学必修课听起来很直接,但扩大规模会带来实际问题。教师可能需要资格认证,合格教师难以招聘,业界也在争夺具备计算技能的人才。学校还需要在已经排满的课程表中腾出时间。
按我的粗略估算,在全国范围内为学校配备教师、支付工资和福利,每年需要数十亿美元。有些学校能很好地实施必修课,有些却找不到或负担不起所需人员。如果所有人都必须通过才能毕业,我也担心课程的严谨性会承受压力。
选修课避免了全民必修,却带来公平问题。据他观察,目前选修计算机科学课程的学生大量集中于白人和亚裔男生。现有班级的构成本身就可能影响其他学生是否觉得这门课适合自己。
学校必须优先保障数学和读写等毕业要求。如果学生代数不及格,重修就可能挤掉一门选修课;另一门必修课不及格则会进一步压缩空间。本来可能对计算产生兴趣的学生,或许根本没有机会选择它。

与种族和阶层相关的通过率差异会使问题加剧。选修课的质量也参差不齐:有些学校做得非常出色,有些则差得多。后来在入门课程的学生身上,我也看到了这种差距。
课后项目也有自己的障碍。学生可能需要挣钱或照顾弟妹,志愿者也难以长期留住。Bootstrap 最初是课后项目,据我们的经验,志愿者回归率相对较高,约为 70%,但这并没有解决出勤问题。
在我们的课后课程中,学生平均大约只参加一半的课。STEM 学习是逐步积累的,学生缺的课各不相同,进度也就不同。到了十周项目的末尾,教师实际上要为每个学生安排一套定制的学习顺序。
即使出勤稳定,也不能消除所有障碍:学生放学后很疲惫,农村地区附近也可能缺少志愿者。我并不声称已经解决了所有这些问题;在这种环境下,实现公平、严谨和规模仍然很难。
将计算融入代数
他认为,让所有人学习计算不一定意味着要求人人上一门独立的计算机科学课。代数提供了现成的网络,但也带来知识迁移这一难题。
再考虑第四种选择:融合计算。如果我们认为每个人都应该学习计算机科学,这不等于说每个人都必须上一门独立的计算机科学课。如果计算对各学科都有用,我们可以把它带进学生已经在学的科目。
代数是尤其重要的起点。它是通向许多后续领域的门户,是毕业必修课,也是一门关系重大的科目。Krishnamurthi 认为,学生也可能在这一阶段从说“数学很难”转变为相信自己“学不会数学”。
一位听众强调,算术和分数方面的困难可能出现得更早。Krishnamurthi 同意情况复杂,但他强调向抽象对象及其性质过渡的难度:像 f(x) = x² 这样的函数,不只是另一个要求出数字的方程。
将计算融入代数,可以覆盖本来就必须学习这门课的学生;它也能借助现有教师、课程和专业组织,无须建立全新网络。代数本身就是一门要求严谨的学科。
但这并非没有代价。核心难题是知识迁移:学习者必须将一种情境中学到的技能运用于另一种情境。Krishnamurthi 认为,明确教学、深层结构相似性和完成任务的流程都是重要条件。
知识迁移可能比想象中脆弱。他提到一项研究:学生理解一个球穿过短管下落的物理情境,却难以将这个思路用于从塔上落下的情况。课程不能简单地假定专家一眼看出的联系对学生也显而易见。
让语言与教学法相契合
编程和数学中的函数、变量及数字存在差异,可能阻碍知识迁移。结构化程序设计练习表将两个领域的多种表征联系起来。
编程和数学可能用同一个词表示不同概念。编程函数可能有副作用或没有返回值,而代数教师期望数学函数满足垂线测试。可变的编程变量与代数变量的行为也不同。

数字也可能造成不一致。整数除法、溢出和下溢可能使计算机的结果不同于学生预期的数学结果。对于已经在分数或代数上遇到困难的学生,这些细节可能阻碍而非促进迁移。
因此,技术选择之所以重要,部分原因是它能避免严重的不匹配。Bootstrap 采用函数式编程,并选择与所教数学内容相契合的数制。但光有语言还不够:学生还需要一套解决问题的流程。
空白的编程界面可能让人望而生畏。学生必须把题目转化为不熟悉的代码;遇到困难时,他们往往继续添加代码,而不是重新组织已有内容。等到求助时,他们可能只能说:“我的程序运行不了。”
其他设计领域在制作最终成品之前,会使用多个阶段、视角和表征。数学教师也会帮助学生认识到,表格、图形和符号表达式是同一个函数的不同表示方式。

Bootstrap 用练习表为学生提供结构化的设计流程。他们先写契约和目的,再通过具体例子推演,最后从例子中抽象出代码。这个顺序帮助学生从空白页面逐步走向解决方案。
计算机科学家可能将这些部分称为类型规范、测试用例和代码。数学教师则能认出定义域和值域、输入输出表以及符号形式。明确联系这些表征,能够加强学科之间的联系。
这种分阶段的支持就是支架:每一步都帮助学习者走向下一步,并减少挫败感。这些联系需要明确展示和检查,不能寄希望于学生自己发现。
游戏、数据科学和教师支持
Bootstrap 学生制作和评审游戏;数据科学课程使用编程探究问题。Krishnamurthi 强调教师发展、教材以及关注真实课堂条件。

在 Bootstrap Algebra 中,没有编程经验的初高中学生会设计一款电子游戏。Krishnamurthi 说,大约 20 小时后,他们就能做出可以运行的游戏,同时学到计算和代数。他说团队会衡量学习成果,并开展了对照研究,而不是把上过课直接视为学会的证据。
语言、课程和教学法相互依赖。例如,学生直接在源代码中写例子;如果为了表达两个例子就要他们学习一个单独的测试框架,就会削弱数学与编程之间的联系。
在发布会上,学生展示自己的游戏并进行代码评审。他们在观众面前回答有关代码的问题,也解释数学公式。Krishnamurthi 认为,这两种做法都能建立信心,并将数学推理与软件推理联系起来。
他认为,该项目之所以能够覆盖不同人口群体,很大程度上是因为它在学生本来就要上的代数课中进行。接着,他介绍了一门用同样总体方法开发的数据科学课程,参与者包括数学、统计、技术、社会学科等领域的教师。

在数据科学课程中,学生提出问题并撰写报告;程序只是调查的一部分,而不是全部成果。针对数据集编程是在文献综述和调查等现有方法之外增加一种工具,而不是取代它们。
这一科目也提供了讨论计算对社会有害影响的机会,包括《Weapons of Math Destruction》中提出的问题。课程使用专为支持表格和查询而设计的 Pyret 语言,让学生不必先掌握循环或递归,就能提出有意义的问题。
Bootstrap 还与物理教学组织合作开展物理课程,其代数工作则有数学教育工作者参与。Krishnamurthi 强调,要与现有负责教授这些科目的专业群体合作。
项目以教师为中心。教师需要专业发展、练习册以及针对实际课堂问题的支持。仅有一个巧妙的编程环境远远不够;技术人员必须理解教师工作的约束条件。
他说,学生只需短暂的个性化机会,就能对项目产生主人翁意识,并不需要在每个阶段都拥有无限自由。结构化课程和创造力并不一定对立。
练习表是知识迁移策略的关键部分。他讲到,有些计算机科学教师觉得纸张不合适,于是去掉练习表,后来发现预期的迁移没有发生。数学教师通常更能接受这种结构化流程。
解决实际问题也包括行政和操作细节。如果学校每周只有一小时的网络使用时间,叫它购买更多网络服务并不能解决问题。课程必须适应教师面临的条件。
Krishnamurthi 将 Bootstrap 总结为三组相互关联的选择:公平、严谨和规模这三个目标;教学法、语言和课程这三种手段;以及代数、数据科学和物理这三条路径。他相信这种组合能够带来更好的计算教育。

问答:无障碍与教师准备
听众询问初中、无障碍、家长和未来教师培训等问题。他讨论公平方面的取舍以及扩大支持的努力。
有人问到年龄更小的学生,他说 Bootstrap Algebra 和 Data Science 已经在一些初中使用。团队当时还在专门为初中设计 Bootstrap Junior,并开发积木式环境以降低打字障碍。
他说,积木环境正与一位盲人程序员共同设计,并明确以屏幕阅读器无障碍支持和符合 ARIA 标准为目标。演讲时,团队已为此工作约一年半,预计完成前还需要继续开发。
一位听众问如何让家长在家中参与。Krishnamurthi 说,出于公平考虑,Bootstrap 对此一直比较谨慎:有些家长缺少时间或资源,把家庭参与作为核心可能使他们的孩子处于不利地位。他欢迎大家提出处理这一取舍的建议。
一位与会者说,他看到 Brooklyn 经济困难社区的家长对计算很感兴趣。讨论区分了兴趣和在家支持项目所需的资源与时间。
另一位听众问如何准备未来的数学教师使用技术。Krishnamurthi 说,团队正开始与职前教师和教师培训项目合作,包括 Utah 已有的工作,并希望将其扩展到其他州。
被问及最担心什么时,他说把计算融入数学有风险,因为学校要接受数学成绩评估,可能担心新做法会拉低分数。团队必须说服持怀疑态度的教育工作者,同时尊重学校和学生面临的压力。
证据、衔接与隐私
问题涉及在高风险数学课程中引入新方法的风险、后续课程,以及在尊重学生隐私的同时收集纵向数据的困难。
一位听众问入门项目之后怎么办。他介绍了 Bootstrap Reactive 和其他进一步深入计算机科学及数据结构的扩展课程,同时指出小团队资源有限。他并不声称解决了更广泛的全国课程衔接问题。
他认为,美国缺少统一课程既有代价也有好处。地方差异使项目即使有效也难以推广,但也允许各地开展不同实验。光有证据并不能保证学校采用成功的方法。
被问到长期跟踪时,他说 Bootstrap 大约在 2007 年作为课后项目起步,后来转向校内使用。纵向数据很难收集:学校保护学生隐私,研究人员也不希望在没有明确告知的情况下跟踪学生。
他承认,尽管有一些有限的研究,关于纵向证据的简短回答基本上是没有。学校可能拥有研究人员无法获取的数据,也可能根本没有这些数据。评估项目的长期影响时,这一区别很重要。
一位听众询问如何教授证明。Krishnamurthi 说,他对此很感兴趣,正在先研究大学阶段的问题,希望形成成熟方法后再将其迁移到高中。
一位教师教育工作者谈到衔接职前和在职培训的挑战,并对数学培训表示担忧。Krishnamurthi 反对将问题归结为单一原因:教师准备、积极性、留任以及学生不断变化的处境都很重要。
跨学科计算
Krishnamurthi 讨论教师共同培训、融合教学与独立计算机科学课程的关系,以及大学阶段的知识迁移经验。最后他区分了计算机模型与物理现实。
Yaron Minsky 问,如果有更大的自主权,是否应该将计算作为独立学科教授,而非融入其他科目。Krishnamurthi 提出了一个更务实、也更有限的目标:让多个学科的教师一起培训,使学生从多个视角接触相关概念。
他认为,一所学校派两名教师参加培训会有很大不同。只有一名教师时,身边没有同事可以讨论技术问题或课堂问题;第二名教师则带来了相互支持。跨学科参与还能进一步加强这种支持。
另一个问题是,随着计算越来越重要,融合教学是否只是临时方案。他说,不必在融合教学和独立计算机科学课程之间二选一。独立课程可以与其他科目中的计算教学并存,但学生也需要学会在计算机科学课堂之外应用计算思想。
他有兴趣将这一方法扩展到微积分和物理。学校物理通常强调有闭式解的问题,而许多物理系统需要通过微分方程和状态变化来描述。程序可以提供另一种探索这些模型的方式。
他指出,在 Bootstrap 中制作游戏的学生已经在处理随时间发生的离散变化,他希望这种联系能支持学生理解后续数学概念。他将其作为课程设计的一个方向,而不是声称单靠游戏就能教会微积分。
被问到 Bootstrap 给大学教育带来了什么启示时,他再次谈到知识迁移。学生可能分别学习编程、算法和大 O 分析,却难以运用复杂度知识改进程序。同样的问题不仅存在于学校科目之间,也存在于计算机科学内部。
一位听众指出,模拟可以用来改变物理问题中的参数。Krishnamurthi 赞同模拟可能有用,但提醒说计算机模型可能与物理世界不一致。这种差异使设计有效课程变得更加复杂。
例如,机器人接到指令旋转 90 度再转回来,可能无法准确面向原来的方向。解释这个偏差可能需要用到概率和测量。如果这些正是学习目标,这很有价值;如果不是,就可能引入不必要的复杂性。
被问到 Bootstrap 如何扩大规模时,他说一项主要需求是行政支持。小团队花了大量时间打电话、处理文书以及与教育部门协调。如果有更多资源承担这些工作,教育工作者和研究人员就能把精力集中在课程本身。
同频道的其他文章
1:34:29EN
1:34:36EN → 简体中文
15:48EN → 简体中文
1:20:57EN → 简体中文
1:12:58EN → 简体中文
58:47EN → 简体中文