计算机编程课程应该把重点放在项目上而不是“逻辑谜题”上吗?

2020-11-02 10:44:28

米切尔·雷斯尼克著,“美国医学会的娜塔莉·拉斯克通讯”,2020年11月,第63卷第11期,第120-127页,10.1145/3375546评论我们正处于一个非常机遇的时刻。十年前,我们的研究小组在“通讯”杂志上写了一篇文章,标题是“Scratch:为所有人编程”。15当时,我们的副标题是“雄心勃勃”。现在,它正在成为现实。学校系统和政策制定者正在接受这样一种想法,即编码可以而且应该为每个人服务。从智利到英国,从南非到日本,许多国家都在向所有学生介绍编码。

我们也正处于一个非同寻常的挑战时刻。在许多地方,引入编码的方式破坏了它的潜力和前景。如果我们不仔细考虑引入编码的教育策略和教学方法,就会有很大的失望和反弹的风险。

在过去的十年里,我们已经看到,将编码经验传播给世界各地数百万儿童是可能的。但我们也看到,传播教育价值观和方法要困难得多-这是下一个十年的重大挑战。

新型编程接口(特别是基于块的编码1)、支持计算机科学教育的非营利性倡议(如Code)的激增,促进了编码在教育中的扩展。此外,还有越来越多的可编程设备(如Micro:BIT、20个机器人工具包、9个可编程玩具和23个可编程玩具)。

我们自己在Scratch方面的工作(图1)既促进了这一更广泛的趋势,也从中受益。当我们在2002年开始开发Scratch编程语言和在线社区时,我们的目标不仅仅是帮助孩子们学习编程。我们有更广泛的教育使命。我们希望为所有来自不同背景的孩子提供学习创造性思维、系统推理和协作工作的机会。在当今瞬息万变的世界里,这些技能对每个人来说都是必不可少的,而不仅仅是那些计划成为工程师和计算机专业人士的人。这些同样的技能在生活的方方面面都很有价值,不仅是为了在工作场所取得成功,也是为了个人的成就感和公民参与。13个。

Scratch的使用在全球范围内迅速增长:在过去的一年里,超过2000万年轻人创建了Scratch项目(图2)。Scratch最初主要用于家庭和非正式学习环境,11但在学校的使用已扩大到所有Scratch活动的一半以上。在世界各地,年轻人使用划痕的方式多种多样。例如:

几个国家的中学生创建了临时项目,展示了他们对技术创新将如何在2050年改变社会的愿景;

数以千计的年轻人创作了反对种族主义和支持“黑人生命也是命”运动的速写动画;

墨西哥的一位小学教师将Scratch整合到一个关于蝴蝶的科学单元中,学生们根据对真实蝴蝶的观察,制作蝴蝶生命周期的动画和蝴蝶运动的机器人模型;

来自世界各地的学生创建了一个名为#ProtectOurEarth的工作室,在那里他们分享了数百个突出与气候变化相关的问题的项目,其中包括一个引导北极熊穿越融化的北极冰盖的游戏。

在创建和共享这些项目的过程中,学生们不仅仅是在学习编程,他们在编码是为了学习。他们不仅在学习重要的数学和计算概念,还在加深对其他学科思想的理解,并培养广泛的解决问题、设计、协作和沟通的技能。7、16。

不幸的是,在许多教育环境中,编码的引入受到更多的限制和约束,因此学生没有机会体验编码的全部概念和表达能力。以下是一些挑战:

学校经常通过教给学生与计算相关的词语的定义来向他们介绍计算机科学,而没有为他们提供在有意义的活动背景下学习和应用计算概念和实践的机会。例如,一些学区通过教授小学生算法这个词的定义以及硬件和软件之间的区别来向他们介绍计算机,而不是通过计算机活动让学生主动学习,比如编写一个动画故事或给机器人编程跳舞。

通常,通过告诉所有学生复制完全相同的代码来引入编码,而不是鼓励他们进行实验、原型和调试。在Scratch网站上,我们曾经看到30个相同的项目同时分享。起初我们认为这种重复的项目是网站的问题,但后来我们注意到每个项目都有不同的用户名,我们意识到这些项目都来自同一个教室,在那里30名学生遵循相同的说明,用相同的图像和相同的代码制作相同的项目。尽管本课堂练习可能向学生介绍了编码的基本机制,但它并没有提供创造性思维和解决问题的机会。

通常情况下,学校只分配很短的时间来学习编程。在这有限的时间内,学生们可能会学习一些基本的术语和概念,但他们没有机会将这些想法用于有意义的方式,因此不太可能将这些想法应用于其他背景和其他学科。在编码被分配更多时间的情况下,课程通常会促使教师和学生从一种编码工具转移到另一种编码工具,而不是提供足够的时间来学习足够好的工具来设计项目、解决问题和交流想法。一项大规模的倡议每周向四年级的学生介绍Scratch一小时,然后突然转向一种不同的编码语言。在老师和学生表达了失望之后,课程进行了修改。

研究人员和教育工作者经常采用自动化评估工具,这些工具只通过分析代码来评估学生编程项目,而不考虑项目目标、内容、设计、界面、可用性或文档。例如,许多人正在使用在线临时评估工具,该工具基于这样的假设,即具有更多类型的编程块的代码表明更高级的计算思维,从而给学生计算思维评分。这种形式的评估没有考虑到学生的计划要做什么,它实现了学生的目标有多好,代码是否按预期工作,人们是否能够与之互动,或者学生的思维是如何在一系列项目中发展起来的。我们在其他研究和评估方法中看到了更大的潜力,例如那些记录和分析教师促进实践和学生随时间变化的学习轨迹的方法。6、8

在我们的研究中,我们已经看到,当学生有机会创建自己的项目和表达自己的想法时,编码对他们来说是如何变得最有动力和最有意义的。

为了实现编码计划的承诺和潜力,需要在世界各地的教育系统中如何将编码付诸实践方面做出重大改变。

在大多数教育编码计划中,人们都认识到目标应该比教授特定的编程技术更广泛。许多教育活动都围绕着计算思维的发展展开,即帮助学生学习计算机科学的概念和策略,这些概念和策略可用于解决各种学科和背景下的问题。22。

计算思维当然是一个有价值的目标,但许多倡议过于狭隘地关注于断章取义地教授概念,或者向学生呈现只有一个正确答案的问题。在我们的研究中,我们已经看到,当学生有机会创建自己的项目和表达自己的想法时,编码对他们来说是如何变得最有动力和最有意义的。18通过这些经历,孩子们发展成为计算创造者和计算思考者。我们用“计算流畅性”这个短语来描述这种利用计算技术有效和创造性地交流思想的能力。

我们关于计算流利性的想法是从专注于让学生学习写作的教育倡议和研究的悠久传统中得到启发和启发的。尽管大多数学生长大后不会成为职业记者或小说家,但有一个强烈的共识,那就是所有的学生都应该学习写作。通过写作,学生发展了组织、表达和分享思想的能力,他们开始以不同的方式看待自己。巴西教育家和活动家保罗·弗莱雷(Paulo Freire)领导的扫盲运动不仅是为了帮助人们找到工作,也是为了帮助人们了解到,他们可以创造和重塑自己。

我们在编码方面看到了同样的潜力。大多数学生不会追求专业程序员或计算机科学家的职业生涯,但培养流利的编码能力对每个人都很有价值。当学生用代码创建自己的故事、游戏和动画时,他们开始将自己视为创作者,并对自己用新技术创造事物和表达自己的能力培养信心和自豪感。

一些计算思维的倡导者淡化了编码的价值。他们争辩说,还有许多其他方法可以发展计算思维技能。但我们发现,对于学生来说,编码可以是一种特别有效的方式,让他们参与到计算概念、实践和观点中来。2当学生编写自己的项目代码时,他们在有意义的上下文中遇到概念和解决问题的策略,因此知识嵌入到丰富的联想网络中。因此,学生能够更好地在新的情况下获取和应用知识。

Scratch编程语言和在线社区是专门为支持计算流利性的发展而设计的。当然,培养学生的流利性需要时间。Scratch在线社区中的许多项目都非常简单或结构不佳,是由刚刚开始探索编码可能性的学生创建的。但是,当学生有必要的时间和支持来发展他们的流利性时,我们看到他们如何成长为计算思想者和计算创建者。

作为一个例子,我们想分享一位名叫塔伦的刮刮社区成员的故事,她第一次被介绍到她在南非的学校是在她10岁的时候。几年后,在一堂科学课上,塔伦使用Scratch编写了一个水循环的交互式模拟程序,其中包括两个滑块,用于控制海洋和陆地上的蒸发率。总而言之,Taryn为该项目创建了十几个不同的变量(图3)。

通过这个项目的工作,Taryn获得了帮助其他人学习变量的灵感。她决定创建一个名为Ya Gotta Variables的教程项目,并将其分享到Scratch在线社区(图4)。正如她在项目随附的注释中所解释的那样:我喜欢变量!它们在编程中非常有用,如果没有它们,我的大部分项目都做不成。然而,它们有点难以理解--这就是本教程可以帮助你的地方!塔林还鼓励其他人去尝试:享受玩变量和布尔值的乐趣!你试验的越多(失败了!),你就会理解得越多,也就越容易使用变量让你的项目变得很棒!";

Taryn通过一系列名为Colour Divide的项目在Scratch社区中广为人知,该项目以一个幻想的反乌托邦世界为背景,人们在那里受到一项决定他们在社会中地位的测试(图5)。Taryn与她在在线社区中认识的其他五名学生在最初的Colour Divide项目上进行了合作。对塔林来说,这个项目是探索重要社会问题的一种方式。当我们采访塔伦时,她解释说:在我的成长过程中,我确实看到了种族隔离给我的国家和人民留下的伤疤。我真的在通过故事中不同的人物来探索这一点。

Taryn描述了协作在色差发展中所起的重要作用。我设置了它,这样其他Scratcher就可以贡献面孔、声音、风景和音乐。感觉不像是我在做的东西,更像是我们一起做的东西,她说。我一直被社区中的支持、协作和分享所震撼。这是让我每天重新开始的主要原因之一。

通过她在Scratch上的工作,Taryn改变了她学习的方式。她解释说,我变得更有信心尝试新事物和表达自己--也更愿意冒险和犯错。在其他语言中,你几乎是太害怕了,不敢搞错,不敢输入错误的东西,也不会被评判。但是刮刮它就像玩耍一样,就像把东西扔在一起一样,如果它们不起作用,那也没什么。能够犯错是培养创造性自信的一部分。

对我们来说,塔林的工作是学生如何通过他们的临时项目工作,发展成为计算创造者和计算思考者的一个例子。我们已经看到Scratch社区中的许多其他学生经历了类似的学习轨迹。但是,许多学生没有得到他们需要的机会或支持,使他们精通计算,并发展成为创造性的思考者。我们如何帮助更多的学生体验计算流利的乐趣和可能性?

在我们的研究小组中,我们制定了支持创造性学习和计算流利性的四个指导原则。我们称这些原则为创造性学习的四个P:项目、激情、同伴和游戏。14.。

这些原则提供了一个框架来指导技术、活动、课程、社区和空间的设计,以支持编码和学习。在这里,我们通过Scratch社区的例子来探索创造性学习的四个P。

项目。为学生提供从事有意义的项目(不仅仅是拼图或解决问题的活动)的机会,这样他们就可以体验到将最初的想法转化为可以与他人分享的创作的过程。

对我们来说,以面向项目的方式向年轻人介绍编码似乎是很自然的,这样他们就可以在学习编码的同时学会创造性地表达自己。但许多关于编码的介绍采取了一种非常不同的方法,向学生展示了一系列逻辑谜题,在这些谜题中,他们需要对动画角色进行编程,使其从一个位置移动到另一个位置。当学生们成功地解决了一个难题后,他们就可以继续下一个难题了。毫无疑问,学生们在解决这些难题时学到了一些有用的计算概念。但是,通过解决逻辑难题来学习编码有点像通过解决纵横填字游戏来学习写作。这不是变得真正流利的方法。就像学生通过写自己的故事(而不仅仅是玩文字游戏)来提高语言的流利性一样,学生通过创建项目(而不仅仅是解决谜题)来提高编码的流利性。

越来越多的学校正在转向基于项目的编码方法。例如,在一所学校,四年级学生创建了关于“夏洛特的网络”这本书的临时项目,而不是写传统的读书报告。在其中一个项目中,一名学生编程让一头猪在场景中移动。为了让猪看得更远,学生对它进行了编程,使其变得更小,应用透视的艺术概念,并使用数学计算来调整猪的大小。该项目跨越了课程,融合了语言、艺术、数学和计算机科学的想法。在其他学校,学生们在许多不同的学科领域设计了项目-在历史课上创造关于古埃及的游戏,在生物学中建立DNA复制的模型,以及在语言艺术中创造跆拳道诗的动画。

对于教师来说,通过拼图来介绍编码可能会更容易,这些游戏可以告诉学生他们是否正确地解决了问题,或者他们在哪里出错了。管理基于项目的课堂可能更具挑战性,因为不同的学生会创建不同类型的项目。然而,正是这个机会将想法从最初的构思发展为可分享的项目,使年轻人能够发展成为创造性的思考者和解决问题的人。14.。

激情。允许学生从事与其兴趣相关的项目。他们将工作更长时间、更努力,并在此过程中学到更多东西。

我们设计Scratch来支持广泛的项目和兴趣-从艺术、音乐和动画,到游戏、故事和模拟。我们还确保学生可以通过引入他们自己的图像和声音来定制和个性化他们的项目。

为什么这很重要?不同的孩子有不同的兴趣,来自不同的文化,用不同的方式思考。支持通向Scratch的不同途径是很重要的,以确保所有来自各种背景的儿童都能从事与他们相关且对他们有意义的Scratch项目。在Scratch网站上,你可以看到各种各样的项目,从互动时事通讯到舞蹈教程,从历史装扮游戏到音乐节拍机,应有尽有。这表明Scratch正在支持具有广泛不同兴趣和激情的学生。同样,在评估临时课程或工作坊时,我们使用项目的多样性作为成功的衡量标准-这表明孩子们正在从事他们关心的项目。

雪莉·特克尔(Sherry Turkle)和西摩·帕普特(Seymour Papert)在20世纪90年代发表的一篇有影响力的论文中强调,鼓励多样化的思维和编程风格对于促进公平和发展更具包容性的计算机文化至关重要。21他们写道:

计算机是一种富有表现力的媒介,不同的人可以用他们自己的方式来制作…。编程方法的多样性表明,即使是最基本的计算元素的平等获取,也需要接受多种认识和思维方式的有效性,一种认识论上的多元论。

我们经常用“多路多风格”这句话来提到这个想法。一些学生制定了详细的计划,另一些学生则探索和修修补补。一些学生喜欢讲故事,另一些学生喜欢制作图案。一些学生对动物感到兴奋,另一些学生对运动感到兴奋。为了确保编码面向所有人,支持这些不同的入口点和方法非常重要。

同龄人。鼓励协作和共享,并帮助学生学会在他人工作的基础上再接再厉。

当我们的研究小组在2007年推出Scratch编程语言时,我们同时推出了Scratch在线社区。我们希望支持学习的社会方面,为学生提供相互学习的机会。在线社区已经成长为一个充满活力的空间,年轻人在这里相互协作,分享100多万个项目和帖子。

.