如何教授计算思维

计算的未来

计算思维将成为未来的一个决定性特征——这是今天教给孩子们的一件非常重要的事情。关于如何教孩子传统的数学思维,总是有很多讨论(和关注)。但展望未来,与教授计算思维的重要性相比,这就相形见绌了。是的,在日常生活和许多职业中都需要一些传统的数学思维。但是计算思维在任何地方都是需要的。做好它将是未来几乎所有职业成功的关键。

医生、律师、教师、农民等等。所有这些职业的未来都将充满计算思维。无论是基于传感器的医学、计算合同、教育分析还是计算农业,成功都将取决于能否做好计算思维。

我注意到一个有趣的趋势。选择任何领域X,从考古学到动物学。要么现在有一个“计算X”,要么很快就会有。它被广泛认为是该领域的未来。

计算思维WordCloud

试一试Wolfram Open Cloud上的这篇博文中的示例计算

那么,我们该如何让今天的孩子为未来做好准备呢?我自己已经从事计算思维近40年了——为它建造技术,在很多地方应用它,研究它的基础科学,并试图理解它的原理。到这里,我想我对计算思维有了一个清晰的认识。所以现在的问题是如何教育孩子们。我很兴奋地说,我想我现在有了一个很好的答案——基于我花了30年时间为其他目的构建的东西:Wolfram语言.有办法教力学低级编程很长一段时间,但有什么新的和重要的是,我们的所有知识和自动化构建到Wolfram语言我们现在终于,我们有技术能够直接教广泛的计算思维,甚至是孩子。

我个人非常致力于教授计算思维的目标,因为我相信它对我们的未来非常重要。我正在尽我所能利用我们的技术来支持这项工作。我们有Wolfram | Alpha已经免费在网上好几年了。但是现在我们也推出了我们的Wolfram开放云这样任何地方的任何人都可以用计算机开始学习计算思维沃尔弗拉姆编程实验室,使用Wolfram语言.但这仅仅是开始——正如我将在这里讨论的,我认为现在有许多令人兴奋的新事物是可能的。

什么是计算思维?

但首先,让我们来定义一下什么是“计算思维”。在我看来,它的核心是用足够清晰、足够系统的方式构建事物,这样人们就可以告诉计算机如何去做这些事情。数学思维是关于将事物公式化,这样人们就可以用数学方法处理它们,如果可能的话。计算思维是一个更大、更广泛的故事,因为有更多的事情可以通过计算来处理。

但是一个人如何“告诉电脑”任何事情呢?一个人必须有一种语言。最棒的是,今天有了Wolfram语言,我们就可以和电脑直接交流我们的想法。Wolfram语言是基于知识的:它了解世界上的事物,比如城市、物种、歌曲或我们拍摄的照片,而且它知道如何用它们进行计算。一旦我们有了计算公式的想法,关键是语言让我们表达它,然后——感谢30年的技术发展——让我们尽可能自动地执行这个想法。

Wolfram语言是一种编程语言。所以当你用它写的时候,你是在编程。但这是一个新型程序设计.在编程中,一个人尽可能直接地表达计算思维,而不是一步一步地告诉计算机它应该做什么低级运算。这是一种编程,由人类(包括儿童)提供想法,然后由计算机和Wolfram语言处理这些想法如何被执行的细节。

编程——以及编程教育——传统上都是告诉低水平的计算机该做什么。但多亏了我们在Wolfram语言中构建的所有技术,人们不再需要这样做了。人们可以在更高的层次上表达事物,因此可以专注于计算思维,而不仅仅是编程。

是的,世界上确实需要一些能够用c++、Java或javascript等语言编写低级程序的软件工程师,并且能够处理循环和声明的细节。但这个数字与需要能够进行计算思考的人数相比是微不足道的。

Wolfram语言——尤其是以Mathematica-已被广泛应用于技术研究和开发在世界各地超过一个25年无数重要的发明和发现都是用它完成的。这些年来,我们也在逐步完善我最初的设想,拥有一个综合语言在其中每一个可能的域的知识是内置的,自动的。而令人兴奋的是,现在我们实际上已经跨越这样做广阔的地区——足以支持所有类型的计算思维,例如在学校传统教学的所有领域。

七年前我们发布了Wolfram | Alpha——孩子们(和其他许多人)总是用它来回答问题。Wolfram|Alpha接受简单的英语输入,然后使用来自Wolfram语言的复杂计算来自动生成结果页面。我认为Wolfram|Alpha是一个壮观的插图——对孩子和其他人来说——什么是可能的Wolfram语言中基于知识的计算。但它只能快速“开车”问题,这些问题可以以相当少的单词表达,或者可能有点符号。

那么更复杂的问题呢?简单的英语并不适用于这些。为了得到足够精确的结果,人们最终会得到一些非常复杂和难以理解的法律术语。但好消息是,还有另一种选择:Wolfram语言——它是专门为使表达复杂的东西变得容易而构建的,而且总是精确和明确的。

它不需要任何技能使用Wolfram|Alpha。但是,如果一个人想进一步利用计算带来的好处,他就必须更多地学习如何制定和构建自己想要的东西。或者,换句话说,人们需要学习计算思维。最棒的是,Wolfram语言最终提供了一种可以实现这一目标的语言——因为,通过我们投入的所有工作,它已经成功地超越了单纯的编程,并尽可能直接地支持计算思维。

进入Wolfram语言

那么当孩子们第一次接触到Wolfram语言是什么感觉呢?作为我努力理解如何教授计算思维的一部分,在过去几年里,我花了相当多的时间与孩子们一起使用Wolfram语言。有时是一大群人,有时是一小群人——有时我会注意到一个孩子在我参加的成人活动中,最后我拿出电脑,花时间和孩子在一起,而不是和成年人在一起。我曾接触过高中年龄的孩子,也接触过初中(11-14岁)的孩子。

Elizabeth Wolfram编写代码

如果是一个孩子,或者是一个小组,我总是坚持让孩子们打字。通常我会从大家都知道的东西开始。让计算机计算2+2。他们输入,他们可以看到,是的,电脑给出了他们知道的结果:

2 + 2 = 4

然后他们经常会尝试其他一些基本的算术。Wolfram语言允许他们只输入输入,并立即看到输出,这一点非常重要。没有额外的步骤。

在他们完成一些基本的算术之后,我通常会建议他们尝试一些生成更多数字的方法:

123年^ 12日

他们通常会问这样做是否可行,或者这么长的数字是否会让电脑崩溃。我鼓励他们尝试其他的例子,他们经常会做计算,立即生成一页又一页的数字。几十年来,我们一直都能做这些大数计算,但孩子们似乎仍然对它们非常兴奋。我认为关键是它让他们看到,是的,电脑真的可以计算非平凡的东西。(想想计算所有这些数字要花多长时间……)

他们已经做了一些基本的算术运算后,是时候让他们去尝试一些其他的功能。最常用的功能,我最终开始就是范围

范围[10]

范围是好的,因为它很容易让孩子看到它做什么,他们很快就会觉得,是的,他们可以告诉电脑做什么,它就会做。范围也很好,因为它很容易用它来产生令人满意的大东西。我经常建议他们试试范围[1000].他们会问范围[10000]是也没关系。我告诉他们要尝试...

范围[10000]

我想我和每一个孩子或一群孩子做的事情都不一样。但是很常见的下一步就是看看如何去做可视化列表我们已经取得了:

ListPlot[范围[10]]

如果孩子恰好是为数学,我可能会尝试下一个决策表格质数

表[[n], {n, 20}]

然后策划他们:

ListPlot[表[[n], {n, 20}]]

对于那些可能认为自己不喜欢数学或一般技术的孩子,我可能会做一些颜色

{红色,绿色,蓝色}

也许我们会尝试混合红色和蓝色制成紫色:

混合({红、蓝})

也许我们可以拿起当前图像从相机:

CurrentImage []

和我们找到所有的“边”在它:

EdgeDetect []

我们也可以在颜色上做得更复杂一点:

表[Hue[n], {n, 0,1, 1/20}]

也许我们会换个方向,得到一个常用词表我也想试试另一种语言如果有人知道一个):

词库[]

如果孩子们对语言艺术感兴趣,我们可以试着创造一些随机的单词

randomword [10]

我们可能会看到如何使用StringTake取每个单词的首字母:

StringTake[词库[],1]

然后使用WordCloud制作单词云并查看首字母的相对频率:

WordCloud [StringTake[词库[],1]]

有些孩子可能会问:“那头两个字母呢?”然后我们就会去尝试(是的,这涉及到一些计算思维高达):

WordCloud [StringTake [WordList[],到[2]]]

我们可能会讨论一下有多少单词是以“un-”开头的。也许我们应该研究一下其中的一些词。我们可以继续看翻译的单词:

WordTranslation(“hello”,所有)
实际上,按照我刚才讲的内容,做几个小时很容易。但让我们看一些其他的例子。关于Wolfram语言的一个重要的事情是它知道大量真实世界的数据.我通常会通过一系列步骤来构建这个,但这里有一个例子拼贴画国旗欧洲国家,每一面国旗的大小由该国目前的人口决定:

CountryData["Europe", "FlagImage"]]" src="//www.fiberbeat.com/data/uploads/2016/09/19.png" alt="ImageCollage[CountryData["Europe", "Population"] -> CountryData["Europe", "FlagImage"]]" width="381" height="284">

因为我们碰巧谈到了颜色,所以很有意思的是看看它在哪里颜色空间国旗上写着(例如,显然没有多少“粉红国家”):

ChromaticityPlot

一个重要的主题是,Wolfram语言不仅允许抽象的计算,而且允许基于真实世界知识的计算。Wolfram语言覆盖了广泛的领域,从传统的stem类领域到艺术、历史、音乐、体育、文学、地理等等。孩子们经常喜欢和地图

我们可以从现在开始(在这里).或者来自某个地标。比如这里有一张地图100英里半径圆盘埃菲尔铁塔周围:

地理[GeoDisk[Entity[

以下是“10的幂”序列图像:

表[geography [GeoDisk[Entity[

那么历史呢?Wolfram语言如何与之关联呢?事实上,它充满了历史知识.关于国家(绘制生长和罗马帝国的衰落)或电影(比较电影海报随着时间的推移),或者,例如,单词.比如这里有一个在过去300年里书中“马”和“车”用法的比较:

Datelistplot [WordFrequencyData [{“马”,“汽车”},“TimeSeries”]]

用同样的方法来命名国家、发明或其他东西;总有很多历史可以讨论。

有很多不同的方向要走。这是另一个,图形.让我们制作一个3 d球体

Graphics3D[[]]范围

对孩子们来说,制作这样的3D作品并四处移动总是很有趣的。如果他们是在更复杂的一端,我们可能会建立这样的3D图像从100任意大小的球随机的颜色

Graphics3D[Table[Style[Sphere[RandomReal[10,3]], RandomColor[], 100]]

各个年龄段的孩子都喜欢做互动的东西.这里有一个简单的“可调独眼巨人眼”是一个可以很容易地建立在阶段:

操作[图形[{风格(磁盘[}{0,0,1],黄色),风格(磁盘({0},r),黑色)}),{r, 0,1}]

我有时做的另一件事是让Wolfram语言发出声音。这是一个随机序列音符

Sound[Table[SoundNote[RandomInteger[20], 0.1], {n, 20}]]

有很多方向可以去。对于刚出道的医生来说,有3 d解剖学-你可以找出骨头的几何形状,然后用3D打印出来。等等等等。

立体手

但是呢…

在我最近开始研究计算思维之前,我从来没有认真地尝试过和孩子们一起工作(尽管,是的,我自己有四个孩子)。所以我不知道会发生什么。和我交谈过的人似乎觉得这与我平时奋力推动技术发展的生活形成了鲜明的对比。他们不断地提出一些问题,他们认为这些问题可能会阻碍我想做的事情。第一,他们怀疑孩子们是否能够在Wolfram语言中输入原始代码;他们认为他们会被语法等等弄得很混乱。第二个问题是,他们认为孩子们没有动力用代码做任何事情,除非它能创造出一个他们可以玩的游戏。

和孩子一起工作的一个好处是,如果你给他们机会,他们会很快告诉你什么对他们有用,什么没用。那么实际发生了什么呢?根据我的经验,人们提出的两个潜在问题最终都不是真正的问题。但这其中的原因很有趣,并不是我所期望的。

关于输入代码,需要意识到的一件事是,在今天的世界上,大多数中学年龄的孩子都很习惯输入,或者至少是输入文本。有时候,当他们开始输入代码时,他们首先必须查看[]键在哪里,甚至是+键在哪里。但他们在打字方面没有任何基本问题。他们也非常习惯于学习事物运作的精确规则(英语拼写中“i comes before e…”;数学运算的顺序;等等)。因此,学习一些规则,如“函数使用方括号”或“函数名称以大写字母开头”,并不是什么大问题。当然,在Wolfram语言中,没有任何东西像英语这样的自然语言中存在的所有这些不规则性。

当我看到孩子们输入代码时,我们提供的自动提示非常重要(括号是紫色的,直到它们匹配;如果在错误的地方,物体就会变红;所有功能都建议使用自动补全;等等)。但是底线是,尽管理论上成年人有顾虑,但实际的孩子似乎发现在Wolfram语言中输入语法正确的代码非常容易。事实上,我对很多孩子这么快就“学会了”感到惊讶。看了几个例子后,他们立即进行归纳。最棒的是,因为Wolfram语言是以一种非常一致的方式设计的,他们提出的概括实际上是有效的。作为一名语言设计师,看到这一点让我很感动。当然,对孩子们来说,很明显肯定会有这样或那样的事情发生,他们不会这么想了努力这样设计它。

孩子们可以输入Wolfram语言代码。但他们真的想这么做吗?许多孩子喜欢在电脑上玩游戏,而成年人通常认为他们也会对在电脑上创作感兴趣。但根据我的观察,事实并非如此。对于大多数孩子来说,关于Wolfram语言最重要的一点是,他们可以立即用它“做一些真正的事情”。他们可以输入任何他们想要的代码,并立即让计算机为他们做一些事情。他们可以创造图片、声音或文本。他们可以创作艺术。他们可以做科学研究。他们可以探索人类语言。 They can分析口袋妖怪(是的,Wolfram语言有广泛的口袋妖怪的数据).是的,如果他们真的想,他们可以制作游戏

根据我的经验,如果你在孩子们还没有看到Wolfram语言之前就问他们,他们在编程中会对什么感兴趣,他们通常会说游戏。但一旦他们看到了Wolfram语言的可行性,他们就会停止谈论游戏,转而想要做一些“真实”的事情。

螺母和螺栓

Wolfram语言已经发展到我认为它为孩子们学习计算思维提供了一种即时的令人信服的方式,这只是最近的事情(基本上花了30年的时间)。事实上,重要的不仅仅是原始语言及其包含的所有知识:还有环境。

第一点是Wolfram笔记本的概念我们发明了近30年前是儿童(和其他人)与语言互动的真正好方法。笔记本的想法是有一个交互式文件,可以自由混合代码,结果,图形,文本和其他一切。可以在笔记本电脑中建立计算,在文档中键入代码并在那里获取结果。结果可以是动态的 - 具有自动生成的用户界面。一个可以直接在笔记本中读取或写入解释或说明。抛光笔记本电脑的各个方面是几十年。但现在我们有一个非常高效和精彩的环境,可以工作和思考 - 并学习计算思维。

多年来,笔记本和Wolfram语言基本上只能作为桌面软件使用。但是现在,在一个巨大的软件工程努力之后,他们也可在云中使用直接在网络浏览器,或在移动设备上。这样就意味着任何孩子可以去到Web浏览器,马上开始交流使用Wolfram语言创建或编辑笔记本,并编写他们想要的任何代码。

需要一个大量的技术使之成为可能。建造它花费了我很大的时间。多年来,我们的技术取得了这么多伟大的前沿成就,我感到非常满意。现在我真的很兴奋地看到,用它来把计算思维传播给后代是可能的。

我们创建时我就做了决定Wolfram | Alpha让全世界都能在网上免费看到它。看到这么多人,尤其是孩子们,每天都在使用它,真是太棒了。所以几个月前,当技术准备就绪时,我也决定在我们的Wolfram开放云并建立它,让孩子们(和其他人)可以在那里学习计算思维。

Wolfram|Alpha设置,所以任何人都可以用简单的英语问它问题。结果证明,这是一种伟大的方式——除了其他方面——作为一种方式支持教育在很多领域。但是,如果一个人想为未来学习真正的计算思维,那么他就必须超越用简单的英语提问。这就是Wolfram语言的用武之地。

那么,开始使用Wolfram语言以及它所带来的计算思维的最佳方式是什么呢?对此可能有很多答案,这取决于不同孩子所拥有的环境和资源的细节。我个人认为,我在与孩子们直接打交道方面做得不错,比如在我们的Wolfram夏令营对于高中生来说,我看到过通过直接的个人指导取得非常好的成绩。

但拥有“自助”解决方案也很重要——我为此做过的一件事就是写一本书Wolfram语言的基本介绍.这是一本关于计算思维的书。它不假设你之前有任何编程知识,或者,例如,数学知识。但在这本书的过程中,它让人们可以例行地编写真正的程序,做他们感兴趣的事情。

这本书是免费在线.它也有练习,这些练习会在云里自动评分。我原本打算把这本书用在高中及以上。但发现有最终相当一批中学生(11岁),他们热情地对终端进行了研究,这本书也被证明是用于诸如研究生数学课程,在银行培训,教育专业的软件开发人员。

有一个基于我的书的(免费)在线课程很快就会发布,我知道有相当多的课程正在开发中,使用这本书来教授现代编程和计算思维。

但是,好的,当一个孩子走到他们的网络浏览器来学习计算思维和Wolfram语言,他们实际上可以去哪里?几个月前我们推出了沃尔弗拉姆编程实验室作为这个问题的答案。有一个版本Wolfram开放云这是免费的(甚至不需要登录,只要你不想保存您的工作)。

沃尔弗拉姆编程实验室有两个基本分支。第一个是集合探索.每个勘探是设定用来包含代码,你可以编辑和运行做一些有趣的笔记本电脑。你已经通过已经存在的代码走后,笔记本则建议如何走得更远,并在自己的探索。

通过探索,您可以体验一下Wolfram语言和计算思维。孩子们通常可以在一个小时内完成几个基本的。从某种意义上说,它们就像“沉浸式语言学习”:你从“流利的演讲者”可能写的代码开始,然后你与它互动。

沃尔弗拉姆编程实验室也提供了第二个分支:an我的书的互动版本,它让人们一步一步地进行,从非常简单的开始构建,并逐步创建越来越复杂的代码。

您可以使用沃尔弗拉姆编程实验室完全通过网络浏览器,在云端。但也有一个桌面版本,可以在任何标准的电脑上运行,让你获得真正快速的本地交互,如果你想做更大的计算。如果你有覆盆子π电脑,桌面版的沃尔弗拉姆编程实验室它与操作系统捆绑在一起,包括从连接到树莓派的传感器获取数据的特殊功能。

我想确认一下沃尔弗拉姆编程实验室适合任何地方的任何孩子,不管他们是否在一个能支持他们所做的教育环境中。据我们所知,这似乎很有效——尽管当孩子们有真正的人可以一起工作时,这确实有帮助。我们计划建立一个非正式的网络结构来支持这一点,在其他方面利用现有的,非常活跃的Wolfram社区.但是,我们也设置一些事情,从而沃尔弗拉姆编程实验室可以很容易地适应现有的、有组织的教育环境——不仅仅是通过使用Wolfram语言创建一些世界上最好的教育分析来分析学生的进步。

值得一提的是,我们整个Wolfram云基础设施的一大优点是,它允许任何人,无论是学生还是教师,直接在web上发布内容供全世界使用。而且沃尔弗拉姆编程实验室例如,作为探索的一部分,在web上部署一个应用程序是例行公事。

我们仍然处于了解实际部署的所有细微差别的早期阶段沃尔弗拉姆编程实验室在每一个可能的学习环境中,我们都在许多方面稳步前进。不久前,我碰巧和韩国一所学校的一些孩子交谈,问他们是否认为自己能够学习Wolfram语言。其中一个孩子回答说,她认为这看起来很容易,除了必须阅读所有函数名称中的英文。

这让我开始思考。结果是我们引入了多语言代码说明,它用一系列不同的语言注释代码。您仍然可以使用标准函数名键入Wolfram语言代码,但您会立即得到母语的解释。(顺便说一句,我的书也有多种语言版本。)

计算思维在哪里?

好的,我已经讲了一点关于教授计算思维的机制。但是计算思维在标准教育课程中又该如何定位呢?我认为答案很简单:无处不在!

有人可能会认为计算思维只与STEM教育有关。但这不是真的。计算思维是相关的在整个课程.社会研究。语言艺术。音乐。艺术。即使运动。人们试图让数学与所有这些领域相关。但是你不能仅仅用传统的基于手工计算的数学来实现这一点。但是计算和计算思维是完全不同的。在这些领域中的每一个领域,都有非常强大的——而且通常非常清晰的——事情可以用计算和计算思维来完成。 And the great thing is that it’s all accessible to kids. The Wolfram Language takes care of all the internal technicalities—so one can really focus on the pure computational thinking and understanding, without the mechanics getting in the way.

一种方法是重新定义人们对“数学”教育的想象——这是我们在基于计算机的数学倡议。但另一种方法是考虑将计算思维直接插入课程的其他领域。我注意到,在实践中,特别是在小学阶段,那些热衷于教授计算思维的老师可能有也可能没有明显的技术背景。就像现在这一代的孩子一样:你不必成为一个技术人员,也可以进行基于知识的编程和计算思维。

在过去,对于像c++和Java这样的低级计算机语言,你真的必须是一个坚定的、面向工程的人来教他们。但在Wolfram语言中,情况就完全不同了。是的,如果想学好这门语言,还有很多东西要学。但其中之一是学习一般的计算思维,而不是计算机系统的工程细节。

那么,计算思维应该如何融入学校课程呢?我经常听到的是,老师们已经很难在有限的时间内安排好他们应该教的所有内容。那么还能添加什么呢?好吧,这里有一件令人惊讶的事情,我才刚刚开始理解:添加计算思维实际上可以更容易地教很多东西,所以即使花在计算思维上的时间,总时间实际上可以减少,即使有更多的学习。

这是怎么回事?主要的一点是,计算思维提供了一个框架,使事情更透明和更容易理解。当你用计算的方式表达一些东西时,每个人都可以尝试并明确地看到它是如何工作的。学生可以从老师的评论中推断出任何隐藏的东西。

这是多年前的一个故事,当时Wolfram语言-以Mathematica-第一次被用来教微积分。微积分学生在理解函数的概念时遇到困难是很常见的。但教授们告诉我,他们开始注意到,当他们通过Mathematica学习微积分时,不知何故,没有一个学生最终对函数感到困惑。原因是他们通过计算思维学习函数,通过用Wolfram语言明确地和计算地看函数,而不是像标准微积分教学那样更间接和抽象地听函数。

特别是在过去的几十年里,几乎所有学科的教科书在解释事物时都有一种“拘谨”的趋势,所以最好的解释往往只能在半非法的概要出版物中找到。新利18官网客服但不知何故,就像数学世界维基百科在美国,一种更直接的信息呈现方式已经变得司空见惯,而且被今天的学生视为理所当然。在我看来,计算思维在各个领域的应用是这一趋势的一种戏剧性的延续:把只能被谈论的东西变成可以通过计算直接而明确地显示出来的东西。

你谈论一部莎士比亚的戏剧,并试图对其中的情节有一个大致的了解。用计算思维,你可以想象创造一个社交网络的剧本(谁“知道”谁通过在同一场景之中,等等)。你很快就会有一个很好的总结,这是发动地方在谈论的发挥和其主题的细微差别。

想象一下你在谈论不同的语系。好吧,你可以用一些词文字翻译把它们翻译成上百种语言。然后你可以做一个系统树图来展示这些词的形式是如何在不同的语言中聚集的,你可以发现印欧语系。

你可以谈论艺术风格-and拉起手被内置到Wolfram语言名画的图像。然后,你就可以开始使用颜色在不同的画,也许使得它是如何随着时间而变化,看是否一看就知道,当不同的风格进来一个情节比较。

你可以谈论不同国家的经济,你可以立即创建自己的信息图,与学生合作,看看如何最好地展示什么是重要的。你可以谈论历史,你可以用历史地图数据用沃尔夫勒姆语言来比较亚历山大大帝和凯撒大帝的征服。或者你可以询问美国总统的情况,列出他们政府的时间表,并用经济或文化指标进行比较。

假设你在教英语语法。当然,Wolfram语言可以自动地提供帮助图的句子.但是你也可以让学生们尝试他们自己的造句规则——这样他们就可以看到什么在语法上是正确的,什么是错误的。如何拼写?计算思维能帮上忙吗?我不确定。当然,把英语中所有的常用词都拿出来,然后开始尝试你可能想到的不同规则是很容易的。发现异常是很有趣的(“u”总是跟在“q”后面吗:在Wolfram语言中查找异常是很简单的)。

这是一个有趣的练习,拿不同学科的标准课程内容,并问“应用计算思维能帮助解决这个问题吗?”有时候一个人想到的第一件事可能只是个噱头。但我发现,如果有人真的问这个课程的重点是什么,最终会有一种方式,计算思维可以帮助,从基础。

随着时间的推移,将会有越来越多的伟大的例子。在过去,关于数学(非基于计算机的版本),它是相当令人失望的:只是没有那么多的例子,工作。确实,指数增长出现在很多地方,但当人们意识到微积分书上的例子在很多情况下都和18世纪的一样时,情况就不妙了。而使用标准编程,情况也好不到哪里去:斐波那契数列出现的地方只有那么多。但是对于基于知识的Wolfram语言编程,情况就完全不同了。因为这种语言可以立即连接到所有领域的相关数据和计算。

如果要教授计算思维,应该如何组织呢?例如,我们是否应该开设计算思维课程?在大学阶段,我认为计算思维101是个好主意。事实上,它可能是许多学生选修的最重要的一门课程。在高中阶段,我认为应该做什么并不明显,尽管我肯定不是这方面的专家,但我倾向于认为,将计算思维嵌入到不同课程的许多不同模块中会更好。

一个显而易见的问题是:让学生参与计算思维的启动成本是多少?我的感觉是,以我们现在拥有的技术,它是非常低的。对于Wolfram|Alpha,它是零。在Wolfram语言中,它非常接近于零。使用Wolfram语言中的自由形式代码,需要了解的内容很少,也许一次性教授会更好,有点像大学水平的“服务数学课程”的微型版本。

值得一提的是,计算思维在整个课程的适用性方面是相当独特的。每个人都希望在一堂课上学到的知识能应用到其他课上,但这种情况并不经常发生。我已经提到了传统数学的困难。写作方面的情况稍微好一些,人们至少希望学生把他们学到的东西用在写其他科目的文章上。但大多数领域都是在知识孤岛上教授的,一个领域学到的东西在其他领域甚至都没有被引用。然而,在计算思维中,有更多的交叉联系。莎翁戏剧中的社交网络与国际贸易网络或不同语言单词之间关系的图表所涉及的计算思想相同。经济表现的可视化技术与运动成绩的可视化技术是一样的。等等。

孩子们能做什么?

每天都有很多顶尖的科学家和技术人员使用Wolfram语言来做很多复杂的事情。但是,当然,最近最重要的事情是Wolfram语言已经达到了一个点,它也可以很容易地被孩子们使用。我说的可不是什么冲淡了的玩具版。我说的是最时髦的专业人士使用的同一种Wolfram语言。(是的,就像英语中有孩子们通常不会使用的模糊词一样,Wolfram语言中也有孩子们通常不会使用的模糊函数。)

是什么让这一切成为可能呢?它基本上是一层又一层的自动化,我们在过去的30年里把它构建到Wolfram语言中。我们的目标是尽可能地实现自动化——这样使用Wolfram语言的人,无论他们是成熟的专业人士还是中学生,都只需要提供概念和计算思维,然后这种语言就会接管并自动完成实际工作的细节。

在过去,孩子和专业人士必须使用不同的系统。但由于所有这些自动化,它们已经融合在一起了。这在其他领域也发生过。例如,在视频编辑。过去,业余爱好者使用的是简单的系统,专业人士使用的是复杂的系统——但现在,从孩子到世界上最昂贵电影的制作者,每个人都在使用同样的系统。

在计算思维和编程中实现这一点可能更困难——但我认为,这是过去30年对Wolfram语言的工作所取得的成果。

在许多标准课程中,学校里的孩子们只能做专业人士所能做的微不足道的事情。但说到计算思维,他们现在有了同样的工具——现在对他们来说,做同样专业级别的事情是现实的。

从某种意义上说,孩子们在学校里做的大部分事情都没有什么明显的影响力。孩子们花很多精力在数学、化学或其他任何问题上。如果孩子们写作文,他们必须清楚地写出每个单词。但是有了计算思维和Wolfram语言,情况就不同了。一旦一个孩子理解了如何计算公式,以及如何将其写进Wolfram语言,那么语言就会接手构建一个潜在的庞大而复杂的结果。

一个学生可能会对历史帝国的兴衰有一些想法,可能会想出如何用历史国家地理区域的时间序列来表达这个想法。一旦他们用Wolfram语言写下这个想法,语言就会接管,很快学生就会有详尽的表格和信息图表等等,然后他们可以从中得出各种各样的结论。

但是孩子们从Wolfram语言中学习到了什么呢?首先,他们学习计算思维。计算思维确实是一种新的思维方式。但它的特点和孩子们做的其他事情有某些相似之处。例如,就像数学一样,它迫使思维变得精确和清晰。但就像写作一样,它从根本上是关于交流思想的。和写作一样,这是一种基本的创造性活动。良好的Wolfram语言代码,就像良好的写作一样,是清晰和优雅的,并且易于阅读和理解。但与普通写作不同的是,人类并不是唯一的目标受众:它也是电脑的目标受众,让电脑告诉他们该自动做什么。

当学生在做数学、化学或其他科目的问题时,他们能够判断自己是否得到了正确答案的唯一方法是让老师告诉他们,或者让他们“在书的后面查找”。但是使用Wolfram语言代码就完全不同了。因为孩子们自己可以判断他们是否在正确的轨道上。代码应该是一个蜂窝状的数组。好,干的?

创建代码的整个过程与任何其他任何孩子通常都不同的过程。有配制代码,然后在那里调试它。调试是一个非常有趣的智力练习。在Wolfram语言中,它的机制比他们以前更容易 - 因为Wolfram语言是象征性的,因此可以始终自己运行任何代码片段,并分别研究。

但调试最终是关于理解和解决问题。这是生活中许多事情的一种非常纯粹的形式。但它真正的好处是即时反馈,特别是在Wolfram语言中。你改变了什么;有帮助吗?还是你必须潜入并想出别的办法?

调试的一部分就是让一段代码产生一些东西。但另一部分是理解它是否产生正确的东西。对莎士比亚戏剧来说,这真的是一个明智的社交网络吗?为什么会有那么多角色似乎与其他任何人都没有联系?让我们来理解一下我们是如何定义“连通性”的。这真的有意义吗?还有更好的定义吗?

这就是计算思维所涉及的东西。与其说是关于编程,不如说是关于应该编程什么;这是一个整体性的问题,就是如何将事物表述成计算形式。现在有了今天的Wolfram语言,我们就有了一个环境,可以将已经制定的内容转化为现实。

为首的孩子们

当我向孩子们展示计算思维和Wolfram语言时,我通常会试图弄清楚孩子们对什么感兴趣。他们喜欢艺术吗?还是科学?还是历史?还是游戏?还是别的什么?然后,这对我来说总是很有趣的,我会想出一个与他们的兴趣有关的例子。我们来运行它。它会产生一些结果,可能是一些图像或可视化。然后孩子们会看它,并根据他们已经知道的来思考它。 And then, almost always, they’ll ask question. “How does this extend to that?” “What about doing this instead?” And this is where things get really good. Because when the kids are asking their own questions, you can tell they’re getting seriously engaged; they’re really thinking about what’s going on.

学校里教的大多数科目都有些严格限制。可以提出问题,但它们更像是典型的“技术支持”:帮助我理解这个现有功能。他们不会说“我们来聊点新话题吧”。有几次我和孩子们一起参加了关于科学的“问我任何问题”的会议。这是一次有趣的经历。会有一个问题,是的,可以很容易地从大学水平的物理学中得到答案。另一个问题可能需要研究生水平的知识。然后,嗖的一声,就会出现一个显而易见的问题,我知道这个问题根本就没有答案,即使是最新的前沿研究也没有回答。或者可能是一个,是的,我知道答案,但只是因为就在上个月,我碰巧和最近发现这个问题的世界专家交谈。在我尝试这种“问我任何问题”的课程之前,我并没有真正意识到当孩子们问“自由放养”的问题时是多么困难。 But now I understand why unless one has teachers with broad research-level knowledge there’s little choice but to make traditional school subjects much more tightly constrained.

但是使用Wolfram语言作为工具,有一些新的东西是可能的。因为有了Wolfram语言,老师不需要知道问题的全部答案:他们只需要能够用计算的方式写出问题,这样Wolfram语言就可以计算出答案。是的,对于老师来说,用Wolfram语言写作是需要技巧的。但这真的很有趣,也很有教育意义——学生和老师一起得到问题的答案。

我经常做我所谓的“现场实验”。我选择了一些主题——或者是观众建议的,或者是我在开始之前想到的——然后我使用Wolfram语言实时地探索这个主题,看看我能从中发现什么。随着Wolfram语言的自动化能力和水平的提高,多年来它变得容易多了。我通常打开我们的Wolfram暑期学校通过现场实验.我会说,在一个小时左右的时间里,我们会建立一个笔记本,在那里我们发现了一些新的有趣的东西,它可以成为一篇学术论文或类似的东西的种子。这对我来说很伤脑筋。但在几乎所有情况下,它都非常有效。我认为这是一件很有教育意义的事情。因为大多数人都没有意识到,在一个小时内从零变成一个可以发表的发现,甚至是微弱的可能。但这正是现代Wolfram语言所能做到的。虽然我个人在计算思维和发现事物方面拥有一生的经验显然是有帮助的,但对于任何具有计算思维和Wolfram语言知识的人来说,做一个非常引人注目的现场实验是非常容易的。

当我还是个孩子的时候,我从来不喜欢课本上的练习。我总是认为,做很多人已经做过的事情并不是一件令人兴奋的事情。所以我总是试着去思考不同的问题去探索,去寻找那些我可能会发现以前没人见过的东西的地方。在现代,使用Wolfram语言,做以前从未做过的事情变得容易得多。不是每个孩子都有和我一样的动力结构。但对许多人来说,能够制作出真正属于自己的东西——而不仅仅是重复之前所做的东西——还有额外的满足感。在实践层面上,有了Wolfram云,很容易分享制作的东西,比如创建自己的活跃网站或应用程序,可以向同学、朋友或世界展示。

那么,孩子们在哪里可以有所发现呢?无处不在!即使是在像数学这样技术发达的领域,也有无穷无尽的数学实验可以做,在那里可以有所发现。在科学领域,还有一个额外的小障碍,因为人们通常要处理实际数据。当然,在Wolfram语言中有很多内置的数据。获得更多数据比以往任何时候都要容易。也许只是一个摄像头或麦克风,或者,更精密地说,一个通过连接传感器覆盆子πArduino,等等。

那么人文学科呢?这里还是需要数据。但是也有很多是内置在Wolfram语言中(著名艺术品的图像,著名书籍的文本,关于历史国家的信息,等等)。在当今世界,这变得非常容易在网上找到更多的数据并将其导入到Wolfram语言中。有时会涉及到一些数据管理(这本身很有趣也很有教育意义),但令人惊讶的是,在现代,在网上找到几个世纪前的晦涩文件变得如此容易。(是的,这是真正帮助我的事情之一学习历史的爱好.)

计算思维是真正适合于基于项目的学习的区域。每年的我们的暑期项目在美国,我想出了数百个孩子们可以接受的项目想法。在一些帮助下,孩子们自己想出了更多。对于我们的暑期项目,我们让孩子们自己做项目,但孩子们也很容易在这些项目上合作。我们通常有一个明确的项目终点:创建一个演示,或一个网页应用,并写一篇描述,也许是发布在Wolfram社区.(特别是与我们的示范Wolfram示范项目在美国,评论和发表文章的实际过程也往往具有教育意义。)

当然,即使某个项目“以前做过”,如果再做一次,情况通常也会有所不同。在最简单的层面上,编写代码是一个创造性的过程,不同的人会以不同的方式编写代码。如果有可视化或用户界面作为项目的一部分,每个人都可以创造性地发明新的方法来做这些。

但是,好吧,所有这些有创意的东西都很好。但在实践中,很多教育更多地是在生产线模式下进行的,大量的学生在某种意义上总是在做同样的事情。即使有了这个限制,计算思维和用Wolfram语言编码还是有好处的。数学的一个方便的特点是,当人们做练习时,他们会得到明确的答案,这很容易检查(好吧,至少在代数表达式等价的问题上,这基本上需要我们整个数学技术堆栈来正确)。当人们写文章,基本上没有选择但是有实际人类阅读(是的,一个人可以决定一些事情自然语言处理和机器学习,但真正的文章的目的是与人交流,并最终告诉如果你真的需要人类的循环工作)。

好吧,当一个代码写一段代码时,这是一个创造性的行为,就像写一篇文章一样。但是现在一个人制作了设置的东西被设置为电脑。因此,拥有计算机读取并评估它是完美的感觉。但是,它仍然不是一个琐碎的任务。例如,一个人想检查学生是否有效地将最终答案放入他们写的代码 - 并且代码真的确实表达了表达,最好是清楚起见,是一个计算的想法。它变得非常高,但通过使用Wolfram语言的象征性,以及一些自动定理的证明和机器学习,它似乎可以在实践中做得很好。这就是例如让我们放的东西自动评分的版本从我的浅说网上的书。

在一个层次上,人们可以通过查看学生最终编写的代码来评估到底发生了什么。尽管可能有无数种不同的程序,但人们可以评估哪些是正确的,甚至哪些是满足特定效率或优雅标准的。但还有更长的路要走。因为不像数学这样的领域,学生倾向于在草稿纸上思考,在编写程序的过程中,每一步都倾向于在计算机上完成,每一次按键都可以被捕获。我自己也一直是个人分析有时,我至少会对编写和调试程序的过程做一点分析。但在教育领域,这是一个很好的机会,首先是制作精细的教育分析(Wolfram Language和Wolfram Cloud是完美的配合),然后是创建适应每个学生的实际行为和学习过程的深层次方法。

最终,我们大概想要的是每个学生的精确计算模型。和当前的机器学习技术在Wolfram语言中,我认为我们已经开始有了构建它所需的东西。有了这个模型,我们大概会做的是运行大量的模拟,模拟如果学生被告知这个或那个会发生什么,试图确定在任何给定的时间,最优的解释或最优的练习是什么。

在帮助像基本数学这样的区域时,这种个性化与简单的启发式相当容易。在帮助编码和计算思维方面,问题很复杂。但它是一个在系统内具有良好的计算思维和复杂的计算的地方,我认为它可以做一些非常好的事情。

我想提一下,总是有一个问题,人们应该评估什么来确定某人是否真的理解了某件事。有了每个学生的良好计算模型,就可以得到一个非常复杂的答案。但在某些地方,人们仍然需要发明各种类型的练习或测试来给出(好吧,假设人们不只是选择评估整个项目的更好方案)。

一种基本的锻炼方式,我的浅说是full -是“写一段代码做X”的形式。但也有其他的原因。一个是“简化这段代码”,或者“找到函数失败的输入”。当然,还有像“这段代码将做什么?”这样的练习。但从某种意义上说,这样的练习似乎很愚蠢:毕竟,只需运行代码就可以找到答案。

现在,我不得不说,我想为人民做一点“表现得像一部电脑”这是非常有用的。这有助于理解计算是什么,以及如何计算工作的过程。但它不是做了很多的。真正的焦点,我想,应该是育人的是他们自己真正需要做的。有技术和自动化的世界,就会有更多的随着时间的推移。有教人做计算机的工作是没有意义的;应该教他们做他们能做的只能是什么,以计算机为工具和合作伙伴的合作,以最好的方式。

(我听过一些关于教孩子不用计算器做算术的争论,他们会说:“如果你在一个荒岛上没有计算器会怎么样?”我现在听到有人提出同样的观点,教孩子们如何手工计算程序的功能。但是,呃,如果你在一个没有电脑的荒岛上,你到底为什么要写代码呢?(当然,当代码读写能力变得更加普遍,这可能是一个不同的故事,因为在荒岛上的人类可能正在编写代码来读取自己……])

好的,那么要教的重要的东西是什么?计算思维其实就是思考。它是关于以一种结构化的方式形成思想,在现代世界,这种方式可以很方便地与计算机沟通,然后计算机可以做有趣的事情。

有事实和思想认识。其中一些是关于计算的抽象的过程。但他们中的一些是关于世界上的事情是如何被制作系统。颜色是如何表示的?规定是如何在地球上的点?一个人如何代表不同人类语言的字形?等等。我们做了一个海报前几年的数据系统表示的历史.只是,海报的内容将成为一个有趣的过程。

但是,好吧,如果一个人知道如何表示事物,以及计算的过程,那么他应该学习如何计算?它的基本目标是达到这样一个点,即人们能够获取自己想知道或做的事情,并能够将其转换成计算形式。

通常是关于“发明算法”或“发明启发式”。有什么好方法来比较罗马帝国的发展和蒙古人的扩张?应该计算什么呢?应该展示什么?如何判断月球两极附近是否真的有更多的陨石坑呢?从图像中识别陨石坑的好方法是什么?

这是类似的事情,在几乎每个“计算X”领域取得进展的核心。只有那些学会擅长这些事情的人,才会在这些领域取得最大的成功。在我们公司,很多人“发明了一种算法;发明一种启发式的“每天都能解决的问题”——这些年来,这是构建Wolfram语言和Wolfram|Alpha的很大一部分工作。

是的,一旦发明了算法或启发式,它就可以执行它来执行它。但发明它通常是最初的,并且最重要的是了解以清晰和结构的足够明确的方式所需的内容,这可以使其能够计算。努力,人们可以发明尽可能摘要的表现练习。但是,更常见的和有用 - 是有关连接到外界的问题。

甚至像这样的问题:“给定一串x,y对,有什么好的算法来决定应该把它们画成单独的点,还是用一条线把它们连接起来?”是一个真正取决于思考世界是怎样的问题。从教育的角度来看,计算思维的好处在于,它们几乎不可避免地涉及到其他知识领域的输入。它们迫使人们有一种广泛的、一般的思维,以及对常识的某种应用,这对人们需要做的很多事情都是非常有价值的。

什么是计算和编程?

在过去的几年里,教授“编程”是一个被广泛讨论的话题。当然,“编码”并不等同于计算思维。这有点像手写或打字与论文写作的关系。你(通常)需要手写或打字才能写出一篇文章,但这不是写作活动的智力核心。但是,好吧,那么我们应该如何教授“编程”呢?

好吧,在Wolfram语言中,想法是一个人应该能够像人类一样用计算思维形成想法,并尽可能直接地将它们转换成语言中的代码。在一些小情况下(它们会逐渐变大一点),你可以用英语明确自己想要什么。但通常情况下,人们直接用Wolfram语言写作。这意味着在某种程度上,一个人在编码,也就是编程。

不过,这是一种比大多数程序员所习惯的更高层次的编程形式。这就是为什么现在有更广泛的人可以使用它,为什么把它大规模地注入到教育中是有意义的。

那么,它与“传统”编程教育有什么关系呢?目前有两种类型的编程教育已经尝试过了:人们可以称之为“高中版本”和“小学版本”。现在的高中版本主要是关于c++和Java的。小学版主要是Logo的衍生品,比如Scratch。但令我震惊的是,即使是在美国受过高等学校教育的技术型孩子中,仍然很少有人在学校里认真学习过编程。

但当他们在高中学习“编程”时,他们实际上学了什么呢?通常有很多语法细节,但最重要的概念往往是条件句、循环和变量。作为一个一生大部分时间都在思考计算的人,这真的很令人失望。是的,这些概念当然是低级计算机语言的一部分。但它们并不是我们现在广泛理解的计算的核心——在一般的计算思维中,它们充其量只是附带表演。

什么是重要的?在实践中,最重要的概念可能就是一切(文本、图像、网络、用户界面等等)都可以用计算形式表示。像函数和列表这样的想法也很重要。如果一个人是有智慧的,通用计算的概念(这是使软件成为可能的东西)也很重要。

但问题是,现在教的不仅不是一般的计算思维,甚至不是一般的编程。条件句、循环和变量是20世纪60年代出现的第一批实用计算机语言的核心。今天的计算机语言,如c++和java,有更好的方法来管理大量的代码。但它们的底层计算结构与20世纪60年代的语言非常相似。事实上,孩子们——他们通常只写很少的代码——最终只会像20世纪60年代那样处理计算(尽管可能会有一种针对大型代码库的机制,使计算变得更复杂)。

Wolfram语言是真正的现代语言。在20世纪60年代,这一点都不实用:计算机不够大,不够快,也没有像云这样的东西来维护一个庞大的知识库。(事实上,早在20世纪60年代早期,就有像LISP和APL这样的语言,它们具有类似于Wolfram语言的高级思想,但这些思想在实际应用之前花了几十年时间。)

那么循环、条件和变量呢?嗯,它们都存在于Wolfram语言中。它们不是前沿和中心概念。在我的浅说例如,在我讨论给变量赋值之前,是在第38章,它发生在我讨论了将复杂的基于知识的应用程序部署到网络之后。

举个例子,假设有人想要制作一张前10个方块的表格。在Wolfram语言中,可以非常简单地做到这一点:

表[n ^ 2, {n, 10}]

但是如果一个人在C语言中工作,它大概是:

int n;(n = 1;n < = 10;N ++) printf(

非程序员可能会问:“这些东西到底是什么东西?”它不是直接告诉我们想要什么,它所做的是在较低的水平告诉计算机它应该做什么。我们告诉它分配内存来存储整数值n,我们说从n=1开始,一直增加n直到10。然后我们告诉计算机,在每种情况下,它都应该打印出正方形。有很多细节。(公平地说,在更现代的语言中,如Python或JavaScript,其中一些会消失,但在本例中,我们仍然需要处理显式循环及其变量。)

现在,关键的一点是循环、条件和变量不是计算的真正点;它们只是低级语言中特定实现的细节。我听人说,当有显式循环、条件和变量时,孩子们更容易理解发生了什么。根据我的观察,这根本不是真的。随着人们在日常生活中越来越多地接触到计算和计算思想,也许这是多年来改变的事情。但到目前为止,谈论循环、条件和变量的细节似乎让孩子们更难理解计算的概念。

学习循环,条件和变量有用吗?肯定。它们是整个计算和计算思维的一部分。它们不是最重要的部分,也不是学习的第一部分。哦,顺便说一下,如果一个人要开始讨论用图像或网络或其他东西进行计算,像循环这样的概念根本不是他想要的。

在Wolfram语言的一个重要特点是,在其努力包括通用计算认为它集成了大量不同的计算范式。有函数式编程。和程序的编程。和基于列表的节目。和象征性的节目。和机器学习和基于实例的编程。等等。所以,当人们学习的Wolfram语言,他们会立即得到暴露的计算思路广谱性,方便所有的一贯打包在一起。

但是,当一个学习了Wolfram语言编程的人想用c++或Java进行低级编程时,会发生什么呢?我见过几次,非常迷人。他们似乎毫不费力地掌握了如何在这些低级语言中进行良好的编程,但他们不断地抱怨他们必须做的所有古怪的事情,以及所有不能工作的事情。"我的天啊,我必须自己分配内存""哇,整数的大小是有限制的"等等。

从Wolfram语言到底层语言的过渡似乎很容易。反过来说有时更有挑战性。我必须说,我经常发现教那些对编程一无所知的孩子计算思维更容易:他们很快就能掌握这些概念,而且他们不需要忘记所有东西都必须变成循环和条件等概念。

当我开始考虑向孩子们教授计算思维和Wolfram语言时,我想象大部分学生都是高中生。但特别是当我的介绍这本书出版后,我惊讶地发现,各种各样的11岁和12岁的孩子都在经历它。我现在的结论是沃尔弗拉姆编程实验室等等,适合11岁或12岁以下的孩子。

什么年轻的孩子?那么,在今天的世界上,所有的人都用电脑或智能手机,并且越来越受到各种计算活动。也许他们制作和编辑视频。也许他们构建资产一场比赛。所有这些类型的活动都是很好的前兆计算思维。

早在20世纪60年代,一个大胆的实验就以Logo的形式开始了。有人告诉我,最初的想法是构建50个“微观世界”,让孩子们可以用电脑进行实验。第一个例子是一只“乌龟”在屏幕上移动,在半个世纪的时间里,这个例子演变成了Scratch(它有一只橙色的猫而不是乌龟)。然而,不幸的是,其他49个微世界从未建成。虽然乌龟(或猫)很可爱(在20世纪60年代是一个令人印象深刻的想法),但从今天对计算的理解和经验来看,它似乎令人失望地狭隘。

尽管如此,许多孩子在小学时接触到Scratch这样的东西——即使有时一年只有一个“小时的代码”。在过去的几年里,让更小的孩子知道他们可以让电脑做他们想做的事情,这显然是有价值的。但是,随着孩子们使用计算和计算思想的其他方式的增多,这一点变得不那么重要了。是的,在现代,向小学生教授循环和条件句确实有点奇怪。

我强烈怀疑,有一些更好的方法来教年轻人计算思维——利用我们现在拥有的所有技术和自动化。像Scratch这样的系统的一个特点是,它们的程序是用像砖头一样的块可视化地组装起来的,而不是必须输入。在实践中,程序的结构通常是线性的。但是积木有两个作用。首先,它们避免了任何显式语法的需要(而只是“块是否适合?”)。第二,通过在屏幕的一侧放置一堆可能的方块,它们可以立即记录什么是可能的。

甚至更重要的是:这整个设置强迫一个只有一小部分可能的块,实际上是微孔。在完整的Wolfram语言中,有超过5000个内置功能,只需将所有内容转化为块将是压倒性和无益的。但这一点是选择几个(50?)微波炉中的所有这些可能的功能,每个功能只涉及一小一组功能,而是每个所选择的,以便可以使用它们的丰富和有趣的东西。

凭借我们目前的技术,这些微波炉可以容易地涉及图像计算,或自然语言理解,或机器学习 - 最重要的是,可以立即与现实世界有关。And I strongly suspect that by including some of these far-past-the-1960s things, we’ll be able to expose young kids much more directly and successfully to ideas about computational thinking that they’ll be able to take with them when they come to learn more later.

这是怎么会发生?

教育孩子和世界的计算思维的过程才刚刚开始。我非常兴奋,有了Wolfram语言和围绕它的系统,我们终于有了我认为能够解决相关核心技术问题的工具。但仍存在许多结构性、组织性和其他问题。

我在努力做好我的工作,比如,写我的Wolfram语言的基本介绍,释放沃尔弗拉姆编程实验室,创造自由Wolfram开放云.但这只是第一步。需要有很多针对不同人群的书籍和课程。需要定义在线和离线的社区和活动。我们需要有办法向学生提供现在可能实现的东西。需要有方法教老师如何去帮助别人。

我们已经准备好了一些基本的东西。一套课程基于浅说.一个Wolfram挑战网站与编码和计算思维的挑战。一个更结构化的辅导项目为个人学生做项目。我们的特许经营版本Wolfram夏令营.和更多。其中一些是沃尔夫勒姆研究; 有些人来自美国Wolfram基金会.我们正在考虑更广泛的非营利性的倡议,以支持提供计算思维教育。而我们甚至想过建立一个整个学校这就是围绕着计算思维,并非最不重要的,以显示它如何完成至少一个模型。

但除了我们正在做的事情,最让我兴奋的是,其他人和其他组织也开始把事情向前推进。有校内项目,课外项目,暑期项目。在各个国家开始了大规模的项目。

我们自己的公司和基金会是相当小的。为了能够让世界了解计算思维,许多其他人和组织需要参与进来。多亏了三十年的努力,我们现在已经拥有了这项技术。但现在我们必须把它以正确的方式送到世界各地的孩子们手中。

我认为计算思维可以成功地传授给各种各样的人,不管他们的经济资源如何。因为它是如此的新事物,拥有更先进的教育体系或更强大的技术力量的国家或地区,在这方面并没有比其他任何国家或地区拥有任何巨大的优势。

最终,世界上的大部分人将能够进行计算思维,并能够与电脑交流使用代码——就像他们现在可以读写一样。但今天我们才刚刚开始。我很高兴能够为这个项目贡献更多的技术。我期待看到我希望在明年或未来几年在这方面迅速取得进展。

试一试Wolfram Open Cloud上的这篇博文中的示例计算

12个评论

  1. 组建一所学院怎么样?让学生们从一开始就完全沉浸在计算思维中,主要在西城学习。

    乔纳森Kinlay
  2. 优秀的概述。

    史蒂文·麦克奈特
  3. 神奇的斯蒂芬。我想把你的语言教给更多的孩子。不幸的是,我用的都是ipad,在这个平台上浏览器版本无法使用——主要是新ipad的苹果键盘盖的文本输入。我们甚至尝试了wolfram云应用程序,但它也不能很好地与苹果硬件键盘。我创建了bug报告,但几个月后都没有变化。你能告诉我内部有谁能修好它吗?

    何塞
    • 感谢您的反馈,何塞。使用箭头与硬件键盘按键的一些问题进行了具有挑战性的修复由于iOS的限制。但是,我们现在有一个新的版本出来(11.0.1)来解决这些问题。如果您仍然遇到问题,请让我们知道。

      管理
  4. 在这些方面教育未来的公民,帮助他们培养计算思维,绝对是非常重要的。确实是一篇好文章。

    Sridev Ramaswamy
  5. Wolfram先生,我在大学里用了一个学期的Mathematica,然后在接下来的9年里进行军事训练。回到工程部。我们是否首先通过Wolfram语言学习计算思维,然后开始使用c++ ?细节的层次是什么?我是否通过我的方式,通过入门书,掌握它,然后开始与c++并行。

    无论如何,我不是一个好的科学家或工程师,但我对计算机感兴趣,并为建筑工程和教育机构工作。如有任何建议,将不胜感激。真的,OFL

    欧文长
  6. 我先生在很大程度上受到你如何教计算思维的文章启发,我决定写一篇博客文章太的话题,因为它适用于我的国家尼日利亚。这里是链接,其相当业余的,因为我不是你,但聪明的小我能做到。我也贴一个链接,这是你目前的职位上我的博客最近。这是链接:
    http://akhenaton42.blogspot.com.ng/2016/09/nigeria-and-computational-future.html

    希望您能在百忙之中抽出一点时间看看,这对我很有帮助。谢谢。

  7. 你可能想看看我自己的“上层本体论”,我试图通过归类相关维基百科文章来总结所有知识。在最高层次,我将知识划分为27个核心领域,每个领域用一个古希腊字母表示。对于每个领域,我列出了一个A-Z核心(最核心)概念(链接到维基百科)。平均而言,我需要~ 65个概念(或wiki文章)来给出每个领域的一个有效概述——所以我用(27*60 ~ 1 800个核心概念)总结了所有的知识。

    这里是链接到我的所有知识汇总:
    http://www.zarzuelazen.com/CoreKnowledgeDomains2.html

    好的。现在。左边一栏显示了“数学/计算”领域,从最抽象到最抽象(从上到下)。中间一栏列出了“物理”领域。右边一栏显示的是“心理/社会领域”。

    你可以看到,在我的方案中,计算和数学并不是分离的——我认为只是从最抽象到最少抽象的渐变,纯数学是最抽象的,计算思维是数学的一个更具体(不那么抽象)的版本。

    我认为,随着“计算思想”,您正在谈论在传统编程(最低抽象级别)之间的中途的抽象水平,以及纯数学(最高抽象级别)。因此,也许“计算思维”应该被认为是纯数学之间的“桥梁”,而另一方面是另一方面的纯粹数学。

    传统编程语言适合我方案左下角的3个领域(操作系统、编程和数据建模)。有了“计算思维”,我认为你已经提升了抽象层次,进入了“知识表征”(演绎、归纳和诱变)的领域,由我称之为“数理逻辑”、“概率论”和“概念学习”的3个领域来表示。

  8. 我相信你的思路是对的。学习编程让很多人感到厌烦,因为一开始它就太无聊了。只有当我能够做一些有用的、半强大的事情时,我才对它感兴趣。然后我觉得我有了进展。但这需要一段时间。从一开始就让学习者接触电脑的力量,绝对是让他们上瘾的好方法。一旦他们被吸引,他们就会开始关注更多的细节,无论如何他们都会想要及时了解的。

  9. 在这里看到计算机视觉非常有趣。我们已经在Python和c++中教了一些孩子计算机视觉使用OpenCVhttps://www.kinvert.com/但这些语言不一定像Wolfram Alpha那样直观。

    你有什么办法使用Wolfram Alpha的程序的机器人?

  10. 这篇文章写得很好,也激发了我在教授数学思维时的思考

    米歇尔Topp
Baidu