计算教育是培养计算思维的有效途径

2015-12-15 12:45牟连佳李丕贤邵洪艳
教育教学论坛 2015年51期
关键词:计算机科学计算计算思维

牟连佳 李丕贤 邵洪艳

摘要:随着移动计算和社会计算的发展,人们可以随时随地获得需要的信息和服务,计算思维几乎无处不在。计算思维使用的隐喻和结构正在影响着所有的科学与工程领域。对计算教育的研究工作将为“计算思维”成为一种全面共享的21世纪的文化技能而铺平道路。需要利用多个学科(包括计算机科学、教育学、心理学和社会学)的方法来改善计算教育。

关键词:计算;计算教育;计算思维;计算机科学

中图分类号:G642.41 文献标志码:A 文章编号:1674-9324(2015)51-0228-02

一、前言

上世纪60年代初,专家提出:校园内的每一个大学生都应该学会程序设计[1],要把这当作通才教育的组成部分。他们认为,程序设计是对流程的探索,是一个与每个人都有关的课题,而且如果能用机器来自动执行流程的话,那将会改变一切。他们将程序设计看作是理解“计算理论”而必须采取的一个步骤,将导致学生们从计算理论的角度对大量的课题(比如微积分和经济学)进行重新理解。

今天,流程的自动执行正在所有的科学与工程领域中改变着各个学科的专业人员对本行工作的思维方式。计算思维所使用的隐喻和结构正在影响所有的科学与工程领域。计算思维的专业人员与教育工作者有责任帮助各个学科的思想家去掌握计算思维方法。

通过正规教学将能够部分实现这一职责。虽然其他领域内的专业人员可能不需要多少训练就能够使用某一种应用软件,但是在软件设计中所涉及到的隐喻和思维方式却必须予以明确讲授。在对校园中所有大学生进行计算教育的时候,可能需要采用多种不同的方法。这些方法应该与对那些有志成为计算学科专家的大学生进行教学时所使用的方法有所不同。在开发适用于所有大学生的方法时,我们需要解决各种难题,比如:非计算学科專业的学生是如何理解计算思维的,他们将会遇到哪些挑战,什么样的工具可以帮助他们最轻松地掌握计算思维,以及应该如何组织和建构我们的课程以便使各种各样的大学生都能够接受计算思维。

在本文中,将举几个简单的例子来说明计算教育研究领域内的研究人员是如何解决这些问题的。计算教育领域的研究人员既倚重计算机科学理论又吸收教育理论的思想,二者缺一不可。虽然我们的计算机科学家是从实用的、理性的和理论的角度来理解计算思维,但是从本质上来看,有关教育的问题却属于人的问题。人往往是不切实际的,缺乏理性,而且其行为难以预测,也难以求证。

计算教育研究者们正在利用实验和设计方案来证明我们能够解决这些重要问题:即人类怎样才能理解计算思维,以及我们如何才能更好地理解计算思维。有关计算教育的研究工作将会为此铺平道路,使得“计算思维”成为一种全校园共享的21世纪文化技能。

二、编写程序之前需具备计算知识

上世纪80年代初开展过一项研究课题,即如何让程序设计语言更接近自然语言。当时遇到了一个显而易见的问题,那就是人类如何用自然语言来描述流程。Lance A. Miller要求参试人员为另一个人详细说明文档操作任务。其中有一项任务就是“以给定的纸质文件为基础,整理出一份清单,列出所有拥有摄影师职称并被评估为高级摄影师的雇员”。然后,Miller对参试人员所使用的描述语言进行了研究[2]。

令Miller感到意外的是,那些参试人员极少对任何类型的控制流做出明确说明。在他们的任务描述中几乎没有出现任何明确的循环语句。虽然有些人试着使用了条件语句(“IF”),但是竟没有一个人使用过一个“ELSE”语句。他对此感到非常吃惊,于是又为第二组参试人员提供了一个任务描述范例,范例中没有出现循环语句和“ELSE”语句,结果第二组参试人员轻而易举地完成了任务描述。

当他们被问到如果条件不满足,或者如果数据被用尽的话,那么该怎么办,他们几乎众口一词回答说:“当然,那就查看下一个人,或者如果没有数据了,那么继续执行下一步就行了”。

Miller的研究结果可以预测在学习程序设计的过程中可能会遇到的某些挑战,即如今入门课程的教师无人不知的那些挑战。虽然新手们往往不会具体说明在每一种条件下应该做什么,但是计算机却要求我们给出这样明确的说明。Miller的研究结果表明了哪一种程序设计语言更容易被新手所接受。就像现在C和C++这样的程序设计语言都使用了具体的循环语句,与Miller研究中参试人员的情况类似。

二十年以后,John Pane和他在卡内基梅隆大学的同事们重新研究了Miller提出的问题,但是换到了新的应用环境之中[3]。在一项实验中,Pane为他的受试者说明了一个游戏中出现的情景和流程,然后问他们应该如何描述。就像Miller一样,Pane发现参试人员很少使用明确的循环语句,他们总是使用单向的条件语句。Pane进一步说明了参试人员的程序设计风格。他发现,半数以上参试人员的任务说明都以顺序结构的形式出现,就像例子中给出的那样。他也观察到了有约束语句和命令语句的使用,但是几乎没有证据表明参试人员使用了面向对象的思维方式。参试人员确实谈到置于实体中的访问行为,但是几乎没有从那个实体的角度来探讨这个问题。相反,他们是从游戏玩家或程序设计人员的角度来看待这个问题的。他没有找到任何证据表明参试人员对实体的分类(类别定义)、继承关系或多态性做过任何描述。

Pane的研究结果说明,考虑到新手对任务描述的典型特征,面向对象的思维不是“自然的”思维方式。由于对象是当今多数现代化软件的基础,他的研究结果指出了我们在向学生解释什么叫做对象的时候可能会在哪些地方遇到困难。Miller和Pane的研究结果都激励我们去考虑如何才能设计出适合新手使用的程序设计语言,让他们能够按照自然的思维方式来描述计算步骤,就像使用MIT的Scratch进行面向事件的程序设计那样。

在过去四年里,有一个多国研究小组对“常理计算思维”作了探讨。研究的问题有:学生们在我们讲授这门课之前已经具备了哪些知识?面对一项复杂任务时,那些不具备程序设计知识的人们是怎样描述其算法的?Lewandowski等曾经发表一篇论文,文中对并发冲突现象进行了研究。在一家戏院有多个售票处的情况下,没有程序设计知识的学生们如何才能避免售出两张同一座位的戏票?他们的研究结果表明,有97个解决方案都是正确的(占受试者总数的69%,他们来自五个不同的机构);但是只有31%的解决方案(占正确方案的45%)得到了发行推广。非计算机专业的学生不可能自然而然地拿出像计算机专业学生设计的那种非常讲究的解决方案。然而,这些结果却说明了学生们能够用“自然的”思维方式对并发冲突问题进行正确思考。在实现并发冲突程序的过程中会遇到的问题可能更多地来自如何用当前使用的程序设计语言来描述那些算法,而不是来自这些算法本身的复杂程度。

如果我們的目标是要让计算思维的思想更容易地为新手所接受,那么Pane和Miller的研究结果都为编程语言的设计提供了启示,即需要重新设计程序设计语言。Thomas R.G. Green以及其他多名研究人员都对新型程序设计语言做过测试。这是一个相当活跃的研究领域[4]。

三、为所有学生铺平“计算思维”的道路

为了让校园中所有大学生都能够接受“计算思维”,我们就要了解如何才能更好地教授计算学科这一类课程。计算教育领域的研究人员应该探讨人类是如何理解计算思维的,以及他们是如何改善这种理解的。计算教育是人机交互学的一个近亲学科,因为人机交互学的研究人员是探索人类如何与计算机进行交互活动的,以及如何才能改善这种交互活动。计算教育研究人员在国际计算教育研究会(ICER)以及像《计算机科学教育》和《计算教育资源期刊》这类刊物中已经占有了自己的一席之地。

计算教育研究从许多不同学科中汲取了知识和经验,用这些来改善计算教育现状。一些社会学科学家都曾帮助我们了解学生们在我们课堂上的体验(这些体验往往与我们作为教师所预期的效果有所不同),以及如何改变我们的课堂教学,使之更加成功地满足全体学生的需要。计算教育研究人员从教育学、社会学和心理学领域中寻找方法,以便使用这些方法来测量计算学科的学习效果和了解都有哪些因素在影响着这个学习过程。改进了计算教育,我们就可以拓宽计算思维的普及面,增强计算思维的能力。当我们能够以有益于学生们各自学科发展的方式将程序设计和计算理论教给他们的时候,就能够看到,当计算学科得到全面普及后,它将以什么样的势头推动着整个学校的发展。专家们早在50多年前就已经预见到了这一前景。

参考文献:

[1]Perlis,A. The computer in the university[C].M.Greenberger,Ed.,Computers and the World of the Future[M].MIT Press,Cambridge,MA,1962,180–219.

[2]Miller,L.A. Natural language programming:Styles,strategies,and contrasts[J]. IBM Systems Journal,1981,29(2):184–215.

[3]Pane,J.F.,Ratanamahatana,C.,and Myers,B.A. Studying the language and structure in nonprogrammers solutions to programming problems[J].International Journal of Human-Computer Studies,2001,54:237–264.

[4]Sime,M.E.,Arblaster,A.T.,and Green,T.R.G. Structuring the programmers task[J] .Journal of Occupational Psychology,1977,50, 205–216.

猜你喜欢
计算机科学计算计算思维
浅谈计算机科学与技术的现代化运用
重庆第二师范学院计算机科学与技术专业简介
程序设计课程中计算思维和应用能力培养问题研究
浅谈在计算机科学中的创新精神