编译:麦娟漫 东南大学脑与学习科学系
研究生导师:李骏扬 柏毅 夏小俊
作者:Nathalia DA CRUZ ALVES; Christiane GRESSE VON WANGENHEIM; Jean C.R. HAUCK
【摘要】: 随着计算已经成为我们世界不可分割的一部分,在K-12教学计算思维的需求也在增加。它的基本能力之一是编程,通常通过学习活动来教授,而没有使用基于块的可视化编程语言的预定义解决方案。自动评估工具可以支持教师进行评估和评分,并指导学生的整个学习过程。尽管这种方法已经广泛应用于高等教育,但尚不清楚K-12计算机教育是否也存在这种方法。因此,为了获得一个概述,我们进行了系统的映射研究。我们确定了14种方法,重点是分析由学生创建的代码,推断与算法和编程有关的计算思维能力。然而,在评估标准和教学反馈方面明显缺乏共识,这表明需要进一步研究来支持K-12学校的广泛应用计算机教育。
【关键词】:评估;代码分析;基于块的可视化编程语言;计算思维;K-12教育
01、介绍
数字时代已经改变了世界和劳动力,使计算和IT 技术成为我们日常生活的一部分。在这种情况下,公民必须清楚地了解计算机科学的原理和实践。因此,世界各地出现了一些普及计算教学的举措,包括将其纳入K-12教育。学校的计算机教学侧重于计算思维,这是指将解决方案表达为计算机可以执行的计算步骤或算法。它涉及通过借鉴计算机科学的基本概念来解决问题、设计系统和理解人类行为。计算机通常是通过创建、测试和完善计算机程序来进行教授的。在K-12 教育中,基于块的可视化编程语言,如Scratch、Blockly、BYOB/Snap!或App Inventor可以用来教授编程。通常,编程课程包括动手编程活动,让学生实践和探索计算概念作为学习过程的一部分。这包括不同类型的编程活动,包括存在正确解决方案的封闭式和开放式问题。许多计算思维活动也专注于为现实世界的问题创造解决方案,其中解决方案是软件构件,如游戏/动画或移动应用程序。
编程练习的自动评分和评估工具已经在高等教育中以多种方式使用。它们通常涉及静态和/或动态代码分析。静态代码分析在不执行程序的情况下检查源代码。它被用于编程风格评估、语法和语义错误检测、软件度量、结构或非结构相似性分析、关键字检测或抄袭检测等。动态方法侧重于通过一组预定义的测试用例来执行程序,将生成的输出与预期的输出(由测试用例提供)进行比较。动态分析的主要目的是发现执行错误和评估程序的正确性。
02、相关工作
考虑到自动化的支持对计算机教育中实际编程活动评估的重要性,对自动化评估方法有一些综述。这些评论分析了各个方面,如反馈生成,实施方面以及这些工具对学习和教学的影响。Ala-Mutka(2005)概述了几种自动评估技术和方法,解决了评分方面以及工具提供的教学反馈。Ihantola等人(2010)对规划活动的评估工具进行了系统回顾。从技术和教学的角度对这些方法进行了讨论。Romli等人(2010)描述了教育工作者如何在高等教育中教授编程,并指出了动态或静态分析的偏好。Caiza和Del Alamo(2013)分析了与自动评分方法实现相关的关键特征,包括逻辑架构、部署架构、用于显示该方法如何建立评分的评估指标,以及该方法使用的技术。Striewe和Goedicke(2014)提出了面向对象编程中自动化分析的技术结果与教学效益和反馈生成之间的关系。Keuning等人(2016)回顾了自动反馈的生成。他们还分析了性质,用于产生反馈的技术,教师创建活动和影响反馈的工具的适应性,并综合关于工具提供的评估质量和有效性的发现。
然而,这些现有的评论集中在评估在高等教育计算机教学环境中使用基于文本的编程语言创建的代码的方法上。不同的是,本文的目标是对K-12教育背景下基于块的可视化编程语言评估编程活动的现有方法进行深入分析。
03、系统映射研究的定义和执行
为了引出评估K-12教育中学生使用基于块的可视化编程语言开发的计算机程序的方法的现状,我们按照彼得森等人(2008)定义的程序进行了系统映射。
3.1. 审查方案的定义;
研究问题:在K-12教育背景下,有哪些方法可以评估(和评定)基于块的可视化编程语言创建的代码的编程活动?
我们将这个研究问题细化为以下分析问题。
l 方案分析
AQ1: 存在哪些方法?它们有什么特点?
AQ2: 分析了哪些与计算性思维相关的编程概念?
AQ3: 如何分析这些编程概念与计算思维的关系?
l 教学反馈和评估
AQ4: 如何产生分数?
AQ5: 以何种方式呈现教学反馈?
l 评估的自动化
AQ6: 该方法是否已经自动化,以及如何实现自动化?
数据来源:我们检查了Scopus上所有发表的英语文章,Scopus是最大的同行评审文献摘要和引用数据库,包括ACM、Elsevier、IEEE和施普林格的出版物,可以通过cape Portal1免费访问。
纳入/排除标准:我们只考虑针对基于块的可视化编程语言方法的研究。而且,虽然我们的主要关注点是K-12教育,但我们也包括了涵盖K-12中常见概念的方法,但这些概念可能已经用于其他教育阶段(如高等教育)。我们考虑了在过去21年间发表的文章,从1997年1月(第一个基于块的编程语言被创建的第二年)到2018年8月。我们排除了分析使用基于文本的编程语言编写的代码的方法,评估算法和基于学生开发的代码以外的其他来源的编程概念/实践,如测试、问卷调查、访谈等,或在教育背景之外执行代码分析,如软件质量评估。
质量标准:我们只考虑那些关于所提出的方法的实质性信息的文章,以便能够提取与该方法有关的信息。
搜索字符串的定义:根据我们的研究目标,我们通过识别核心概念以及表1所示的同义词来定义搜索字符串。选择术语“代码分析”,因为它表达了要搜索的主要概念。术语“静态分析”、“评分”和“评估”通常用于这种代码分析的教育环境中。选择术语“可视化编程”是为了限制对可视化编程语言的搜索。我们还包括在K-12中使用的著名可视化编程语言的名称作为同义词。使用这些关键字,搜索字符串已经按照表2中所示的数据源的特定语法进行了校准和调整。
3.2. 执行查册
该搜索已由第一作者于2018年8月执行,并由共同作者进行了修改。在第一个分析阶段,我们快速审查了标题、摘要和关键词,以确定符合排除标准的论文,根据搜索结果产生了36篇潜在相关的文章。在第二步选择中,我们分析了预选文章的全文,以检查它们是否符合纳入/排除标准。所有作者都参与了论文的选择过程,并讨论了论文的选择,直到达成共识。表3列出了选择过程中每个阶段找到和选择的文章数量。
在搜索中遇到的许多文章都不在我们的研究问题的焦点之外,我们的研究问题旨在其他形式的评估,如测试或其他类型的性能结果。几篇分析其他问题的文章也被省略了,如,新手使用可视化编程语言编程的方式或Scratch程序中的常见错误。其他文章被排除在外,因为它们描述了程序理解的方法,而不是对学生成绩的评估。我们发现大量的文章给出了评估使用基于文本的编程语言创建的代码的方法,没有考虑基于块的可视化编程语言,因此被排除在外。提出评估不包括算法和编程的其他主题的方法的文章,如快乐和内容创新,也被排除在外。由于质量标准,满足所有纳入标准,但没有就分析问题提供足够信息的完整文章或正在进行的工作已被排除。我们总共确定了23篇与我们的研究问题相关的文章(表4)。
04、数据分析
为了回答研究问题,我们提出了关于每个分析问题的研究结果。
4.1. 存在哪些方法?它们的特点是什么?
我们找到了23篇相关文章,描述了14种不同的方法,其中一些文章只是从不同的角度展示了相同的方法。大多数方法都是为了评估用Scratch创建的代码而开发的。这些方法也因其所针对的编程活动类型而有所不同。
4.2. 哪些与计算思维相关的编程概念被分析?
所有的方法都进行了代码分析,目的是衡量编程概念的能力,作为评估计算思维的一种方式。执行面向产品的分析,分析代码本身,这些方法寻找与计算思维实践相关的算法和编程概念的指标。根据CSTA K-12计算机科学框架,大多数方法分析了与核心概念算法和编程相关的五个子概念中的四个:控制、算法、变量和模块化。尽管没有直接测量计算思维的所有维度,但这些方法打算通过特定算法和程序命令的存在来测量算法和编程概念,从而间接地评估计算思维。其他方法,如CTP ,分析计算思维模式,包括生成、碰撞、运输、扩散和爬坡。
4.3. 如何分析这些与计算思维相关的编程概念?
这些方法以不同的方式分析代码,包括自动静态或动态代码分析或人工代码分析。大多数遇到的方法都使用静态代码分析。这也与分析的类型取决于编程活动的类型这一事实有关。只有在开放式的结构良好的问题和预先已知的解决方案的情况下,才有可能将学生的程序代码与给定问题的正确实现的表示进行比较,从而允许动态代码分析。所有专注于分析具有开放式结构不良问题的活动的方法都基于静态代码分析,检测命令块的存在。
4.4. 这些方法如何提供教学反馈?
对学生的计算思维能力的评估是通过使用不同形式的评分。有些方法使用二分法的评分属性,将程序的正确性作为一个整体来评估。一个例子是Quizly,它可以测试学生的程序,然后显示一个信息,说明程序的正确性或错误性。
4.5. 这些方法是自动化的吗?
只有少数方法通过软件工具实现了自动化的。大多数自动化方法执行静态代码分析。很少有方法使用动态代码分析来评估学生的解决方案。这些软件工具似乎通常是针对教师和/或学生的。很少有例外,也为管理员或机构代表提供功能。
一般来说,遇到的文献中没有介绍工具的实施细节,只有少数例外。Hairball是使用面向对象范式在Python中开发的一组脚本,因此可以扩展和适应于评估特定的任务。Dr. Scratch是在Hairball基础上实现的。它已经用Python语言实现,用于从Hairball开发插件。后端系统使用Java8实现,运行在Apache Tomcat 8应用服务器上,使用MySQL5.7数据库。对工具的访问可以通过脚本、web或桌面应用程序的形式进行。
05、讨论
考虑到自动化支持编程活动评估的重要性,以便在K-12教育中广泛实施计算教学,到目前为止,只有很少的方法存在。大多数方法都专注于分析Scratch代码,它是目前使用最广泛的基于块的可视化编程语言之一。对于其他基于块的可视化编程语言,遇到的解决方案很少。
通过基于对学生创建的代码分析的基于性能的评估,这些方法推断出基于代码的计算思维概念和实践的评估,特别是与算法和编程概念相关的评估。这解释了对编程相关能力分析的强烈强调,通过大多数方法评估算法和编程子概念,如算法、变量、控制和模块化,作为计算思维能力的一部分。其他元素,如可用性、代码组织、文档、美学或创造力,只能通过手工方法进行评估。基于代码分析的方法可以被认为是评估计算思维的一种手段,特别是当自动化时,教师可以将注意力集中在补充的评估方法上,而不是被认为是唯一的评估方法。
这些结果表明,虽然存在一些准时的解决方案,但不仅在自动化评估工具方面,而且在计算思维评估策略的概念定义方面,相对于算法和编程的概念,仍存在相当大的差距。由于映射研究的结果,可以确定该领域的几个研究机会,包括为各种基于块的可视化编程语言定义良好的评估标准,特别是用于评估针对不同类型应用程序(游戏、动画、应用程序等)开发的开放式不明确活动。一个改进的机会似乎是以一种建设性的方式提供更好的教学反馈,有效地指导学生提高学习。我们还发现,从幼儿园到12年级,K-12教育的不同阶段之间缺乏差异,不同教育阶段的学习需求发生了显著变化。
06、结论
在这篇文章中,我们介绍了在K-12教育中评估学生使用基于块的可视化编程语言开发的计算机程序的方法的现状。我们确定了23篇相关文章,描述了14种不同的方法。大多数方法都集中在评估Scratch, Snap!或App Inventor程序,对于其他基于块的编程语言只有单一的解决方案。通过基于对学生创建的代码分析的基于性能的评估,这些方法通过使用静态、动态或手动代码分析来推断计算思维能力,特别是与算法和编程概念相关的能力。大多数方法分析与算法和编程直接相关的概念,而一些方法也分析其他主题,如设计和创意。这些方法通常以基于代码分析的分数形式提供反馈,包括针对单个领域/概念的二分或多分分数,以及提供一般结果的复合分数。只有少数方法明确提供了关于如何改进代码和/或使用游戏化元素(如徽章)的建议或技巧。分析的结果是,在评估标准和教学反馈方面缺乏共识,以及对更广泛的基于块的编程语言的这种支持的需求变得明显。我们还观察到,这些方法在教育环境中缺乏背景化。这些结果表明,为了支持K-12学校计算机教育的广泛应用,需要进一步的研究。
本文是Nathalia DA CRUZ ALVES, Christiane GRESSE VON WANGENHEIM, Jean C.R. HAUCK学者于2019年发表于Informatics in Education(教育中的信息学)的论文。
DOI:10.15388/infedu.2019.02
转自:“百研工坊”微信公众号
如有侵权,请联系本站删除!