acm-header
登录

ACM通信

BLOG@CACM

我们应该为学习编程的学生提供什么帮助?


马克Guzdial

上周,我们在达格斯图尔举办了一场精彩的研讨会概念机器与教育中的编程语言语义.你可以找到我的博客文章开始了这一周.关于这次研讨会已经有了大量的报道这里是推特流),并附有详细说明来自Andy Ko的博客而且Felienne在博客上的几篇文章.本·夏皮罗本周在我的博客上发表了一篇总结研讨会主题的客座文章。

本周对我来说最大的领悟是关于多样化的我们可以也应该为学习编程的学生提供各种支持。编程是道路现在太难了。我们很难让老师尝试编程的原因之一就是这把他们吓跑了.我们可以用更多的支持让它不那么可怕,更容易学习。我们从事计算机科学的人通常认为我们应该这样做为学生提供帮助,因为这会在某种程度上阻碍他们的学习,如果他们自己努力学习,他们会学得更好。这根本不是真的.直接的指导比发现式学习更有效在这里而且在这里而且在这里).

一个概念机器是一个面向人类的,学生可以理解的关于计算机器的某些方面如何工作的解释——它可能是对语言特性的解释,或者是对正在运行的程序的某些方面的解释(例如,swap()如何工作)。为了能够调试一个程序,学生需要理解它,也就是说,要有一个程序如何工作的心智模型。学生必须能够预测他们的程序会做什么,在头脑中模拟它。一个概念机器是一个教学工具,帮助学生发展一个成功的(预测的)心理模型。

在研讨会期间,还有很多其他的建议类型概念性的机器。最后我意识到其他的事情有用的脚手架对于学生,但是他们没有名义上的机器。脚手架是一个大的伞形术语,涵盖了许多种帮助学生编程的支持(参见这里是教育脚手架的定义).概念机器是一种脚手架。

本周确定的其他类型的支持:

  • 隐喻:“你可以把变量看作一个盒子。”这并没有告诉你机器是怎么做的。这是一种用先验知识解释的尝试。“变量作为盒子”是一个特别常用的比喻,结果导致了学生的各种各样的误解(见这里的帖子),就像代码“a=2;A =3;"表示变量A同时包含2和3。
  • 动作、技巧和技巧如果你不确定函数或方法中发生了什么,首先输入一个打印警报调用,以显示您已将其放入函数或方法中。”这并没有告诉你事情是如何运作的,也没有增加你的理解。这真的很有用行动试着去理解时所采取的。
  • 可视化和表示Python的导师是世界上使用最多的程序可视化之一。它不是一个概念机器——如果你手边有一个概念机器,你可以用它来解释Python导师中的可视化。Python导师为您提供了程序运行的图片,但它实际上并没有为理解这张图片提供太多帮助。
  • 工作的例子:对学生最有力的支持之一是向他们展示一段代码(结构),并解释它的功能(行为)和为什么要写它(函数)。最后一部分尤为重要。我们经常给出代码示例来解释一些计算思想(比如我的“a=2;A =3;"从几行开始)实际上并不任何有用的东西!我们的大脑天生就会学习有用的知识。学习编程如此困难的原因之一是我们大多数时候预计学生想要学习编程。我们应该展示做有用事情的代码。在研讨会上,我们一次又一次地听到证据表明,一种接地的、具体的、工作一段示例代码是我们能提供给学生的最好的支持之一。”想学习FOR循环吗?去编写另一个使用它们的程序对一个初学的学生来说是很可怕的。人类天生喜欢从例子中学习。只是告诉学生去解决另一个问题比无用更糟糕——当我们知道如何做得更好时,这是残酷的。
  • 改进的语言和ide:作为一名教师,我从我的个人实践中学到的最重要的一课是,JavaScript很难用一台概念机器来支持。你见过JavaScript中“==”如何工作的人性化(非正式语义)描述吗?安迪·柯好心地提供给我的-在这里看到的.这实在是太难解释了。我宁愿学生们在有用的小块中学习。我们需要语言水平和新的编程工具来帮助学生逐渐发展所有这些知识。它太大太复杂,即使有多个优秀的理论机器也无法解释。

在达格斯图尔举行的这次研讨会的一个重要成果是达成了共识(至少达成了共识)许多如果不是所有参与者)是"这不是所有名义上的机器“概念机器是一个伟大而强大的想法,但它只是我们工具箱中的一个工具。现在我们已经确定了更多的工具,我们可以努力使它们对我们的学生更好、更有用。


没有找到条目

登录全面存取
忘记密码? »创建ACM Web帐户
Baidu
map