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

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

我听到的一个挑战是,许多学生虽然有学习的意愿,但课程体系尚属新生事物,且教师资源匮乏。互联网资源并不匮乏,因此我们可以利用这一点,将拥有合适课程体系的少数教师,引入那些既缺乏课程体系又缺乏教师的地区。

当时我没来得及提出的构想

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

委托他们设计符合学生当前认知水平的课程,并选择教学工具。让工程师们自主设计课程并制定考试题目。

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

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

随后依次增加104课程,直至代表学生已就业的课程编号,或根据实际需要增设。

这些课程时间仅为提供一个大致的参考,实际并不那么重要。它们当然不必按顺序安排。小组活动时间或一对一辅导时间可以单独安排。

课程大纲可采用全州统一标准,参与课程所需的设施在稍作调整后应已具备。 是的,每节课可能会有数百甚至数千名学生参加。这更像是一种Twitch直播体验,而非传统的课堂教学,但这或许完全没问题——因为如果课程被录制下来,学生可以随时回看并反复学习。请每天录制每一节课并提供回放。

由于这是软件课程,学生还可以反复完成或测试任务,直到提交为止。只要提交的通过率达到要求,他们就能解锁下一级别的课程。

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

UdacitySkillshareOutschool 等公司多年来一直在向我们展示如何做到这一点。

仅供参考

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

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

因材施教,协调激励机制

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

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

还有一个我一直在思考的、更具启发性的问题是薪酬机制。为受聘教师设计基于十年计划的奖金方案,可能会极大地改变长期参与者的数量及其收入潜力。 一个构想是,根据毕业生所创造的经济影响(以产生的税收为衡量标准)来确定教师的报酬。将教育体系设计得像银行业一样富有回报——根据学生带来的经济影响来奖励教师工程师。这类似于股本回报率,但收益分配更为广泛。

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