当前位置: X-MOL 学术arXiv.cs.CY › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Synthesizing Tasks for Block-based Programming
arXiv - CS - Computers and Society Pub Date : 2020-06-17 , DOI: arxiv-2006.16913
Umair Z. Ahmed, Maria Christakis, Aleksandr Efremov, Nigel Fernandez, Ahana Ghosh, Abhik Roychoudhury, Adish Singla

Block-based visual programming environments play a critical role in introducing computing concepts to K-12 students. One of the key pedagogical challenges in these environments is in designing new practice tasks for a student that match a desired level of difficulty and exercise specific programming concepts. In this paper, we formalize the problem of synthesizing visual programming tasks. In particular, given a reference visual task $\rm T^{in}$ and its solution code $\rm C^{in}$, we propose a novel methodology to automatically generate a set $\{(\rm T^{out}, \rm C^{out})\}$ of new tasks along with solution codes such that tasks $\rm T^{in}$ and $\rm T^{out}$ are conceptually similar but visually dissimilar. Our methodology is based on the realization that the mapping from the space of visual tasks to their solution codes is highly discontinuous; hence, directly mutating reference task $\rm T^{in}$ to generate new tasks is futile. Our task synthesis algorithm operates by first mutating code $\rm C^{in}$ to obtain a set of codes $\{\rm C^{out}\}$. Then, the algorithm performs symbolic execution over a code $\rm C^{out}$ to obtain a visual task $\rm T^{out}$; this step uses the Monte Carlo Tree Search (MCTS) procedure to guide the search in the symbolic tree. We demonstrate the effectiveness of our algorithm through an extensive empirical evaluation and user study on reference tasks taken from the \emph{Hour of Code: Classic Maze} challenge by \emph{Code.org} and the \emph{Intro to Programming with Karel} course by \emph{CodeHS.com}.

中文翻译:

基于块的编程的综合任务

基于块的可视化编程环境在向 K-12 学生介绍计算概念方面发挥着关键作用。这些环境中的关键教学挑战之一是为学生设计新的练习任务,以匹配所需的难度级别并练习特定的编程概念。在本文中,我们将合成可视化编程任务的问题形式化。特别地,给定一个参考视觉任务 $\rm T^{in}$ 及其解决方案代码 $\rm C^{in}$,我们提出了一种自动生成集合 $\{(\rm T^{ out}, \rm C^{out})\}$ 的新任务以及解决方案代码,使得任务 $\rm T^{in}$ 和 $\rm T^{out}$ 在概念上相似但在视觉上不同。我们的方法基于认识到从视觉任务空间到其解决方案代码的映射是高度不连续的;因此,直接改变参考任务 $\rm T^{in}$ 来生成新任务是徒劳的。我们的任务合成算法首先通过变异代码 $\rm C^{in}$ 来获得一组代码 $\{\rm C^{out}\}$。然后,该算法对代码 $\rm C^{out}$ 进行符号执行以获得视觉任务 $\rm T^{out}$;此步骤使用蒙特卡罗树搜索 (MCTS) 程序来指导符号树中的搜索。我们通过对 \emph{Hour of Code: Classic Maze} 挑战的参考任务进行广泛的实证评估和用户研究来证明我们算法的有效性 {Code.org} 和 \emph{Intro to Programming with Karel \emph{CodeHS.com} 的课程。我们的任务合成算法首先通过变异代码 $\rm C^{in}$ 来获得一组代码 $\{\rm C^{out}\}$。然后,该算法对代码 $\rm C^{out}$ 进行符号执行以获得视觉任务 $\rm T^{out}$;此步骤使用蒙特卡罗树搜索 (MCTS) 程序来指导符号树中的搜索。我们通过对 \emph{Hour of Code: Classic Maze} 挑战的参考任务进行广泛的实证评估和用户研究来证明我们算法的有效性 {Code.org} 和 \emph{Intro to Programming with Karel \emph{CodeHS.com} 的课程。我们的任务合成算法首先通过变异代码 $\rm C^{in}$ 来获得一组代码 $\{\rm C^{out}\}$。然后,该算法对代码 $\rm C^{out}$ 进行符号执行以获得视觉任务 $\rm T^{out}$;此步骤使用蒙特卡罗树搜索 (MCTS) 程序来指导符号树中的搜索。我们通过对 \emph{Hour of Code: Classic Maze} 挑战的参考任务进行广泛的实证评估和用户研究来证明我们算法的有效性 {Code.org} 和 \emph{Intro to Programming with Karel \emph{CodeHS.com} 的课程。此步骤使用蒙特卡罗树搜索 (MCTS) 程序来指导符号树中的搜索。我们通过对 \emph{Hour of Code: Classic Maze} 挑战的参考任务进行广泛的实证评估和用户研究来证明我们算法的有效性 {Code.org} 和 \emph{Intro to Programming with Karel \emph{CodeHS.com} 的课程。此步骤使用蒙特卡罗树搜索 (MCTS) 程序来指导符号树中的搜索。我们通过对 \emph{Hour of Code: Classic Maze} 挑战的参考任务进行广泛的实证评估和用户研究来证明我们算法的有效性 {Code.org} 和 \emph{Intro to Programming with Karel \emph{CodeHS.com} 的课程。
更新日期:2020-11-06
down
wechat
bug