Dienst van SURF
© 2025 SURF
Live programming is a style of development characterized by incremental change and immediate feedback. Instead of long edit-compile cycles, developers modify a running program by changing its source code, receiving immediate feedback as it instantly adapts in response. In this paper, we propose an approach to bridge the gap between running programs and textual domain-specific languages (DSLs). The first step of our approach consists of applying a novel model differencing algorithm, tmdiff, to the textual DSL code. By leveraging ordinary text differencing and origin tracking, tmdiff produces deltas defined in terms of the metamodel of a language. In the second step of our approach, the model deltas are applied at run time to update a running system, without having to restart it. Since the model deltas are derived from the static source code of the program, they are unaware of any run-time state maintained during model execution. We therefore propose a generic, dynamic patch architecture, rmpatch, which can be customized to cater for domain-specific state migration. We illustrate rmpatch in a case study of a live programming environment for a simple DSL implemented in Rascal for simultaneously defining and executing state machines.
Computational thinking (CT) skills are crucial for every modern profession in which large amounts of data are processed. In K-12 curricula, CT skills are often taught in separate programming courses. However, without specific instructions, CT skills are not automatically transferred to other domains in the curriculum when they are developed while learning to program in a separate programming course. In modern professions, CT is often applied in the context of a specific domain. Therefore, learning CT skills in other domains, as opposed to computer science, could be of great value. CT and domain-specific subjects can be combined in different ways. In the CT literature, a distinction can be made among CT applications that substitute, augment, modify or redefine the original subject. On the substitute level, CT replaces exercises but CT is not necessary for reaching the learning outcomes. On the redefining level, CT changes the questions that can be posed within the subject, and learning objectives and assessment are integrated. In this short paper, we present examples of how CT and history, mathematics, biology and language subjects can be combined at all four levels. These examples and the framework on which they are based provide a guideline for design-based research on CT and subject integration.