国外编程教育工具比较分析

2019-12-30 09:37付丽娟熊天爱余亮
中国教育信息化·高教职教 2019年12期
关键词:游戏性教育性计算思维

付丽娟 熊天爱 余亮

摘   要:“人工智能+教育”时代已经来临,编程教育日益受到重视。编程教育工具作为编程教育的辅助,当下成为研究热点。文章采用比较研究法,系统搜集国内外编程教育典型工具,制定比较分析框架,确定评价维度。然后,测试了各个编程教育工具,依据比较分析框架,主要从计算思维、教育性与游戏性三方面进行了比较分析,并归纳其特征。最后,针对我国的编程教育现状,提出开发和使用编程教育工具的建议。

关键词:编程教育;编程教育工具;计算思维;教育性;游戏性

中图分类号:G434 文献标志码:A 文章编号:1673-8454(2019)23-0027-08

一、引言

随着智能技术的飞速发展, 世界各国纷纷开始部署战略规划,试图抢占人工智能领域研究与实践的高地。[1]在2017年国务院印发的《新一代人工智能发展规划》文件中提出,“要实施全民智能教育项目,在中小学设置人工智能相关课程,逐步推广编程教育”。编程教育工具无疑是编程教育的重要辅助工具,能培养学习者的计算思维和问题解决能力。因此,想要大力发展编程教育,就需要合理地开发和使用编程教育工具。

纵观国外编程教育的发展,大都遵循一种自上而下,政、企、社会和学校联动促进的发展模式。[2]从2012年开始,美国、英国、澳大利亚、新加坡、日本、韩国等纷纷开始重视编程教育,相继颁布政策将编程列入中小学的必修课程。[3]此外,由美国非盈利组织Code.org发起的“编程一小时”活动,得到各大企业如苹果、微软、Facebook等的支持,融合多种编程教育工具,让学习者可以使用可视化编程语言,在游戏情境中体验编程思维,学习编程方法。而且,学校作为编程教育的重要场所,不仅积极响应“编程一小时”活动,还将多种编程教育工具灵活运用于课堂教学中。例如,一些中小学教师将编程与其他学科知识进行整合,在生物课堂上用编程教育工具Scratch studio讲解动物特征及其栖息地。

我国教育界也逐渐高度重视青少年编程教育的重要性,社会融资与各类专项资金不断流入编程教育领域,各家互联网教育公司增加了对编程教育工具的研发。[1]但我国编程教育起步较晚,实践与研究总体仍处于初级发展阶段,虽然已经引入国外一些编程教育工具如优必选、编程猫和乐博等,但本土化的改造应用还有待深入,更需要结合本国实际情况,开发和使用具有本国特色的编程教育工具。[2]因此,本文通过文献研究法、比较研究法等,对国外编程教育工具进行充分梳理与分析,以对我国编程教育工具的开发和使用提供一些建议。

二、编程工具比较分析

1.计算思维

编程教育工具是培养儿童计算思维的重要教辅工具。[4]国外学者的研究表明,教育工具让编程容易实现,且非常有吸引力,有助于教孩子如何编程,发展他们的算法和计算思维技能。[5][6]

计算思维(Computational Thinking)是周以真(Jeannette M.wing)教授于2006年3月在美国计算机权威刊物Communications of the ACM上首次提出的。周教授将计算思维定义为:计算思维是运用计算机科学的基础概念进行问题求解、系统设计,以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。[7]针对中小学信息技术教育这一场景,南安普敦大学的Selby博士和Woollard博士关于计算思维的观点更为适用,并且这一观点得到了广泛的认可。[8]他们认为计算思维包括算法思维(Algorithmic Thinking)、评估(Evaluation)、分解(Decomposition)、抽象(Abstraction)、概括(Generalization)五个要素,其具体内涵如表1所示。

2.编程游戏软件的教育性与游戏性

编程教育工具的主要作用是培养中小学生的计算思维和问题解决能力,其必然具备一定的教育性。教育性主要体现在,当学生使用某种教育工具时,一般出于特定的学习动机,例如培养他们的编程能力或训练逻辑思维等。然后,在使用的过程中,通过工具反馈的知识信息可以促进学生的成长,培养他们的知识、技能、智力、情感、态度、价值观等。此外,教师可以借助编程教育工具辅助教学,灵活运用于教学环节中。

现有的针对中小学生的编程教育工具多为游戏闯关的形式,包括故事情节、角色、各种挑战任务等多种多样的游戏性因素,具有游戏的趣味性、挑战性、刺激性等特征。在借助编程教育工具学习时,这些特征可以提高学生的学习兴趣从而提升学习效率。可见,编程教育工具以教育为目的,以游戏为手段,既满足学生“玩”的需求,又让他们在玩的时候“学”到一些知识,做到了融教育性、游戏性于一体。[9]

通过文献调查,笔者参考了教育软件的比较分析后,认为编程游戏软件主要是从教育性和游戏性两个维度进行研究的,如国外学者Annetta、Lamb& Stone在2011年提出的评价标准中,包括互动、反馈、沉浸感、控制感、难度、规则、学习内容、学习目标、教学效果等指标。[10]而国内学者如范云欢、崔金英在2008年的研究中提出的评价维度包括教育性、游戏性和技术性三个方面。因此,本文从教育性和游戲性两个维度进行评价。其中教育性包括知识反馈明确及时、关卡设计有逻辑、内容可靠形式灵活多样、学习目标清晰四个子维度;游戏性包括适度的挑战、合理的激励、可选择学习内容、有吸引力的情节、明确的游戏规则五个子维度。各子维度的具体内涵如表2所示。

三、编程教育工具比较分析

1.编程教育工具的搜集与筛选

首先,本文通过文献调查法收集了若干编程教育工具。其次,通过搜索热门应用商店,关注了主流的移动平台和桌面平台上易于访问的软件工具。最后,通过国际搜索引擎搜集大众推荐较多的工具。经以上三种途径,共得到31个适合中小学生使用的编程教育工具。为保证每款工具的可用性和适用性,笔者测试了所有可获取的工具,并浏览工具简介、使用情况与评论,以确定每款工具的基本信息及编程主题,将已经过时的和无法访问的工具过滤掉,同时按照确定的评价维度对工具进行评判。最终确定了16款国外的编程教育工具,并提供其基本信息,主要包括发行时间、类型、平台、语言、块或文本、适用年龄和编程基础,以使学生、家长或教师能够选择更加适合自身情况的编程教育工具。如表3所示。

编程教育工具的作用是帮助学生学习编程知识,应具有基本的编程主题——变量、条件、循环和方法。就各个工具的编程主题,笔者进行了如表4所示的统计。

2.编程教育工具比较

(1)基本信息比较分析

通过对编程教育工具的类型、平台、语言、代码呈现形式、适用年龄和编程基础的比较分析可以发现:

第一,工具类型多为益智型,比较单一。虽然故事情节、学习内容和挑战任务不同,但工具的操作和类型都大同小异。尤其是很多基于块的编程教育工具,其代码块的形状不同,有的是不同指向的箭头,有的是表征一个动作的图标,但具体操作都是先将这些代码块进行组合,然后验证对象的运动过程是否正确。值得一提的是,其中一个工具用代码块来填空,例如在某一关卡中,需要选择一个卡通眼睛,当学习者写到“选择娃娃眼睛”的代码时,会弹出一系列小球眼睛,供用户选择,如图1所示。这种形式较为新颖,易于学习者理解。

第二,平台兼容性较强。过半的编程教育工具都有移动端,便于学习者随时随地使用。一半以上的工具拥有网页端,进入网页即可使用工具,无需专门下载。基本上所有工具都支持IOS系统。

第三,国外的编程教育工具基本只支持本国官方语言和英语,仅有少数工具支持多种语言,其中支持中文的仅有3个。由此可见,我国还需大力加强自主开发编程教育工具的力度。

第四,在代码的呈现上,工具中有11个仅支持基于块的编程,有4个仅支持基于文本的编程,只有1个是既有块的编程又有文本的编程,这类编程教育工具更能满足学习者的需求,促进学习者对编程知识的理解。例如Blockly Games先是让学习者使用块进行编程,每完成一关就会弹出提示,提示内容为本次关卡中用到的代码块所对应的文本代码。在最后的几关中让学习者使用文本进行编程。

第五,从适用年龄方面来看,几乎所有的工具都适合K12学生使用,即适合年龄在4~18岁的用户使用。过半的工具使用年龄为4岁以上,相对而言,这些工具比较简单,适合初学者使用。

第六,就编程基础而言,一些工具针对不同年龄段的学生设置了不同难度的挑战。例如,Tynker Games分了三个年龄段,分别为初学者、中级、高级。其次,适用年龄在4岁以上或者5岁以上的工具不要求编程基础,一些适用年龄较高的工具,则要求用户有一定的编程基础,如Coding games,该工具甚至为资深程序员提供了进阶挑战。

(2)编程主题比较分析

在所调查的工具中,有6个工具的学习内容包含了以上所有基本的编程主题,另外10个只包含部分编程主题。在编程主题的呈现形式上,Light-Bot、Turtle Academy等将变量、条件、循环、方法以主题的形式作为独立的关卡;Cargo-Bot、Scratch studio等没有明確地将它们分离出来,而是将其融入到实际的游戏情境当中。

不同编程教育工具要求学习者掌握基本编程主题的程度不同。以循环为例,个别工具只要求用户知道需要使用循环,但用户不用计算具体的循环次数;大多数工具都会让用户在使用循环时,考虑需要循环的次数,此方式比前一种对学习者的要求更高。

每个工具的编程主题中相应指令的呈现方式也有所不同。首先,就变量而言,在基于文本的工具中,直接以高级语言中声明变量的形式来定义变量,包括定义变量的类型、名称等;而在基于块的工具中,用户只需点击创建变量的按钮,并给其命名,无需考虑其他规则。其次,“条件”结构的呈现形式也各不相同。文本类编程工具中的条件语句与高级语言类似,需要满足一定的语法规则。而在基于块的工具中,条件语句可以用一个特定的代码块来表示,如Cargo-Bot、Robozzle、Kodable用不同颜色的代码块作为条件,如图2所示。此外,在循环结构方面,基于文本的游戏,直接以代码的形式呈现循环,这种方式比较抽象,不易于理解;而基于块的工具会以形象具体的图形、图标来呈现循环结构,如图3所示。最后,在方法方面,大部分基于块的工具限制了主函数的代码数量,当完成目标所需代码块过多时,用户只有通过将部分指令写在某一方法中,然后在主函数中调用方法。

(3)计算思维、教育性与游戏性的比较分析

根据确定的比较框架,下文主要从编程教育工具的计算思维和教育性与游戏性这三个方面进行比较分析。计算思维一经提出便受到各界的广泛关注,我国也受到国际计算机协会(ACM) CC2001(计算机课程)课程体系(草案)的影响,越来越重视培养儿童的计算思维。编程教育工具是培养儿童计算思维的重要教辅工具。因此,将其作为评判一个编程教育工具的标准,按照计算思维包括的五个要素——算法思维、分解、抽象、概括、评估对编程工具做出以下分析,如表5所示。

在测试的所有工具中,全都体现了算法思维的培养。即所有工具都是让用户通过明确定义的步骤来解决问题。

对于问题的分解,以上编程教育工具几乎都体现了问题分解的过程,即学习者需事先对任务进行分解,将一个大的目标分解为若干个小目标,通过完成小目标实现最终目标。如Kodable、Code Karts等需用户在到达终点前,完成通过每一个转角的小目标,如图4所示;Turtle Academy中控制乌龟画倒置的L,将问题分解为前进50个单位、转弯、前进50个单位,如图5所示。在程序运行的过程中,很多工具都会突出显示正在被运行的代码块。

就抽象和概括而言,抽象和概括是形成概念的两个过程,概括是抽象的结果,抽象是概括的前提。由此可知,工具中将各种编程的基本主题(变量、选择、循环、方法等)专门呈现出来,让用户感知、理解、学习,其中既有抽象的过程也有概括的过程。测试的工具均有针对各种基本主题的专门训练,故它们都能一定程度地培养学生的抽象能力和概括能力。

除了以上四个因素外,计算思维还包括评估,即用户对自己编写程序的有效性、简洁性等的反思和评价。在目前测试的工具中,只有小部分能够根据用户代码的运行时间、冗余度给出相应的反馈。例如完成任务时,用获得星星数量作为用户代码质量的反馈。此外,还有个别工具会给出较为详细的反馈信息,在Cargo-Bot中会提示用户每关最优解决方案。

除计算思维这一重要因素外,教育性与游戏性的融合也是编程教育工具成功的关键和难点。过分强调教育性,缺乏游戏性,则无法吸引学生的兴趣;过分强调游戏性,教育的内容没有与游戏活动有机结合,则容易把学生的注意力吸引到无意义的游戏活动中,从而无法实现教育目标。因此,本文对编程教育工具的教育性与游戏性做出的分析如表6所示。

通过以上比较可以发现,在知识反馈方面,只有个别工具的知识反馈明确及时,具体表现为:在关卡结束时,通过及时的反馈信息反映用户的代码是否高效。这一点可以灵活地运用于教师的课堂。调查发现,国外一些教师让學生先自行完成挑战,然后根据工具给出的评价反馈相互讨论最佳解决方案。在关卡设计逻辑方面,几乎所有工具的难度都层层递进,编程知识逐步加深,符合学生的一般认知规律。在Ruby Worrior中,将难度划分为初级和中级。工具的编程知识都具有一定的科学性,但在内容形式方面差异较大。例如,Blockly Games有迷宫、鸟、乌龟等不同主题的闯关,内容形式丰富多样;Robozzle内容形式单一。就学习目标而言,多数工具目标清晰。基于块的工具更侧重于锻炼学生的编程思维,基于文本的工具更多地是锻炼学生代码编写的能力。

首先,在工具的难易度方面,多数难度适中,个别难度较大。例如Coding games以及Light-Bot靠后的关卡,难度过大,很可能打消学习者的积极性。其次,大多工具都有一定的激励机制。在Save The Animals:Coding Game中,学习者可以通过闯关获得勋章;还有一些工具奖励星星。这样能激励学生继续挑战。此外,有10个工具可以选择学习内容,即用户可以自主地选择关卡,而非只能按照既定的路线闯关,这增加了他们的控制权。8个工具的故事情节具有趣味性和吸引力。如Tynker Games探索宇宙和谱写乐曲的故事情节。最后,在规则方面,除了Robozzle和Digital Puppet-Programming之外,其余工具均有较清晰的规则。多数是初次使用时,提供新手引导,仅个别工具用专门版块来介绍规则。

四、编程教育工具的开发与使用建议

我国编程教育正处于起步发展阶段,编程教育工具的发展相对滞后,而国外编程教育起源较早,第一款编程教育工具Logo诞生于1968年,至今,已有半个多世纪的发展历史。[11]结合本研究对国外编程教育工具的比较分析结果与我国的基本情况,笔者对我国编程教育工具的开发和使用提出以下建议:

1.开发编程教育工具的建议

第一,教育性方面,编程教育工具中需具备完整的知识体系。在测试的工具中,只有少数包含了所有最基本的编程主题。如果工具包含的主题不完整,即知识体系不完整,就无法支撑编程教育的开展。

除了编程主题的完整性,编程教育工具中还需增加编程知识讲解。在工具体验过程中,笔者发现很多工具都没有知识讲解或帮助提示,例如:在闯关过程中,到达一定关卡时,会突然出现循环结构。学习者要使用该结构继续闯关,但没有说明其作用和具体的使用方法。在这种情况下,有编程基础的使用者可以轻松通过,但是初学者可能难以理解,进而对游戏规则感到疑惑。对于编程教育工具,开发者不能过于注重游戏性而忽视教育性,而应该以教育为目的,以游戏为手段,在开发设计中引导学生学习并运用编程知识。

另外,不同学习者的认知发展阶段和认知结构不同,因此在开发工具时要明确适用对象,因材施教。例如年龄较小的或初学者可以用块和代码相结合的方式来呈现编程知识。

第二,游戏性方面,开发者需要设计出类型和内容更加多样化的工具。当前编程教育工具类型较为单一,加之基于块的编程工具操作过程都比较相似,这使大部分游戏缺少创新性和趣味性,不易于凸显工具特色。开发团队可适当增加有趣的游戏情境或元素,以增加工具的趣味性。例如,Save The Animals :Coding Game将保护野生动物的观念与编程结合,以解救动物为故事情境,设计了自然保护区和成就版块,可以有效地激发学生的学习兴趣。此外,虽然随着时代的发展,很多游戏趋于白痴化,用户可以通过自行探索解决问题。但对于初学者而言,编程知识是具有一定难度的,开发者有必要提供更详细的游戏规则和帮助文档,避免用户需要花太多的时间去摸索,或者困于某一关卡无法前进,进而打击用户的积极性。游戏规则的说明设计可以有多种形式,借助多种媒体,例如可以是文字或图文结合形式的说明文档,可以是规则说明的视频等。这样才能符合不同用户的多样化需求。

第三,在计算思维方面,注重培养学生评估代码的能力。从分析结果发现,大部分编程教育工具没有重视计算思维中评估这一要素。例如,Digital Puppet-Programming用获得的星星个数作为游戏的反馈,一共有三颗星星,当学习者通关时,系统会根据代码的高效性决定获得星星的数目,这样的反馈信息过于简单,且不能凸显编程游戏特色,任何闯关游戏都可以用星星个数作为反馈信息。评估有助于学习者养成反思的习惯,提高批判性思维能力。开发者需要在游戏中利用反馈信息提醒学生评估从而改进自己的代码,反馈信息需尽量详细,例如可以指出本次关卡中最优代码、代码的最优运行速度和学习者编写的代码的运行速度等。

第四,课程整合方面,开发者需要开发与课程高度契合的编程教育工具。目前,很少有工具是为了配合课程而开发的,导致教师在使用时需要花费大量精力去挑选合适的工具。因此,教育软件公司可以与学校建立合作关系,了解学校的需求,开发与课程配套的工具。还可以开发具有家、校、学生三端的编程教育工具。

2.使用编程教育工具的建议

第一,根据不同年龄段,选择合适的编程教育工具。

初级阶段(4~8岁)是年龄较低的学生,他们几乎没有编程基础,并且认知成熟度不高,不具备很强的抽象和逻辑推理能力,所以该阶段主要侧重于启蒙与思维模式的培养,让他们了解计算机基础知识,培养编程兴趣,培养对逻辑顺序的认知,熟悉并学会运用程序思维,如抽象、分类、分解等,而对学习编程语言的要求不高。因此,可以选择基于块或块与文本相结合的编程工具。基于块的工具将各种指令用不同的箭头或者图案来代替,更形象具体,操作也更加简单。

在中级阶段(8~12岁)学生已经有了一定的编程基础,具备了一定的思维模式,可以开始系统地学习编程。该阶段的学习内容包括基本的编程知识和高级的技巧等。学生可以选择一个合适的平台进行系统学习或者选择可以进行作品创作的工具,例如Scratch Tutor、Kodable等。

在高级阶段(12岁以上)学习者对编程有了一定的兴趣,可以根据自己的兴趣选择一门语言深入学习。但编程具有一定难度,涉及的知识面非常广泛,仅有兴趣是不够的,还需要具有一定的毅力来学习更多的知识(数学、物理等)进而不断提高学习者的编程能力。这一阶段的学生可以选擇基于文本的编程,例如Coding games。

第二,适当利用编程教育工具的游戏性,提高编程课堂的趣味性。

当下,在编程教学课堂中,教学者更偏向程序语言基础知识的讲解和传授,课堂教学枯燥乏味,学习者的学习积极性不高。[12]游戏化学习可以有效地增加课堂趣味性,提升学生的学习兴趣。2018年教育部发布了规范入校APP、手机和平板电脑进课堂的有关规定,这些规定表明国家正在大力推行智慧校园,实现信息化教学环境,这为编程教育工具的使用提供了条件。[13]不止我国,世界多个国家和地区也对游戏在教育中的作用给予了高度重视。欧盟、英国、美国等大部分教师支持在课堂上使用游戏。合理地运用游戏,可以提升课堂趣味性,从而提升学习效果。

首先,在讲解具体编程概念前,通过工具引导学生理解。编程中的概念往往比较抽象,比如循环、方法等。但编程具有可操作性,并且可以通过调试得到一定的结果。教师可以在讲授知识前,让学生动手操作工具,体验相应的编程主题,给学生提供先行组织者材料,有助于理解具体的概念。

其次,把握好学生自行动手和知识讲解的平衡点。鉴于很多工具不具备符合认知发展的知识体系以及并非针对具体的学校课程开发的,因此教师在让学习者动手玩游戏的同时还需要补充知识点。具体表现为需要提前讲解一些知识,再让学生操作,或者在学习者操作工具的过程中补充需要的知识。

最后,注重培养学生准确评价代码的能力。评估是计算思维的五要素之一,但测试的工具中,仅个别工具引导学习者评估自己编写的代码(块)。所以,教师在使用编程教育工具时不能完全依靠工具,需要引导学生从代码的准确性、高效性(代码执行时间)、简洁性(代码多少)、便捷性等方面对自己编写的代码进行评价和反思。

第三,在使用编程教育工具的过程中,培养学生的自制力。

即使教育工具有一定的教育意义,但也不能过度沉迷。这些工具让学生有了接触网络的机会,他们很容易迷失在网络虚拟的世界中,从而无法控制自己学习的时间。教师在使用工具进行教学的同时需要引导学生合理使用。编程教育工具能够传达的教育知识是有限的,真正系统的知识学习还需教师在课堂上讲解。

五、结束语

本文搜集了国外典型的编程教育工具,并根据笔者确立的评价维度,对各个工具进行比较分析,再结合我国实际情况提出了开发和使用编程教育工具的建议。但搜集到的编程教育工具都源自国外,缺乏中西方工具的比较分析。此外,本文确定的比较分析维度不够全面,缺乏编程教育工具使用者的评价反馈。最后,随着时代的发展,编程教育工具的应用必将越来越广泛,我国需要加强对其进行开发与研究,让编程教育工具灵活运用于课堂,不断助推我国中小学编程教育的发展。

参考文献:

[1]孙丹,李艳.国内外青少年编程教育的发展现状、研究热点及启示——兼论智能时代我国编程教育的实施策略[J].远程教育杂志,2019(3):47-60.

[2]魏晓风,蒋家傅,钟红,韩奇.我国中小学编程教育发展的路径思考[J].中国教育信息化,2018(24):1-4,9.

[3]Renny S.N.Lindberg,Teemu H.Laine,&L.Haaranen.Gamifying programming education in K‐12: A review of programming curricula in seven countries and programming games[J].British Journal of Educational Technology,2018.

[4]蒋希娜,黄心渊.指向计算思维能力培养的儿童编程游戏设计[J].现代教育技术,2019(3):119-126.

[5]Khaled A,Moanis T,Jamal R.Primary School Pupils Attitudes toward Learning Programming through Visual Interactive Environments[J].World Journal of Education, 2016,6(5).

[6]Koracharkornradt C.Tuk Tuk:A Block-Based Programming Game[C].Conference on Interaction Design & Children. ACM,2017.

[7]Jeannette M.Wing.Computational Thingking[J].Communications of the ACM ,2006, 49(3):33-35.

[8]谢忠新,曹杨璐.中小学信息技术学科学生计算思维培养的策略与方法[J].中国电化教育,2015(11):116-120.

[9]周浩慧.教育游戏:一种寓教于乐的新方式[J].电脑知识与技术,2009(8):1958-1959.

[10]沈娟.中美教育游戏评价指标体系比较研究[D].杭州师范大学,2015.

[11]孙立会,周丹华.国际儿童编程教育研究现状与行动路径[J].开放教育研究,2019(2):23-35.

[12]牟琴.“轻游戏”对计算思维能力的培养——教育游戏对程序设计基础课程教学的影响[J].远程教育杂志,2011(6):94-101.

[13]蒋宇,赵永乐.教育游戏能否提升学习效果[N].中国教育报,2019-04-06(003).

(编辑:王天鹏)

猜你喜欢
游戏性教育性计算思维
游戏性练习法在短跑教学中的应用分析
回归儿童本性 让音乐课更有情怀——小学音乐游戏性课堂教学的有效策略
浅析游戏性幼儿舞蹈教育
程序设计课程中计算思维和应用能力培养问题研究
如何在教学活动中贯彻教学的教育性
浅议教学的教育性与教育的教学性