acm-header
登录

ACM通信

BLOG@CACM

编程不仅仅是为了工程;计算机科学不仅仅是建造东西


马克Guzdial教授

图片来源:密歇根大学

英国国家计算机教育中心学术委员会发布了一份白皮书:计算机教育中的实用程序设计.这篇论文的目标是我强烈支持的:

这篇白皮书论证了实践编程作为年轻人计算机教育的核心元素的根本重要性。

他们担心2014年英语计算机课程的实施可能会太过倾向于成为一个理论纪律,远离编程,这些东西让计算变得神奇。我和他们一样担心。例如,我担心在没有计算机的情况下教授计算思维会导致枯燥的数学或哲学课,因为没有自动化艾伦·佩利斯在1961年写道给了我们思考的新工具。

白皮书可能太过沉迷于编程,模糊了计算机科学和软件工程之间的界限。他们写道:

计算机科学的全部目的就是帮助我们建造东西。作为Fred Brooks说过:“自然科学家为了研究而建造;但是工程师为了建造而学习他接着说:“我认为,根据任何合理的标准,我们称为“计算机科学”的学科实际上不是一门科学,而是一门综合的、工程的学科。我们关心的是制造东西,无论是计算机、算法还是软件系统事实上,计算机科学两者兼而有之(而且还不止于此)。然而,为了建设而学习是一个基本部分。

因此,构建东西(编程)并不是一个可选的附加组件:这是主题本身存在的一个关键理由。

这份白皮书的作者反对计算机科学的纯理论框架。为了实现这个目标,他们把钟摆往相反的方向使劲推,朝着建筑、制造和工程的方向推。我不会在这里引用更多的白皮书内容,但我对他们如何看待计算机科学与社会科学的联系做出了反应,例如,社会科学教我们如何研究人类,从而可以产生更好的软件——而不是编程是进一步开展社会科学教育的工具

白皮书的作者们面临的挑战是计算机领域的一个老问题——这是一个很难归类的领域。彼得·丹宁和彼得·弗里曼在2009年写道把计算机科学单独归类为工程学是没有结果的。计算机科学包括工程、科学和数学等方面,但它实际上是一种全新的范式。

在大流行期间,我与密歇根大学文学、科学和艺术学院(LSA)的同事们一起回答了一个问题:文科和理科中的计算是什么?关于计算,LSA学生需要知道什么?我和我的联合主席格斯·埃弗拉尔以及来自整个校园的一个特别小组(见我们的最终报告),我们提出了三个主题来描述计算如何在LSA中出现:

  • 计算的发现当前位置自然科学和社会科学的科学家都使用计算来增进知识。我从工作组学到计算科学和数据科学之间的一个关键区别:计算科学家创造模型使具体化他们理论,然后模拟这些模型来验证他们的理论。这是计算的用途1961年,佩利斯为所有学生做宣传
  • 计算的表达式当前位置计算机技术为人类创造了新的交流方式,从社交媒体、电子邮件到大片电影和数据可视化。文科和理科的学者使用计算表达式(这是一种构建/制作的形式),并研究如何计算正在使用用于表达(更多的是分析)。
  • 计算为正义(也被称为“关键计算”):计算可以编码加剧社会弊病的偏见和不平等,也可以用来支持我们的民主制度。Mehran Sahami和他的同事写了一本新书,系统重启:大型科技公司哪里出了问题,我们如何重启网站),以批判性的视角介绍了计算机的挑战和机遇。在20世纪60年代,像c.p. Snow和Peter Naur这样的学者认为它对于每一个人要了解计算以对强大的新计算技术提供民主监督(参见评论他们的话).

这三个主题都涉及到“制造”的各个方面,但并不总是从工程学的角度出发。计算科学家和艺术家通常会编写一些简短的代码片段来尝试一个想法或生成一个更大的解决方案,然后他们会扔掉这些代码。它们的用法更像是“bricoleur”而不是“planner”(特克& Papert).密歇根大学的关键计算学者告诉我,他们希望他们的学生是“会话的程序员——他们需要能够与技术开发人员交谈,而不是自己成为工程师。我们教授对话式程序员的最佳方法包括编程,但它们与我们把计算作为工程学教授的方法不同。

我非常同意作者的观点,即编程是计算机教育的一个关键方面。为一门影响数百万学生的课程设置议程需要广泛的视角——我们想要的是理论/分析而且工程/制造,以及介于两者之间的许多用途。让我们定义计算机教育,以支持学生在他们的生活和职业生涯中使用计算机的所有方式。

马克Guzdial她是密歇根大学工程学院电气工程和计算机科学教授,以及信息学院的信息教授。


没有发现记录

登录为完全访问
»忘记密码? *创建ACM Web帐户
Baidu
map