一句话:通过让学生在 Java 线程与 Scala Actor 两种方式下实现同一并发问题,分析其从设计到实现阶段的推理困难。
并发编程对学生而言难以掌握。以往研究多通过自然语言描述考察设计阶段推理,缺少对实现阶段的观察。本文要求修读“Programming with Concurrency”高年级/硕士课程的学生,分别用 Java 线程和 Scala Actor 实现同一 sidekick/superhero 版本的 party matching 问题,并对实现代码与书面反思进行定性特征分析。研究发现,设计阶段出现的“额外复杂性”同样出现在实现中,使程序笨重、难以追踪,并负面影响学生成功率。学生反思显示他们抵触实现前建模,且认为形式化建模困难。作者建议在开发过程更早阶段采用更轻量的干预,可能更易被学生接受并产生实质效果。
When computations consist of different processes or threads that may execute at the same time or in an interleaved manner, we say the computation is concurrent or that it exhibits concurrency. University students often struggle to reason about concurrency. Researchers have presented students with natural language descriptions of scenarios involving concurrency and have evaluated students' natural language responses to explore their prior knowledge and to determine characteristics of student reasoning about concurrency. However, natural language responses are necessarily abstract and pertain to the design stage of software development, while studies in which students are asked to implement solutions provide a more concrete view of student reasoning and reveal difficulties that arise when putting design into practice. In this work we build upon prior work and ask: What are common and problematic features in student approaches to solving concurrency-related problems? How do these features differ from the design phase to the implementation phase of the software development life cycle? In this study we asked students enrolled in a jointly offered upper division undergraduate / MS level course on "Programming with Concurrency" to implement a solution to the same problem (a sidekick/superhero version of the party matching problem) using two different approaches: Threads-based in Java, and Actors-based in Scala. We performed qualitative feature analysis of their implementations and their written reflections to better understand student reasoning when programming concurrent solutions. The feature of additional complexity was found in our earlier natural language study in which students described their designs. Additional complexity was also represented in student implementations in this study and adversely impacted student success as their programs became cumbersome and hard to trace. Student reflections provided insight into their resistance to modeling prior to implementation, and indicated that they found formal modeling techniques difficult. These findings suggest that lighter weight interventions that address student difficulties earlier in the development process may be more palatable to students and thus have substantial impact.
DOI 原文 ·
@inproceedings{paperbot5686,
title = {Sidekicks and superheroes},
author = {Aubrey Lawson and Eileen T. Kraemer},
booktitle = {ICSE},
year = {2020},
doi = {10.1145/3377814.3381706}
}