我最近参加了一场有趣的小组讨论,主题是如何让爱荷华州的学生——特别是爱荷华州农村地区的学生——掌握计算机科学技能。

该州既有推进这项工作的意愿,也具备相应的资源,但面临的挑战之一是难以在学校配备合适的教师来教授技术课程。虽然这并非普遍存在的问题,但在爱荷华州的许多农村社区却确实如此。

我听到的一个难题是:许多学生虽有学习意愿,但课程体系尚属新生事物,且教师资源匮乏。既然互联网并不匮乏,何不利用这一优势,将少数掌握合适课程体系的教师,输送到那些既缺课程又缺教师的地方呢?

当时我未能提出的构想

聘请2-3名既技艺精湛又热衷教学的工程师。他们应是各自领域的顶尖人才,并渴望教导年轻人编程。支付给他们的薪酬应与他们在其他地方从事工程工作所能获得的市场薪资相当,而通过增加课程学员数量来弥补成本。

委托他们设计符合学生当前认知水平的课程,并自主选择教学工具。让工程师们负责课程设计和命题。

工程师们很可能会自主选择开源工具、标准化环境,甚至可能采用云端集成开发环境(IDE)。让他们设计出一种更接近高等教育新模式的课堂,学生可以身处任何地方,通过远程方式进入课堂。在全州范围内,根据技能水平而非年级来统一特定技能水平的教学时间。

上午9-10点 – 101上午10-11点 – 102上午11点至12点 – 103

随后按需增设104课程,直至达到代表学生已就业的课程编号。

这些课程时间仅为提供参考,并非绝对重要。它们当然不必按顺序进行。小组活动或一对一辅导时间可以单独安排。

课程体系可覆盖全州范围,参与课程所需的设施应已具备,仅需稍作调整。是的,每节课可能会有数百甚至数千名学生参与。这更像是一种Twitch直播体验,而非传统课堂,但这或许恰恰可行——因为如果课程被录制下来,学生可以随时回看并反复学习。请每天录制每一节课并提供回放。

既然是软件课程,学生也可以反复完成或测试任务,直到提交为止。只要通过测试的提交次数足够多,他们就能解锁下一级别的课程。

让一两个人在上午9点到10点的入门课上教全州学生编程,听起来似乎有些疯狂。但与让100多名教师先学习课程大纲、再进行考核相比,这种方式的成本可能低得多。编程技能的考核,或许更像Code Academy,而非爱荷华州基础技能测试。

UdacitySkillshareOutschool这样的公司,多年来一直在向我们展示如何实现这一点。

仅供参考

我上学时成绩很差。我也算不上是个好老师。但我观察力还算不错,我的观察是:如果无法让合适的老师亲临课堂,就把他们搬到屏幕上。 虽无法保证年轻人会专心听讲,但编程本身足够简单:如果他们的代码无法编译,或者课程不被系统接受,他们的成绩就绝非小事。他们会直接“挂科”,无法进入下一节课。在学习编程基础时,代码本身并不存在主观性。它要么能编译,要么不能;要么能运行,要么不能;要么出错,要么不出错。

只有当你试图设计系统却又不是工程师时,这才会显得复杂。

因材施教,建立激励机制

残酷的现实是,那些有动力学习的学生在 GitHub 上自学的速度,远比任何培训项目教给他们的都要快得多,但我们可以为他们提供一个起点,让他们接触到能够识别并培养其部分天赋的导师。

我建议聘请工程师来思考教学内容的基础原理以及受众是谁。如果工程师对此充满热情,就让他们根据受众调整自己的表达方式。

我一直在思考的一个更具颠覆性的问题是薪酬机制。为受聘教师设计基于十年计划的奖金方案,将极大地改变长期参与者的构成及其收入潜力。一个构想是:根据毕业生创造的经济影响(考量其产生的税收贡献)来确定教师的报酬。通过根据学生带来的经济影响来补偿工程师教师,使教育体系的回报率与银行体系一样丰厚。 这类似于“股权回报率”,但收益分配更为广泛。

过去一年,我儿子开始跟随德克萨斯州和加利福尼亚州的老师学习在线艺术课程,这让我对这种教学模式所能产生的广泛影响有了全新的认识。