高中应该如何教授计算机科学?

2020-06-28 19:50:19

随着新十年的开始,根据大多数人的说法,美国公立高中的CS教育似乎做得很好。参观教室,你会发现学生们正在使用机器人传感器,在Scratch上编写游戏和动画,与Arduino微控制器交互,构建网站,以及使用MIT App Inventor构建应用程序。像CSTA(计算机科学教师协会)和CSforAll这样的团体,它们的使命是支持和扩大高质量、严格和人口统计上公平的中学计算机科学教育,它们自豪地宣布,比以往任何时候都更多的学生,特别是年轻女性,选修了AP计算机科学1,并将这一增长归功于新的AP CS原理课程,例如,最近关于年轻女性学习计算机科学的参与和机会的好消息。

然而,看看这些欢庆和自吹自擂的言论,你会发现,尽管当代中学教育相当善于激发学生最初的兴趣,但在超过几周或几个月的时间里,它在维持这种参与方面的成功要少得多,坦率地说,在以下方面一直是无效的:(A)对大多数学生来说是可衡量的学习;(B)增加了参加第二门计算机科学课程(无论是在高中还是大学)的学生数量;以及(C)为学生学习计算机科学大学做好了充分的准备。

与上面提到的CSTA博客上描绘的积极图景形成鲜明对比的是,Girls Who Code首席执行官雷希玛·索贾尼(Reshma Saujani)指出,三分之二的拥有计算机科学专业的州报告称,女孩的参与没有增加。[28]在一篇题为“不要依赖可爱的应用程序和游戏来教授编程”的评论文章中,SummerTech创始人兼首席执行官史蒂文·芬克将这种情况描述如下[5]。

今天,K-12编码教育课程通常包括教育娱乐:一些品牌的机器人设计、游戏设计和应用程序设计计划,打包成吸引人的、供学生娱乐的体验…。

.在许多学校,很少有老师能教编程。因此,在不知道从哪里开始课程的情况下,他们求助于所谓的专家:向他们销售产品以满足新的编码或STEM要求的公司。需要说明的是,这并不是懒惰的教学或管理。这是一种知识匮乏,可能会将学校--进而将学生--引向错误的方向。不幸的是,拖放并不是编码,在你学会编程之前,千万不要想着去接触机器人技术。

2002年,我在纽约州立大学佩奇学院的校园里创办了一个名为SummerTech的编程夏令营。我承认,在最初的几年里,我们使用的是教育娱乐程序。孩子们玩得很开心。然而,对于他们中的大多数人来说,这并不是他们真正的动机;学习才是真正的动机,我们并没有感觉到我们取得了太大的进步。他们想成为现实生活中的程序员,但他们并没有朝着这个方向前进。

考虑一下图1中的半开玩笑的实习公告,一家公司愿意在没有基本编程能力证明的情况下聘用学生,这是牵强的。然而,这则广告确实准确地反映了最常见的高中课程的典型结果:探索计算机科学(ECS)和AP计算机科学原理(AP CSP),这两门课程的基本前提都是编程只是CS领域的众多主题之一。直到十年前,高中计算机科学入门课还是编程教学的同义词。不再。新课程包括一系列CS主题-在许多情况下,数学或社会学主题(例如,计算创新的含义、互联网、数据分析),有些只与本科专业学习的CS核心主题有切线联系-它们都没有教授到任何深度,这就是为什么我称它们为调查课程。

中学计算机科学教育的这种新现状是如何确立的?碰巧的是,我任教的公立学校系统-洛杉矶联合学区(LAUSD)-是这种教育模式的起点。2004年,一群自称计算机科学公平联盟(CSEA)的教育工作者努力在两年内增加洛杉矶联合大学计算机科学A(Java)课程的绝对注册人数-令人印象深刻的是,总注册人数几乎增加了两倍,从225人增加到611人,女性、西班牙裔和非洲裔学生的参与人数分别增加了四倍、五倍和两倍。然而,这些新班级的学生在年终AP考试中以压倒性优势不及格。如果CSEA的教育者熟悉CS教育和文献,他们就会意识到他们遇到了新手程序员失败问题(NPFP),这是一个数十年来在CS1大学入门课程中学生失败和辍学的现象,但在中学水平大大加剧。相反,这些教育

[U]在这些增加的注册人数背后是一种紧张,即AP课程以编程为中心的重点和高级的大学水平的地位对大多数学生来说并不是一个容易接近的切入点。这项工作进行了三年,我们认识到有必要开设一门基础高中课程,向学生介绍计算机科学领域的主要概念,以及一门有潜力让洛杉矶学校的不同人群参与的课程。

CSEA正确地指出,大学水平的APCS-A课程对大多数高中生来说太高级了,需要一个入门先决条件。

然而,认为编程是导致课程无法进入的原因-而不是该特定课程的乏善可陈或教学效率低下的版本,或者准备不足的教师-的说法是毫无根据的猜测。此外,这种断言就像争辩西班牙语教学剥夺了学生学习西班牙语的机会一样荒谬,或者数学老师应该放弃代数,用普通数学取而代之。回过头来看,很难理解有多少学区支持这种荒谬的反编程思想,因为中学后的普遍共识是,编程一直是,并将继续是整个学科的核心技能[2]。

许多入门编程课程将可编程性作为核心活动和学习目标,这是有充分理由的,因为可编程性是(数字)计算机的定义特征。这一点在ACM/IEEE课程建议中也得到了响应,编程优先的模式在可预见的未来可能仍将占据主导地位。

第2.5节计算机科学可以让所有的学生参与修订后的2011版CSTA K-12计算机科学标准[25],类似地呼应了编程在CS教育中的中心地位。

从教学上讲,计算机编程与学习计算机科学的关系,就像演奏乐器与学习音乐或绘画与学习艺术的关系一样。在每种情况下,即使学生成年后不再继续编程、玩耍或绘画,即使是少量的实践经验也会极大地增加终身的欣赏和理解。虽然成为一名专业程序员、小提琴家或油画家需要大量的时间和才华,但我们仍然想让每个学生都感受到创造性的乐趣。[第5页]。

第2节的介绍性文章明确地将计算和计算机科学与编程混为一谈,将这两个术语互换使用,并谈到了编程激励和吸引学习者的能力。

各个年龄段的孩子都喜欢计算。当有机会的时候,年轻的学生就会享受编程带来的驾驭和魔力。年龄较大的学生被艺术、叙事、设计、编程和创造自己的虚拟世界带来的纯粹享受的结合所吸引。将计算机科学与其他兴趣相结合也提供了丰富的学习机会。例如,对音乐感兴趣的学生可以学习数字音乐和音频。这个领域融合了电子学、多种数学、音乐理论、计算机编程,并敏锐地倾听听起来优美、和谐或纯粹有趣的东西。[第2页]

然而,在同一份出版物中,4.2节的Strands阐述了一种截然相反的立场-这在CS教育中是前所未有的-揭示了受CSEA小组影响的反编程教育者面临的越来越大的挑战。

几乎从一开始,计算机科学就被认为只专注于编程的观念所阻碍。这种误解在K-12年级尤其有害,它经常导致课程范围极其有限,学生对此持负面看法。它还助长了其他不幸的看法,即计算机科学是一种孤独的追求,与世界其他地区脱节,与学生的兴趣和关切几乎没有相关性。[第9页]。

CSEA为未能学会如何编程的学生提出的补救措施--将重点从编程转变为强调CS的主要概念--不是顺理成章的:更少的编程指导到底有什么帮助?此外,没有给出任何理由来证明为什么这样的课程可能是一种改进,它可能如何与未来的研究相结合,或者它可能如何提供一些其他切实的好处。最后,如何确定这些所谓的主要介绍性概念这一关键问题甚至没有得到解决,这让这项任务有了很大的空间,可以随意决定这一问题。

然而,认为编程是导致课程无法进入的原因-而不是该特定课程的乏善可陈或教学效率低下的版本,或者准备不足的教师-的说法是毫无根据的猜测。

不幸的是,这个新酝酿的议程在接下来的十年里成功实现的是一个现在被广泛接受的神话的传播:编程从它在学科中的中心位置降级。这种虚构的意识形态促成了两个发展:(A)它方便地让中学教师摆脱了他们的责任,至少试图弥补他们压倒性的未能教会学生如何编程的问题;(B)它为这些教师--更重要的是他们的学区--提供了覆盖范围,用所谓的由简单的非编程材料组成的课程取代了教学,看起来在实现中学CS教育的公平方面正在取得进展。请注意,这样的发展是可能的,因为公众K-12的利益相关者,包括大多数CS的中级教师自己,对该领域的基础知识普遍缺乏了解。

就像一个看似自生自灭的阴谋论一样,认为编程只是众多平等的CS主题之一的歪曲观点包含了足够多的真理,听起来很合理。虽然编程确实是本科生CS课程中教授的众多主题之一-与算法和数据结构、操作系统、自动机理论、人工智能等一样-但这个账户策略性地忽略了一点,即编程提供了几乎在任何深度学习任何其他CS主题所需的概念基础和技能集,因此它在入门课程中扮演着至关重要的角色。对编程缺乏基本熟练的学生可以通过的唯一一门CS&34;课程必须进行严格简化,并剥离基本内容。

最后,为什么引用“让洛杉矶学校的多样化人群参与进来”这一短语令人费解,似乎纠正教育不平等的意图(A)足以弥补拟议中的调查课程缺乏任何合理的理由,(B)足以诋毁传统编程课程的目标,称其为无可救药的精英主义。然而,我的理解是,这个短语充其量是居高临下、居高临下,在最坏的情况下是偏执的,似乎经济上处于不利地位的少数族裔和城市环境中的第一代学生需要特殊对待,或者与郊区的非少数族裔学生相比,他们对大多数美国文化的适应、同化或熟悉程度较低,或者参与程度较低。这当然不是我在这种环境下教授计算机课程14年来所发现的;相反,我的学生在这方面与其他美国人没有什么不同--比如我的第一代祖父母。如果CSEA实验中教授的APCS-A Java课程的特定版本是一个兴趣杀手,那么所有的学生都会发现这是一个问题,无论他们是什么种族。

为了强调这一点,自2013年以来,我一直在教授这一人群的高一新生2一门由UCOP批准的原创情景化Pre-APCS课程-这是一门计算机编程课程,使用模型和模拟来探索来自不同学科的现实世界中的跨课程问题[23]。本课程使用Processing,这是一种带有内置图形层的简化Java方言,其IDE允许学生在第一天进行图形编程。

CSEA项目实施两年后,CSEA有缺陷的分析在加州大学洛杉矶分校(UCLA)的探索计算机科学(ECS)课程中取得了成果,该小组的几名成员继续撰写调查课程,然后在洛杉矶联合大学进行宣传。如今,这门课程在全美广泛授课--包括纽约市和芝加哥等为大量少数族裔人口服务的其他六个最大的表现不佳的城市学区--据估计,注册人数达数万人。一个更大的国家教育工作者团体开发了后来成为APCSP的一门更高级的调查课程,但它与ECS有着相同的错误基础哲学,也是在大约同一时间段开始的,但在近十年后全面推出。

教一门测量学课程有什么害处?认为表面上接触简化的非编程主题-即使它们包括有限的短节目报道-稍后将使学生能够超越NPFP,神奇地获得编程能力,就像辩称看法国电影、吃巴黎美食和学习几个旅游短语就足以让学生为二年级的法语课程做好准备。相反,这些课程只是推迟了这些学生中的绝大多数人在以后参加CS课程时会遇到的困难,CS课程将无一例外地要求他们熟练掌握基本的编程概念和技能。

此外,编程不仅是CS学习的核心,也是获得经济机会的看门人技能,无论是对于攻读CS大学专业还是对于高薪计算工作来说都是如此。在美国,65%的城市公立学校学生就读于高度贫困(40%)或中等贫困(25%)学校[11]。据“编程女孩”称,计算机工作是美国经济中增长最快的工作之一。这些工作的薪酬是美国平均工资的两倍多。在接下来的几年里,它们将成为国家经济增长和流动性的关键驱动力。

相反,这些(调查)课程只是推迟了这些学生中的绝大多数人在以后参加CS课程时会遇到的困难,CS课程将无一例外地要求他们熟练掌握基本的编程概念和技能。

这不仅仅是一个话题-严格的大学前编程教学在获得这些机会方面有着深远的积极影响。纵向研究证实,有两个项目为学生攻读CS大学专业提供了充分的准备和动力:

年轻女性是编写代码的女孩的校友,她们完成了CS相关领域的专业,是全国比率的15-16倍[7];3和。

在APCS-A(Java)考试(CSEA实验的主题课程)得分为2或更高的学生选择CS大学专业的比率为16-27%[17,19]。

负面推论也是正确的。不向就读于中到高度贫困学校的学生提供编程指导会产生有害的后果,使所有人-包括那些倾向于学习CS的学生-都无法获得极大地促进他们成为大学CS专业成功的教学准备,以及随之而来的计算机职业可以提供的经济机会。

总部设在加州大学洛杉矶分校的ECS小组很久以前就决定不进行类似的纵向研究来验证其进程,提供了以下理由[9]。

通过引入计算机科学教育来扰乱传统的中学课程,可能会诱使改革者证明……。学生们将来更有可能选择报名参加计算机科学课程。对于任何一个高中班级来说,这些都是令人难以置信的高标准,如果不是不可能的话,而且变量混淆的可能性很高,使得最终很难得出任何结论。此外,这些类型的措施淡化了计算机科学作为21世纪学生必备知识的重要性。作为一个计算机科学教育工作者的社区,我们必须让高中阶段的计算机科学教育成为一项基本的学习权利,而不是未来目标的垫脚石。

如上所述,虽然断言不可能证明未来的结果,但这并没有阻止“编程女孩”或大学理事会表现出强有力的正相关性。尽管ECS被误导地吹捧为以研究为基础的高中入门水平的计算机科学课程,但ECS的网页“ECS背后的研究”只列出了马戈利斯2008年出版的一本书,内容是关于洛杉矶大学的APCS-A课程,ECS本应解决的问题。十多年过去了,仍然没有任何证据表明ECS可能会缓解这个问题。

如前所述,推动整个ECS事业的困境是2004-06年CSEA的努力,尽管年轻女性和传统上代表不足的少数族裔学生参加APCS-A课程的人数增加,但导致大学理事会标准化评估的实际学生学习严重失败。ECS小组复制了这项实验的前半部分,实现了更公平的注册。但它已经放弃了任何核实学生甚至已经学习了淡化内容的努力,完全取消了问责。显而易见的问题是,这怎么能被认为是一种进步呢?另一点:尽管该小组坚持认为其课程包含必备的CS主题,但在我试图教授这门课程并指出课程中的不足之处的那一年,或者当其他人抱怨单元对学生来说太难时,该小组干脆丢弃了这些材料,随意地将其替换,往往是只包含Tenu的课程。

..