创客教育、STEM 教育、 STEAM 教育、编程教育、计算机科学教育,这些名词在国内习惯用法似乎彼此混淆,本文就是来探讨澄清这些主题的差异、与你应关心的重点在哪里。

前阵子国内有人写道美国约在 2011 之後才有 STEM 教育,怎麽可能?!! 应该是用词不精确。所谓 STEM 是 Science-Technology-Engineering-Mathematic. 的简称,而 STEAM 增加的 A 是 Arts,增加 Arts 的确是比较新的思维,但这个成分目前不具主导性,以 STEM 正确定义来说,STEM 教育绝不是新的东西,从五十年代国际太空竞赛就驱动美国拚理工教育,所以新的重点在哪里?

2011 年之后的 STEM 教育新内涵

2011 之後由美国带头的新主张大致有两块,一是所谓的创客教育 (Maker Education) 说法兴起,目的是为了销售适用於学校的低阶 3D 打印机 (这样说并未否定打印机的教育价值)。3D 打印机搭配像 Raspberry Pi 、Arduino 这样的低价硬件,以及,开放授权、群众募资的新典範,降低了创新创业的门槛,鼓励了更多人动手创造原型 (Prototype),形成创新的正向循环,也连带影响教育现场。创客教育只是 STEM 教育中的一个新兴子领域,但不能代表整个 STEM 教育,而且目前在国内的创客教育仅适用於养成极客 (Geek)。

另一新主张是人人都该学习编程 (Programming,Coding) 的说法,甚至美国总统与知名女星都为此说法发声,这几年下来让学习编程快变成陈腔滥调了,事实上,此主张倒有其根据,根据美国劳工统计局预估,2020 年美国将约有 140 万个计算机科学 (Computer Science,CS) 领域的职缺,但是只有约 40 万个计算机科学本科毕业生,而 STEM 领域的新职缺有三分之二是计算机科学相关领域 (含资料科学),却只有 7.5% 的 STEM 本科毕业生主修计算机科学,软件开发人员的供需缺口令人忧心。而过去十几年美国在软件上的创新领先全球,前瞻的业界人士相当重视此问题,所以大声疾呼起来,白宫也采取了相关呼籲与行动 (参考资讯)。

來自 Code.org

简言之,STEM 教育的新需求缺口主要在计算机科学领域人才,记得 Marc Andreessen 名言Software is eating the world 这句话? 这是信息时代趋势使然,从网页、App、资料科学到云端、大数据、物联网、人工智能,程序无所不在,这不仅是美国的现象而已,然而全球大多数学校的信息教育课却还停留在教导学生如何使用 Word 文件或 PowerPoint 简报。其实编程教育运动在许多国家都存在,从 Skype 发源地国家爱沙尼亚开始,到英国、美国,越来越多国家政府将计算机科学教育放入学校课程。编程教育顾名思义是学习计算机程式语言,因为编程教育运动多由软件工程专业人员开始推动 (例如: 当义工在课後时间教小孩),所以多以学习编程开始,或搭配简单硬件实作创客教育,但是计算机科学教育的意义比较广,接下来谈谈政府从教育的全面高度如何考量。

美国政府对计算机科学教育的定位

美国在国家层级的行动是以国家科学委员会 (National Science Foundation, NSF) 为首,从 2009 年开始,逐步建立在中小学实施计算机科学教育的基础,最主要是赞助课程的开发与对教师的培训,前者支持了两门课程的开发 — AP Computer Science Principles (AP CSP) 与 Exploring Computer Science (ECS),後者推动了像 CS 10K Project,要培训一万名能够上岗教授计算机科学的教师。白宫并与 The College Board、Code.org 等组织合作,在 2013 年提出 Computer Science is for everyone!,在 2016 年新提出 Computer Science for All 的倡议,并规划了 41 亿美金的经费支持。

在各州自治的层级,各州都有来自公部门与民间的行动,例如: 2015 年九月,纽约市长 Bill de Blasio 宣布,将砸 8,100 万美金,务求计算机科学教育须在十年之内普及到全市所有公立学校;芝加哥则决定在 2018 年以前,将修习至少一年的计算机科学课列为高中毕业门槛。作为全世界科技产业最蓬勃旺盛的地方,旧金山将从幼稚园到中学提供编程教育,并强制八年级学生必修。

所谓编程教育只是学习程式语言而已,是见树不见林的高度,但是美国白宫对计算机科学教育的目标是要见树又见林,在见林的高度涵盖这领域之基础通识 (Fundamental Concepts) 与完整概念 (Big Ideas),在见树的层面要学习掌握编程的基本逻辑。这样的教育不仅是为培养编程工程师而设置,其目的是为全部学生建立信息时代的必要信息素养 (Literacy),了解计算机科学对人类生活与社会产生的影响,以及未来的可能潜力,引起更多的学生对进入计算机科学领域的专业产生兴趣,包括提升女性与弱势族群参与比例。根据研究,在高等教育之前曾经接受过计算机科学教育的学生在将来进入该领域的比例增加为八倍。(College Board 研究报告)

即使对非主修计算机科学的学生,也要破除计算机运作的神祕感,在需要之时知道如何驾驭它来解决问题。随着人工智能、机器人等最新技术的大规模运用,全球进入到了“智能时代”,各国产业结构都面临着深度调整的压力,科技影响深入社会与生活诸多层面,不只创新型人才的培养至关重要,更需要普及全民的计算机科学教育,以建立在信息时代生存必要的能力素养。

白宫与相关组织认为每个 21 世纪的学生都应该要学习演算法、网路如何运作、如何建立应用程序、如何分析大数据、以及计算机如何影响社会。就像他们学习消化系统、光合作用或电力从何而来,并不是要成为科学家的学生才学,而是一种基础教育。计算机科学教育也是必要的基础教育,不是职业教育。教育系统的脚步常常跟不上科技推动时代进步的脚步,但是对家长与教师的访调结果也显示,一般认为现在这种计算机科学素养的重要仅次於读与写的素养。(Google 调查报告)

对计算机科学的定义,最广泛接受的定义来自 Tucker 教授等人: “计算机科学是研究计算机与演算法,包括其原理、硬件、软件设计、应用程序、以及其对社会的影响”。

“Computer science is the study of computers and algorithmic processes, including their principles, their hardware and software designs, their applications, and their impact on society.” (Tucker, 2004 ACM/CSTA Model Curriculum for K–12 Computer Science.)

计算机教育应该学什么?

所以,计算机科学教育到底该学甚麽呢?以我们白话说 : 教育目标是能驾驭计算机科技,更专业的说法 — 运算思维 (Computational Thinking) — 是何种能力? 2010 年 Jan Cuny 与 Larry Snyder 提出: “运算思维是能将问题与解决过程转成计算机语言与程序逻辑,以利用计算机软硬件来达成任务”。

“Computational Thinking is the thought processes involved in formulating problems and their solutions so that the solutions are represented in a form that can be effectively carried out by an information-processing agent.”

由 Association for Computing Machinery(ACM)、Code.org、Computer Science Teachers Association (CSTA) 等民间组织与州教育局代表、大型学区代表 (学校教师)、以及大学学者共同合作订定了 K–12 Computer Science Framework。这些学者来自包括了麻省理工学院、芝加哥大学、伊利诺大学、加州大学、哈佛大学、德州大学、杜克大学、乔治亚理工学院、宾州大学、康乃尔大学等等,并获得来自领导企业的支持,包括 Apple、Google、Mocrosoft、Amazon、Accenture 等等。该学习框架标準是作为课程设计与教师培训的根据,从幼稚园到高中毕业,定义具有计算机素养 (Literacy) 的学生在每个阶段应有的行为表现、思考方式与发展进程。

简要来说,在计算机素养中,编程能力与演算法只是其中一小部分,学生还应该了解网际网络运作原理与安全性问题、计算机软硬件系统运作原理、资料科学 (数据收集/储存/分析/建模/呈现)、与计算机对社会之影响 (人际沟通/隐私/道德/法律/工作)。而成功应用计算机科学解决问题不仅需要知识,还需技能,这包括创建能力、沟通能力、合作能力、抽象推理能力等等,对软性技能的强调要求是整合在该学习框架中的。同时该框架也对照了计算机教育与数学、科学、工程、语文教育的交集之处。

來自 K12CS.org

一般常看到的创客教育或 STEM 教育经常从有形的工具出发来设计,而容易流於片段狭隘技术的训练,不是全面素养的养成 (参考文章)。例如: 3D 打印机是 3D 建模的实践,一般中小学校买得起的低阶 3D 打印机水平,很难做高阶的创意发挥 (列印速度也是瓶颈),重点不是打印机本身,而是藉由它可以带入以上提到的相关素养养成。另外,很多创客教育牵涉硬件的动手实验,需要有电子学的基础知识才能活用发挥 (例如电阻、电容、二极体运作原理),孩子未具备基础知识只是按表操课,不知其所以然,不可能进行逻辑推理,遇到问题也无法做解决 (Trouble-Shooting),活动完了到底学到甚麽?

这里并不是说不要创客教育,而是要根据适切的学习框架为中心来设计,而非以特定编程语言或硬件为中心来设计,把经费花在高昂的硬件上,不如花在好的师资与课程设计上,没有 3D 打印机不会阻碍学习计算机科学,但没有好的课程与师资却万万不能。引用此文章 (创客教育:补了短板才能跑): “创客教育“初出茅庐”不成系统,其问题集中表现为四点:

  • 一是校园创客教育缺乏理论体系,多以活动和大赛培训为主,任务不明确;
  • 二是教学方法不具体,创客教育缺乏规范的教学大纲;
  • 三是教材教具品种类型匮乏,学生能使用的较少;
  • 四是学校没有专门的师资力量,多以信息技术老师为主,缺乏专业技能人才。” (即使市面上有提供创客教育的私人机构,也无从评定其教学品质。)

学习过程比结果表象重要,如何学比学甚麽更重要,无人机或机器人都是手段而已。评估课程优劣,先问学习活动设计、目标、师资、以及如何评量学习成果。

作为大学先修课的计算机课程

如前述,美国国家科学基金会采取行动之一就是推动两个新课程。The College Board 主办大学先修课程 (AP),全美国高中都开设其 AP 课程,它在多年準备後於去年推出了新课程 AP Computer Science Principles (AP CSP),美国数百所大学承认该学分,所以影响相当直接。

其课程框架订出了七大学习主轴: 创造力、抽象化、资料科学、演算法、编程、互联网、科技的影响。从而向下发展出:

  • 23 个 核心概念 (Enduring Understandings)
  • 42 个 学习目标 (Learning Objectives)
  • > 100 个 基本知识项目 (Essential Knowledge Items)

由美国国家科学基金会赞助,Trinity College、College of St. Scholastica、Computer Science Teachers Association (CSTA) 与麻省理工学院 (MIT) 密切合作共同开发的 AP CSP 课程,已经在全美约 40 州的几百所高中实施,其内容具有应用程序教学 (编程) 和计算机科学原理课程 (非编程)。前者教授如何逐步构建应用程序,跟随在后的是创意专题,这些专题提供了挑战性问题,鼓励学生自己尝试;非编程内容则涵盖了前述计算机科学学习框架。其课程设计重点如下:

  • 从 MOOC 翻转学习 + 课堂上分组讨论;
  • 要求学生建立学习履历,收集包括探索 (Explore) 与创建 (Create) 的产出;
  • 高度锻鍊写作表达能力,须对探索主题做论述;
  • 项目式学习 (PBL),学生必须以编程知识创建对社区有用的移动应用 (Mobile App),体现其创造力、问题解决设计思维、团队合作与沟通、专案管理能力等软实力;
  • 此课程基於 MIT App Inventor 让那些非计算机科学专业的学生也能创造出自己的应用软件作品,把学生从消费者转变为创造者。这里的主要主张是项目式学习,建立对社区有用的移动应用,学生可能可以建立甚麽应用呢?
  • Trinity College 学生创建一个可以使用手机量测树木或建築物高度的应用;
  • Trinity College 学生为海地居民创建追踪大宗商品价格的应用;
  • 阿拉巴马高中学生创建了追踪研究野山猪行为的应用;
  • MIT 学生为发展中国家的糖尿病患建立用手机量测血糖的应用;
  • Winchester 高中创建了各种应用,包括解决学校停车问题、纾解压力、时间管理、帮助学习记忆、小遊戏。(新闻)
  • 其他高中生創作: 让民众举报可疑犯罪行为的应用、自动计算食物卡洛里与热量管理、帮助校车找出最短路径、协助高中生计画与管理申请大学之过程……等等,这里列举不完。

读者是否发现了,这里需要的问题解决能力,不仅仅是编程逻辑,还需要先有问问题的能力,研究真实世界里相关运作、变数与使用者行为才能设计出成功的解决方案。过程需要许多沟通、团队协作、试错修正、跨领域知识与资讯、甚至如何行销推广才能达到项目目标,加上创意!! 这种学习并不局限适用於关在实验室里的极客 (Geek),且要求更高阶的能力。

来自 MIT 的 App Inventor 是个进可攻退可守的强大开源工具,可视化编程 (Block) 创作介面类似 Scratch (同样来自 MIT),可让非编程人员建立应用 (甚至已有商业服务),也可成为进入文本编程的跳板,本身又有开源社区支持。许多人以为学习文本编程比可视化编程好,其实不然,首先,要选择哪个语言就是个问题,再者,初学者容易陷於细微枝节而迷失掌握程序结构、与了解整个应用系统的运作,例如: 如何衔接移动装置上的感测器与硬件、资料如何存取、如何利用程序接口(Application Programming Interface, API) 与其他功能服务整合。

学习计算机科学是为了改变世界

If you learn about computer science, you have the ability to change the world. — Art Lopez, AP Computer Science Principles Teacher

这就是美国教师的态度。

在美国人印象里,STEM 原本就是中国人的强项,事实统计数字也是如此,无论是在职场上的工程师大军、或是考试成绩表现、或以全球取得 STEM 学位的人数或者人口占比来看,中国明显领先美国。但是,就像马云说的,多数中国人就仅是非常会解题 (这是亚洲人一般现象),但想从”中国製造”进步成”中国创造”,想让计算机对社会产生更有价值的影响,需要的不只是会解题的技术而已。

即使美国人不如中国人会考试,却充满自信心与改变世界 (Make a Difference) 的企图心与软实力,从小积极参与社区服务养成关心社区的公民素养,社会高度强调创造力与多元开放性思考。这或许就是美国充满创新创意、保有竞争力的原因。所谓素养教育涵盖从高到低的三个层次分别是 A (Attitude,态度)、S (Skill,技能)、K (Knowledge,知识)。在这个时代知识上网搜寻就有,甚至人工智能都能编程了,编程技术本身不是最重要,其实美国人认为编程人员是未来的新蓝领阶级而已。教育真正的目的是在学习过程中培养态度 (学科兴趣、企图心、坚持、关怀社会) 与技能 (沟通、表达、合作、创造力、解决问题、自学能力),而要达到此目标,师资才是关键中的关键。

是应试教育还是素养教育?

计算机科学教育的成功要素为何? 如果没有对学习本质审慎思考,热门的编程或创客教育最後将成为另一个奥数 — 只是狭隘技术的训练与应试教育而已。在今年年初印发的《国家教育事业发展“十三五”规划》中提出,要改革创新驱动教育发展,推动合作探究式学习,倡导任务驱动学习,提高学生分析解决问题的能力。推进中学生科技创新后备人才培养计划与全国青少年高校科学营等活动,积极试点探索大学先修课程。政策的确订出了标竿,或许这是一个新的改变契机。

正确的计算机科学教育是準备好学生面对未来的现代素养教育,而编程教育或创客教育都只是完整图像的部分实践,传递知识内容是最低阶的学习,师资品质、学习活动设计、社区实践、评量方式将决定一个课程是应试教育还是素养教育。

本文来自投稿,作者Jessie Chuang (WeChat: JessieChuang87),美国教育科技顾问公司 Classroom Aid Inc. 的联合创办人,xAPI 中文实践社群 的主持人,Visca Analytics 的指导顾问。她曾为教育科技业者提供以下主题之顾问: 教育科技市场分析与产品設計、教育产业策略合作建议、自适应学习系统与人工智能家教、OER、行动学习设计、学习标準、数据可视化、xAPI 导入规划、学习分析、数据驱动的学习设计。职涯历经高科技业、企管顾问业、教育业,擅长连结不同领域的概念作突破思考。拥有 20 多项美中台专利。