计算机教育正在发生变化。在今年的CRA雪鸟大会上,有一个全体会议和三个分组会议专门讨论CS教育和招生。在其中一个分组讨论中,Tracy Camp指出,计算机科学课程的大部分增长来自于非计算机科学专业的学生,他们对计算机教育的目标和需求与计算机科学专业的学生不同。一个2016年1月,美国总统奥巴马宣布了全民计算机教育计划,目标是让所有学生都能接受计算机教育。b
去年,美国国会通过了2015年STEM教育法案,正式将计算机科学纳入STEM(科学、技术、工程和数学)。联邦政府为增加STEM的参与度提供激励措施,如为STEM学生提供奖学金,并为STEM教师提供培训。宣布CS成为STEM的一部分是使计算教育像数学或科学教育一样可用的重要一步。
声明只是第一步。数学和科学课在今天的学校很普遍。计算机教育的普及需要认识到计算机科学教育与STEM教育在许多重要方面是不同的。我们必须学会处理这些分歧。
学生进入高等教育水平的数学或科学课程,拥有多年的知识和经验。非正式地,许多学生和他们的父母谈论科学问题(“为什么天空是蓝色的?”),思考他们生活中的数字(“税是多少?”),参观科学博物馆,看关于数学和科学的媒体。学生生活在一个生活、化学和物理行为都由生物学、化学和物理学解释的世界里。他们形成了关于世界如何运转的想法,其中一些是错误的(比如简单的拉马克进化论)。学生在最小的年级就开始正式学习数学和科学。数学和科学课程可以帮助回答他们的问题,并提高一个善于思考的孩子对世界的理论。
虽然计算在发达国家无处不在,而手机和其他手持计算设备在发展中国家也越来越普遍,但很少有学生有机会透过这些设备来思考有关计算的问题。也许孩子们会问:“为什么我的浏览器这么慢?”计算机科学解释的概念对孩子们来说大多是看不见的,比如数字表示、算法和网络。如果他们没有在他们的世界中看到计算,就很难思考和发展关于它的问题。我们的博物馆和媒体报道比STEM的其他领域要少。很少有学生在进入中学或大专计算机科学课程之前接受过任何计算机方面的正规教育。
这种差异意味着教师很难设定期望值。有些学生确实有来上课的经历;大多数没有。学生什么时候需要辅导?我们正处于一个计算机教育贫富差距很大的过渡阶段。
在孩子们的日常生活中,计算的隐形也有积极的一面。数学和科学专业的学生也会从日常生活中产生对世界的误解。学生们不正确的科学理论是错误的,但大部分是有效的。世界不是平的,但它看起来是这样的,你可以在生命的大部分时间里相信世界是平的。另一方面,学生只有在计算机科学课程中才会发展出不正确的计算机科学理论,而且主要是因为我们的教学方式。如果我们改变我们的教学方式,我们可以减少误解。
我们做数学和科学教育已经很长时间了。我们很清楚学生们从很小的时候就可以在科学和数学方面做些什么,以及他们发展新概念和技能的速度有多快。教育工作者称之为学习进程。
由于计算机教育比科学和数学教育更年轻,我们没有学习进度。计算机科学教育者的目标大多是培养未来的专业程序员,但当我们谈到教每个人的时候,目标就变了。不是每个生物学入门的学生都会成为生物学家,也不是每个物理入门的学生都会成为物理学家。我们需要确定受过教育的公民需要知道哪些计算方面的知识。然后我们可以计划如何以及以什么顺序教授这些片段。
如果一年级的本科生没有计算机经验,我们能指望他们在一个学期的计算机课上学到什么呢?关于计算机科学,我们能教任何一个8岁或12岁的孩子什么呢?成功地向有认知障碍的学生、盲人或数学准备不足的学生教授计算机有哪些挑战?
在20世纪80年代初,我们第一次意识到,我们常常高估了计算机科学的初学生的能力。5麦克拉肯学习2表明计算机科学入门教师认为合理的问题并不是大多数入门学生能解决的。
诀窍之一就是学习如何衡量学生学到了什么。Briana Morrison和Lauren Margulieux也出现了4文本编程在认知上是复杂的。我们希望学生学习编程的概念和技能,但编程本身是一项复杂的活动,要求学生编程需要学生能够做到一切.Morrison和Margulieux展示了他们可以使用帕森斯问题来衡量学习编程的能力。3.《帕森斯难题》要求学生解决一个编程问题,然后在瓷砖或“冰箱贴”上给他们解决该问题的所有代码行。他们表明,他们可以梳理出学生对编程理解的差异,即使学生还不能成功地编写解决方案。能够在不要求学生掌握这些技能的情况下衡量这些技能的发展,对发展学习进程至关重要。
虽然计算机科学现在是美国STEM的一部分,但学生不能像接受数学和科学教育那样容易地接受计算机科学课程。
如果我们想在更年轻的孩子中教授计算机科学,我们必须弄清楚如何减少复杂性。我们希望学生能够构建他们认为激励和吸引人的程序,而不是首先掌握文本编程的所有技能。David Weintrop和Uri Wilensky已经证明,使用基于块的语言(如Scratch、Snap和Blockly)的学生比使用文本编程语言犯的错误要少得多。同样,他们的部分成就在于衡量。他们开发了一种交换性评估6这使得他们可以比较文本语言和基于块的编程语言中的相同概念。发展计算机科学的学习进度需要多种措施。
在接受了多年正规教育之后,学生们进入了本科数学和科学课程,因此他们对这些领域的含义有很好的理解。但在计算机科学领域就不是这样了。即使是计算机专业的本科生也不知道什么是计算机科学。迈克·休纳(Mike Hewner)的研究表明,即使是选择了计算机科学专业的本科生,也只是对这个领域知之甚少。1
谷歌和盖洛普(Gallup)合作进行的大规模调查显示,家长和校长认为计算机科学课程是关于如何使用个人电脑的。c调查显示,家长和校长高度重视计算机,并希望为他们的孩子提供更多的计算机教育。但家长和校长大多不明白这是什么。
学生们想要计算机科学,不管他们怎么想。他们中的许多人想要它是因为计算机科学知识的经济价值。他们不知道它是什么,但他们知道它可以让他们得到一份好工作,让他们在他们想要的工作上更有效率。
CS的情况不同于科学或数学。将你所在地区的编程训练营的数量与生物训练营或代数训练营的数量进行对比。虽然对计算机科学的需求大多是积极的,但它在计算机科学课上创造了一种奇怪的动态。学生们要求“真正的东西”(我们可能会把它理解为“对我的工作有帮助的东西”),即使他们不知道那是什么。例如,学生可能会抱怨学习基于块的语言或使用教学IDE,因为这不是“真实的”,即使他们不太清楚什么是“真实的”。
在许多国家和美国的州,你可以了解参加小学或中学阅读、数学或科学课程的学生人数。在美国,几乎没有任何一个州能告诉你他们计算机科学课程的学生人数,或者这些课程教的是什么。(在许多州,“计算机科学”和“计算应用”课程被认为是一样的。)因为计算机科学最近才被宣布为STEM的一部分,所以它没有像其他STEM学科一样受到跟踪。我们不确定今天美国提供了多少计算机教育,也不知道在哪里提供,这使得计划和增加计算机教育的机会变得困难。
我们相信(根据美国大学预修课程CS的数据和有跟踪记录的州的数据),如今美国只有不到30%的中学生有机会学习计算机科学课程,而只有不到10%的小学生有机会学习计算机科学课程。为了实现数学和科学教育课程的普及,我们需要大幅增加计算机科学课程和教师的数量。这是一个具有巨大影响的巨大变化。我们今天所拥有的可能并不能告诉我们明天的情况。现有计算机科学教师的准备、能力和偏好可能无法预测,当我们拥有10倍的教师人口时。我们必须发明全新的教师教育计划。
虽然计算机科学现在是美国STEM的一部分,但学生不能像接受数学和科学教育那样容易地接受计算机科学课程。许多国家正在加强计算机教育,所以情况将会改变。随着它的发展,我们将不得不对学生如何学习CS制定更准确的预期,提高我们在计算中衡量学习的能力,发展学习进度,并创建一个基础设施来发展教师和跟踪进步,因为我们达到了数学和科学教育的普及。
1.计算机科学领域的本科生概念。在第九届ACM国际计算机教育研究年会论文集(冷藏工人13)。ACM,纽约,2013,107114。
2.麦克拉肯等人。一项关于计算机科学一年级学生编程技能评估的多国、多机构研究。ACM SIGCSE公告33, 4(2001), 125140。
3.莫里森,b.b., Margulieux, l.e.,和Guzdial, M.学习计算问题解决中的子目标、上下文和工作示例。在第十一届国际计算机教育研究年会论文集(奥马哈,内布拉斯加州,2015),2129。
4.Morrison, b.b., Margulieux, l.e., Ericson, B和Guzdial, M.次级目标帮助学生解决帕森斯的问题。研讨会上发表的论文47人会议记录thACM计算机科学教育技术研讨会(孟菲斯,田纳西州。, 2016)。
5.学习编程=学习构造机制和解释。Commun。ACM 29(1986年9月),850858。
6.Weintrop, D.和Wilensky, U. 2015。使用交换评估来比较基于块和基于文本的程序中的概念理解。在第十一届国际计算机教育研究年会论文集(冷藏工人15)。ACM,纽约,纽约,2015,101110;DOI:http://dx.doi.org/10.1145/2787622.2787721
一个。http://cra.org/wp-content/uploads/2016/07/BoomCamp.pdf
b。https://www.whitehouse.gov/blog/2016/01/30/computer-science-all
c。https://services.google.com/fh/files/misc/images-of-computer-science-report.pdf
数字图书馆是由计算机协会出版的。版权所有©2016 ACM, Inc.
没有发现记录