科学家提出了一种新的编程语言来教授编码(和Python)

2020-08-17 19:50:17

Hedy是一种渐进式编程语言,旨在教授编程和教授Python。它使用不同的层次进行教学。第一级只提供打印文本和请求输入。这一级别的目的是向学习者介绍编程语言和环境的概念。在此基础上,Hedy构建了更复杂的语法和其他概念。

Hedy的首要目标是不断增加类似Python的语言的语法复杂性,直到新手掌握了Python本身。为了实现这一目标,海蒂遵循以下设计原则:

概念至少以不同的形式提供三次。写作教育的研究[@Simon_langue_1973;@Fayol_etude_1989]表明,需要在很长一段时间内以不同的形式提供概念。此外,研究还表明,一个单词在存储到长期存储器[@verhalen_woorden_1994]之前需要阅读7次。

最初提供的概念是尽可能简单的形式先前的研究表明,语法可能会让初学者感到困惑[@Denny_Underming_2011;@stefik_Experiical_2013]。因此,我们希望保持初始语法不包含尽可能多的关键字和运算符,以降低认知负荷。

在施奈德曼关于螺旋式教学法的论文[@Shneiderman_teaching_1977]中,他认为一个概念一次只有一个方面发生变化,这使得我们能够将学习者的全部注意力集中在新的句法元素上。

将方括号和冒号等语法元素的添加推迟到可能的最新时刻之前在计算机科学教育领域的研究表明,像[==]{}和[:]{}这样的操作符对新手来说可能特别困难,并阻止他们有效地发音代码[@Hermann_code_2018],这被认为有助于记忆[@Swidan_Effect_2019]。对自然语言习得的研究表明,插入语和冒号是学习者通常学习的标点符号的最新元素[@Ferreiro_Managing_1999]。如果要在冒号和括号以及其他元素(如缩进)之间进行选择,则首先介绍后一种元素。

我们知道,间隔重复是一种很好的记忆方式,而且学习标点符号需要时间,所以我们在句法改变之前,给学生尽可能多的机会去学习概念。(这句话的意思是:[@KANG_SPACE_2016][@KANG_SPACE_2016][@KANG_SPACE_2016]是一种很好的记忆方式,而且学习标点符号需要时间。)。

在每个层面上都有可能创建简单但有意义的课程,对所有学习者来说,参与有意义的活动是很重要的,[@Brown_Situited_1989]。我们教高中生(甚至大学CS学生)的经验是,学习句法并不总是被视为一种有用的活动。学生们体验到了计算机的智能之间的巨大差异,例如,能够在几秒钟内将1910和5671相乘,而同时又不能独立地添加丢失的克隆。我们预计,当最初的语法很简单,允许新手创建有趣而有意义的程序时,他们以后会有更多的动机学习语法的细节。

在目前的形式下,海蒂由13个不同的级别组成。这些级别遵循de KLAS中的Python系列课程(课堂中的Python),这样现有的课程就可以用Hedy而不是Python来执行。

在第一级,学生可以首先打印文本。为此,除了后跟任意文本的关键字[print]之外,不需要任何语法元素。此外,学生可以使用关键字[ASK]要求用户输入。这里我们决定使用关键字[Ask]而不是[Input],因为它更符合关键字在代码中的作用,而不是它的作用。用户的输入可以用[ECHO]重复,因此可以创建非常简单的程序,要求用户输入名称或一种喜爱的动物,从而实现设计目标6。

在第二级,变量被添加到语法中。定义avariable是使用单词[is],而不是使用等号符号实现设计目标3和设计目标4。我们还添加了创建列表和检索元素的选项,包括使用[at]从列表中检索随机元素。添加列表,特别是添加从列表中选择随机项目的选项,允许创建更有趣的程序,如猜谜游戏、具有随机元素的故事(这是de KLAS中的Python(课堂中的Python)的作业),或者是定制的骰子。

#Level 3:引号和类型在Level 3中介绍了第一个语法元素:使用引号区分字符串和文本。在教授新手的过程中,我们已经看到,这种区别可能会让人困惑很长一段时间,所以及早提供这一区别可能有助于引起人们对计算机需要变量类型信息这一事实的关注。因此,这一级别是解释语法和解释编程概念的有趣组合,这突出了它们之间的相互依赖关系。使用[is]的可变语法保持不变,这意味着learnercan现在可以同时使用[number is 12]和[name is hedy]。

在级别5中,引入了使用IF语句进行选择,但该语法是“平面”的,即放置在一行上,类似于常规语法更多:[If name is print]Else语句也包括在内,并且也使用关键字[Else]:[If Name is Print Else Print]。

与非英语母语的Python新手一起工作。研究发现,[for]这个关键词对于重复来说是一个令人困惑的词,特别是因为它听起来像单词‘4’[@Hermann_code_2018]。根据设计目标2,对于我们的第一个最简单的形式,我们选择使用Quorum[@stefik_quorum_2017]语法[重复x次]。在这个初始形式中,比如if语法放在一行上:[重复打印5次]。

注:本级原计划为4级,现在移至6级,根据现在小朋友考试的经验,可能会移到其他地方,在4级中,学生学习用变量计算,所以介绍了加法、乘法、减法和除法。虽然这似乎是一个简单的步骤,但我们的经验告诉我们,对于非美国学生,使用[*]作为乘法,而不是$\x$,使用非圆点而不是逗号作为小数点分隔符,是一个陡峭的学习曲线,应该作为一个单独的学习目标来对待。

在级别6之后,显然需要“继续前进”,因为循环的主体(以及if的主体)只能由一行组成,这限制了用户可以创建的程序的可能性。我们认为这一限制将成为学习者的激励因素,而不是“学习”Python的块结构,他们的动机是构建更大、更有趣的程序的前景(设计目标6)。根据DesignGoal 3,循环的语法在其他方面保持不变,因此新形式为:\

一旦块充分自动化,学习者将看到更类似Python的for循环形式,即:[for i在0到5的范围内]。这允许访问循环变量[i],这允许更多有趣的程序,如从10数到10。根据设计目标3,更改很小,并且为了这样做(遵循设计目标4),括号和冒号被推迟到更高的级别,但是在级别7中学到的缩进仍然存在。

要使这一步达到完整的Python,学习者需要在循环和条件句中使用冒号来表示块的开始。因为我们已经知道了块,所以我们可以教学习者在每次缩进之前使用冒号,并让他们广泛地练习。

为了允许足够的概念交错(设计目标5),我们推迟引入圆括号,而专注于更多的概念添加:块的嵌套。我们知道,缩进对于学生来说是一个很难学习的概念,因此它需要有自己的水平(设计目标3)。

级别11在[打印]、[范围]和[输入]中添加圆括号。根据设计目标4,这些将尽可能晚地添加。

在第12级,学习者第一次遇到不同类型的括号,因为它为列表访问添加了矩形括号,到目前为止,这是根据设计目标2通过关键字[at]完成的。

在最后一级,通过将赋值和等式检查中的单词[is]替换为[=]和[==],Hedy成为Python的子集。