EDBT 2026 Demo / reviewers in the wild / expert
Johan Jeuring
dblp:j/JohanJeuring
· DBLP profile ↗
66ranked-venue papers
6as first author
20since 2021 · last 2026
0000-0001-5645-7681ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Human-computer interaction and ubiquitous computing · 33 · 3 first-author · 14 since 2021Software engineering, systems software and programming languages · 25 · 2 first-author · 4 since 2021Applied, interdisciplinary, general and emerging computing · 19 · 2 first-author · 6 since 2021Theory of computation · 4 · 1 first-authorArtificial intelligence and machine learning · 3 · 2 since 2021Systems, architecture and hardware · 1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | In-Depth Data Exploration for Reliable Learning Curve Analysis: Insights from a Secondary School Python CourseabstractThe increased use of digital educational technologies has led to an increased availability of educational data. The field of Educational Data Mining (EDM) uses this data to perform various analyses. To successfully apply methodologies from EDM, the data must be of good quality. Looking at the data in detail before doing any EDM analyses gives insights that contribute to a reliable interpretation of the results of EDM. While this is relevant for all EDM methodologies, this paper focuses only on using student data for drawing learning curves. In this experience report, we look at the question: Which analyses are useful to assess whether data collected in a digital learning platform can be used for learning curve analysis? Such data are suitable if they are not biased by the collection method. We use real life data from two iterations of a Dutch secondary school course, Python Programming for Beginners. We show how platform features, such as fine-grained links between hierarchical learn ing goals and activities, and diverse assessment methods (self-, automated, and teacher grading), affect data quality. Our findings highlight how systematic data exploration adds crucial context to learning curves, which can also be beneficial for course designers. Finally, we propose guidelines for embedding this step into EDM practices. Laura M. van der Lubbe, Johan Jeuring, Sylvia P. van Borkulo |
CSEDU (1) | 2 |
| 2026 | Digital Platforms to Overcome the Challenges of K-12 Computer Science EducationabstractComputer Science (CS) is acknowledged as an important topic for K-12 education. However, the implementation in education still faces significant challenges, such as a shortage of adequately trained teachers, insufficient teaching tools and resources, and equity, diversity and inclusion. In this paper, we aim to show how digital initiatives can contribute to (partly) tackle these challenges. To do this, we give an overview of MOOCs, digital curricula and digital tools that are used for K-12 CS education in Europe. Our findings show that different initiatives are a response to the lack of qualified teachers. With digital learning materials and remote support for students and teachers, CS becomes available to schools without a qualified teacher. All initiatives contribute to making more teaching tools and resources available. For example, multiple adaptations to programming languages exist, to make them more suitable for education. Lastly, in terms of challenges related to equity, diversity and inclusion, the digital initiatives make CS more easily available for a broader range of students. Although our overview might not be complete, it gives an overview of the challenges for K-12 CS education and how digital initiatives address those. Laura M. van der Lubbe, Johan Jeuring, Sylvia P. van Borkulo |
CSEDU (2) | 2 |
| 2026 | The Use of Computational Thinking Skills, Difficulties, and Strategies of Introductory Programming Students Solving Bebras TasksabstractBackground and Motivation. Computational thinking (CT) is regarded as a fundamental skill set that everyone should learn. Identifying when and how CT skills are used is challenging but important to inform interventions that support their development. Previous research has examined how students, teachers, and experts apply CT skills when solving introductory computational problems. However, the extent to which higher education students in introductory programming courses do so in depth is underexplored. Enrico Benedetti, Isaac Alpizar-Chacon, Johan Jeuring |
ICER (1) | 3 |
| 2026 | Hole Refinements for Polymorphic Type-and-Example Driven SynthesisabstractMany synthesizers implicitly benefit from using polymorphic types, since parametric polymorphism reduces the search space. Additional synthesis constraints may interfere with parametricity. In particular, a polymorphic type may cause otherwise feasible input-output examples to contradict each other. We present Taxi (type-and-example based inferencer), a tool for efficiently reasoning about the feasibility of polymorphic programs specified by input-output examples, and Driver, a tactic language for top-down program synthesis that uses feasibility reasoning to prune the search space. Taxi guarantees that every search state corresponds to a correct (albeit possibly partial) implementation. In addition, it allows for shortcutting the synthesis when a subspecification covers all cases. We show that these techniques have the potential to speed up top-down enumerative type-and-example driven synthesizers. Niek Mulleners, Johan Jeuring, Wouter Swierstra |
PEPM | 2 |
| 2026 | Breaking the Script: Do Role-Playing Agents Maintain Goal Alignment under Distraction?abstractAs large language models (LLMs) are increasingly deployed as role-playing agents in educational and professional training simulations, their susceptibility to user-induced distraction threatens their pedagogical utility. We formalise goal-competing distraction as a controlled evaluation paradigm and introduce a simulation framework that captures both immediate reactions and multi-turn trajectories under targeted distraction, using an LLM-based user simulator. Building upon this framework, we evaluate agent behaviour across three models: Gemini-2.0-Flash, Llama-3.3-70B-Instruct, and Llama-3.1-8B-Instruct. Our findings reveal a critical trade-off dependent on model scale. While larger models tend to remain socially responsive and more frequently engage with distractor topics, the smaller model shows rigid goal adherence by resisting and rejecting distraction. Although redirection is the most common initial response, subsequent trajectories diverge substantially. The inclusion of explicit dialogue state demonstrates model-dependent effects, acting as a stabilising anchor for smaller models but providing limited benefit for larger ones. These results suggest that maintaining goal alignment in role-playing agents requires explicitly managing the trade-off between conversational responsiveness and goal adherence. Dongxu Lu, Albert Gatt, Johan Jeuring |
SIGDIAL | 3 |
| 2025 | Buggy Rule Diagnosis for Combined Steps Through Final Answer Evaluation in Stepwise Tasks
Gerben van der Hoek, Johan Jeuring, Rogier Bos |
AIED (3) | 2 |
| 2025 | Combining Model Tracing and Constraint-Based Modeling for Multistep Strategy Diagnoses
Gerben van der Hoek, Johan Jeuring, Rogier Bos |
AIED (6) | 2 |
| 2025 | Evaluating LLM-Generated Versus Human-Authored Responses in Role-Play DialoguesabstractEvaluating large language models (LLMs) in long-form, knowledge-grounded role-play dialogues remains challenging. This study compares LLM-generated and human-authored responses in multi-turn professional training simulations through human evaluation (N = 38) and automated LLM-as-a-judge assessment. Human evaluation revealed significant degradation in LLM-generated response quality across turns, particularly in naturalness, context maintenance and overall quality, while human-authored responses progressively improved. In line with this finding, participants also indicated a consistent preference for human-authored dialogue. These human judgements were validated by our automated LLM-as-a-judge evaluation, where GEMINI 2.0 FLASH achieved strong alignment with human evaluators on both zero-shot pairwise preference and stochastic 6-shot construct ratings, confirming the widening quality gap between LLM and human responses over time. Our work contributes a multi-turn benchmark exposing LLM degradation in knowledge-grounded role-play dialogues and provides a validated hybrid evaluation framework to guide the reliable integration of LLMs in training simulations. Dongxu Lu, Johan Jeuring, Albert Gatt |
INLG | 2 |
| 2025 | 'Can You Refactor This for Me?': Investigating How Students Use ChatGPT in Code Refactoring ExercisesabstractLLMs are increasingly used in programming education. However, little research has explored their use in teaching and learning code refactoring. In this study, we use a grounded-theory approach to examine student-LLM conversations during code refactoring exercises. Our preliminary results show that students use LLM in various modes, such as requesting a refactoring for the entire program at once or discussing refactoring possibilities in long conversations. Eduardo Carneiro Oliveira, Hieke Keuning, Johan Jeuring |
ITiCSE (2) | 3 |
| 2025 | Models of Mastery Learning for Computing EducationabstractThe application of mastery learning, where students progress through their learning in a self-paced manner until they have mastered specific concepts, is considered appealing for teaching introductory programming courses. Despite its growing popularity in computing and its extensive use in other disciplines, there is no overview of the design of courses that use mastery learning. In this position paper, we present an overview of five mastery learning models and discuss examples of how these can be applied in practice, both in foundational programming as well as more advanced courses. Our analysis focuses on the student progression through the course, the assessment structure, and the support for self-paced learning, including for struggling students. This work provides a greater understanding of mastery learning and its application in a computing education context. Claudia Szabo, Miranda C. Parker, Michelle Friend, Johan Jeuring, Tobias Kohn, Lauri Malmi, Judithe Sheard |
SIGCSE (1) | 4 |
| 2024 | AR for Science Education: Students' Behaviour Patterns and the Relationship Between Cognitive Load, Knowledge Acquisition and Performance
Jessica Lizeth Domínguez Alfaro, Michaela Arztmann, Johan Jeuring |
iLRN (1) | 3 |
| 2024 | "Let Them Try to Figure It Out First" - Reasons Why Experts (Do Not) Provide Feedback to Novice ProgrammersabstractA recent ITiCSE working group investigated when and how experts give feedback and hints at steps novice programmers take when solving programming problems. Based on the feedback literature and an analysis of expert feedback on steps, the working group designed guidelines for when and how to give feedback. The feedback provided by educators using these guidelines on a number of sequences of student steps varied a lot. In this paper, we try to answer the question of why educators give feedback at particular steps to novice learners of programming. We prepared six authentic sequences of student steps when solving an introductory programming task. The preprocessed sequences were used in a survey to gather information about when and why an expert would give feedback. Respondents annotated each step from one sequence with if and why they would give feedback at that step. Our survey received 47 responses. We qualitatively analyzed the responses, resulting in a coding scheme consisting of 19 different reasons for why experts intervene (or not) when novice learners work on introductory programming tasks. We found a considerable variety of reasons experts give for when and how to help students with feedback and hints. Also, sometimes one expert uses a reason at a step to explain why they do intervene, and another expert uses the same reason at the step to not intervene. The categories of experts' feedback indicators will pave the way for several future studies and applications, including learning systems trying to resemble expert feedback strategies. Dominic Lohr, Natalie Kiesler, Hieke Keuning, Johan Jeuring |
ITiCSE (1) | 4 |
| 2024 | Example-Based Reasoning about the Realizability of Polymorphic ProgramsabstractParametricity states that polymorphic functions behave the same regardless of how they are instantiated. When developing polymorphic programs, Wadler’s free theorems can serve as free specifications, which can turn otherwise partial specifications into total ones, and can make otherwise realizable specifications unrealizable. This is of particular interest to the field of program synthesis, where the unrealizability of a specification can be used to prune the search space. In this paper, we focus on the interaction between parametricity, input-output examples, and sketches. Unfortunately, free theorems introduce universally quantified functions that make automated reasoning difficult. Container morphisms provide an alternative representation for polymorphic functions that captures parametricity in a more manageable way. By using a translation to the container setting, we show how reasoning about the realizability of polymorphic programs with input-output examples can be automated. Niek Mulleners, Johan Jeuring, Bastiaan Heeren |
Proc. ACM Program. Lang. | 2 |
| 2023 | Bridging the Computer Science Teacher Shortage with a Digital Learning Platform
Laura M. van der Lubbe, Sylvia P. van Borkulo, Peter B. J. Boon, W. P. G. van Velthoven, Johan Jeuring |
CSEDU (1) | 5 |
| 2023 | A Systematic Mapping Study of Code Quality in EducationabstractWhile functionality and correctness of code has traditionally been the main focus of computing educators, quality aspects of code are getting increasingly more attention. High-quality code contributes to the maintainability of software systems, and should therefore be a central aspect of computing education. We have conducted a systematic mapping study to give a broad overview of the research conducted in the field of code quality in an educational context. The study investigates paper characteristics, topics, research methods, and the targeted programming languages. We found 195 publications (1976-2022) on the topic in multiple databases, which we systematically coded to answer the research questions. This paper reports on the results and identifies developments, trends, and new opportunities for research in the field of code quality in computing education. Hieke Keuning, Johan Jeuring, Bastiaan Heeren |
ITiCSE (1) | 2 |
| 2023 | Student Code Refactoring MisconceptionsabstractTeaching students to develop code of good quality is important. Refactoring -- rewriting a program into a semantically equivalent program of better quality -- is a common technique to improve code quality. It is therefore relevant for students to learn about refactoring, even for the smaller programs they write as beginners. However, students make mistakes when refactoring programs. Some of these mistakes appear often, and might be caused by misconceptions they have. In this paper, we investigate common student code refactoring misconceptions. We do this by analyzing log data containing program snapshots of students working on refactoring exercises in a tutoring system. We manually inspect all transitions from a correct program state to an incorrect state. We then use grounded theory to identify and categorize misconceptions students might have when refactoring programs. As a result, this work (1) defines the concept of refactoring misconception, and (2) provides an initial list of 25 such misconceptions, together with an accompanying website with full details. Eduardo Carneiro Oliveira, Hieke Keuning, Johan Jeuring |
ITiCSE (1) | 3 |
| 2023 | Program Synthesis Using Example Propagation
Niek Mulleners, Johan Jeuring, Bastiaan Heeren |
PADL | 2 |
| 2023 | Developers talking about code qualityabstractAbstract There are many aspects of code quality, some of which are difficult to capture or to measure. Despite the importance of software quality, there is a lack of commonly accepted measures or indicators for code quality that can be linked to quality attributes. We investigate software developers’ perceptions of source code quality and the practices they recommend to achieve these qualities. We analyze data from semi-structured interviews with 34 professional software developers, programming teachers and students from Europe and the U.S. For the interviews, participants were asked to bring code examples to exemplify what they consider good and bad code, respectively. Readability and structure were used most commonly as defining properties for quality code. Together with documentation, they were also suggested as the most common target properties for quality improvement. When discussing actual code, developers focused on structure, comprehensibility and readability as quality properties. When analyzing relationships between properties, the most commonly talked about target property was comprehensibility. Documentation, structure and readability were named most frequently as source properties to achieve good comprehensibility. Some of the most important source code properties contributing to code quality as perceived by developers lack clear definitions and are difficult to capture. More research is therefore necessary to measure the structure, comprehensibility and readability of code in ways that matter for developers and to relate these measures of code structure, comprehensibility and readability to common software quality attributes. Jürgen Börstler, Kwabena Ebo Bennin, Sara Hooshangi, Johan Jeuring, Hieke Keuning, Carsten Kleiner, Bonnie K. MacKellar, Rodrigo Duran 0001, Harald Störrle, Daniel Toll, Jelle van Assema |
Empir. Softw. Eng. | 4 |
| 2022 | Steps Learners Take when Solving Programming Tasks, and How Learning Environments (Should) Respond to ThemabstractEvery year, millions of students learn how to write programs. Learning activities for beginners almost always include programming tasks that require a student to write a program to solve a particular problem. When learning how to solve such a task, many students need feedback on their previous actions, and hints on how to proceed. In the case of programming, the feedback should take the steps a student has taken towards implementing a solution into account, and the hints should help a student to complete or improve a possibly partial solution. Only a limited number of learning environments for programming give feedback and hints on intermediate steps students take towards a solution, and little is known about the quality of the feedback provided. To determine the quality of feedback of such tools and to help further developing them, we create and curate data sets that show what kinds of steps students take when solving programming exercises for beginners, and what kind of feedback and hints should be provided. This working group aims to 1) select or create several data sets with steps students take to solve programming tasks, 2) introduce a method to annotate students' steps in these data sets, 3) attach feedback and hints to these steps, 4) set up a method to utilize these data sets in various learning environments for programming, and 5) analyse the quality of hints and feedback in these learning environments. Johan Jeuring, Hieke Keuning, Samiha Marwan, Dennis J. Bouvier, Cruz Izu, Natalie Kiesler, Teemu Lehtinen, Dominic Lohr, Andrew Petersen 0001, Sami Sarsa |
ITiCSE (2) | 1 |
| 2021 | A Tutoring System to Learn Code RefactoringabstractIn the last few decades, numerous tutoring systems and assessment tools have been developed to support students with learning programming, giving hints on correcting errors, showing which test cases do not succeed, and grading their overall solutions. The focus has been less on helping students write code with good style and quality. There are several professional tools that can help, but they are not targeted at novice programmers. Hieke Keuning, Bastiaan Heeren, Johan Jeuring |
SIGCSE | 3 |
| 2020 | Capturing and Characterising Notional MachinesabstractA notional machine is a pedagogic device to assist the understanding of some aspect of programs or programming. It is typically used to support explaining a programming construct, or the user-understandable semantics of a program. For example, a variable is like a box with a label, and assignment copies or moves a value into that box. This working group will capture examples of notional machines from actual pedagogical practice, as expressed in textbooks (or other teaching materials) or used in the classroom. We will interview at least 30 teachers about their experience with, and perceptions of, the use of notional machines in teaching. Using the interviews, we will work on devising and refining a form to characterise essential features of notional machines. We will also attempt to relate them to each other to describe potential learning sequences or progressions. The working group report will contain descriptions of notional machines used at different levels in education, in different countries, by many teachers. Capturing and Characterising Notional Machines Sally Fincher, Johan Jeuring, Craig S Miller Permission to make digital or hard copies of part or all of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for third-party components of this work must be honored. For all other uses, contact the owner/author(s). ITiCSE 2020,,Trondheim, Norway © 2020 Copyright held by the owner/author(s). 978-1-4503-0000-0/18/06...$15.00 https://doi.org/10.1145/1234567890 The resulting catalogue of notional machines will allow a teacher to select a machine for a particular use, permit comparison between them, and provide a starting point for further categorization and analysis of notional machines. Additionally, we will make more theoretical explorations. We will explore a variety of presentational formats, examining what is necessary and what superfluous; we will look for dimensions of comparison and will examine how notional machines are instantiated across the discipline. We argue that the creation and use of notional machines is potentially a signature pedagogy for computing [1] and that creating and using notional machines represents a certain level of pedagogic sophistication that might be an indicator of pedagogic content knowledge (PCK). Sally Fincher, Johan Jeuring, Craig S. Miller, Peter Donaldson, Benedict du Boulay, Matthias Hauswirth, Arto Hellas, Felienne Hermans, Colleen M. Lewis, Andreas Mühling, Janice L. Pearce, Andrew Petersen 0001 |
ITiCSE | 2 |
| 2019 | Semantic Matching of Open Texts to Pre-scripted Answers in Dialogue-Based Learning
Stefan Ruseti, Raja Lala, Gabriel Gutu, Mihai Dascalu, Johan Jeuring, Marcell van Geest |
AIED (2) | 5 |
| 2019 | Automated Feedback on the Structure of Hypothesis Tests
Sietske Tacoma, Bastiaan Heeren, Johan Jeuring, Paul Drijvers |
AIED (2) | 3 |
| 2019 | The Diagnosing Behaviour of Intelligent Tutoring Systems
Renate van der Bent, Johan Jeuring, Bastiaan Heeren |
EC-TEL | 2 |
| 2019 | How Teachers Would Help Students to Improve Their CodeabstractCode quality has been receiving less attention than program correctness in both the practice of and research into programming education. Writing poor quality code might be a sign of carelessness, or not fully understanding programming concepts and language constructs. Teachers play an important role in addressing quality issues, and encouraging students to write better code as early as possible. Hieke Keuning, Bastiaan Heeren, Johan Jeuring |
ITiCSE | 3 |
| 2019 | A Systematic Literature Review of Automated Feedback Generation for Programming ExercisesabstractFormative feedback, aimed at helping students to improve their work, is an important factor in learning. Many tools that offer programming exercises provide automated feedback on student solutions. We have performed a systematic literature review to find out what kind of feedback is provided, which techniques are used to generate the feedback, how adaptable the feedback is, and how these tools are evaluated. We have designed a labelling to classify the tools, and use Narciss’ feedback content categories to classify feedback messages. We report on the results of coding a total of 101 tools. We have found that feedback mostly focuses on identifying mistakes and less on fixing problems and taking a next step. Furthermore, teachers cannot easily adapt tools to their own needs. However, the diversity of feedback types has increased over the past decades and new techniques are being applied to generate feedback that is increasingly helpful for students. Hieke Keuning, Johan Jeuring, Bastiaan Heeren |
ACM Trans. Comput. Educ. | 2 |
| 2018 | Fine-Grained Cognitive Assessment Based on Free-Form Input for Math Story Problems
Bastiaan Heeren, Johan Jeuring, Sergey A. Sosnovsky, Paul Drijvers, Peter B. J. Boon, Sietske Tacoma, Jesse Koops, Armin Weinberger, Brigitte Grugeon-Allys, Françoise Chenevotot-Quentin, Jorn van Wijk, Ferdinand van Walree |
EC-TEL | 2 |
| 2018 | Use expert knowledge instead of data: generating hints for hour of code exercisesabstractWithin the field of on-line tutoring systems for learning programming, such as Code.org's Hour of code, there is a trend to use previous student data to give hints. This paper shows that it is better to use expert knowledge to provide hints in environments such as Code.org's Hour of code. We present a heuristic-based approach to generating next-step hints. We use pattern matching algorithms to identify heuristics and apply each identified heuristic to an input program. We generate a next-step hint by selecting the highest scoring heuristic using a scoring function. By comparing our results with results of a previous experiment on Hour of code we show that a heuristics-based approach to providing hints gives results that are impossible to further improve. These basic heuristics are sufficient to efficiently mimic experts' next-step hints. Milo Buwalda, Johan Jeuring, Nico Naus |
L@S | 2 |
| 2017 | An Extensible Domain-Specific Language for Describing Problem-Solving Procedures
Bastiaan Heeren, Johan Jeuring |
AIED | 2 |
| 2017 | "I know it when I see it": Perceptions of Code QualityabstractCode quality is a key issue in software development. The ability to develop software of high quality is therefore a key learning goal of computing programs. However, there are no universally accepted measures to assess the quality of code and current standards are consideredweak. Furthermore, there are many facets to code quality. Defining and explaining the concept of code quality is therefore a challenge faced by many educators. In this working group, we investigate the perceptions of code quality of students, teachers, and professional programmers. In particular, we are interested in the differences in views of code quality by students, educators, and professional programmers and which quality aspects they consider as more or less important. Furthermore, we are interested in which sources of information on code quality and its assessment are used by these groups. Eventually, this will help us to develop resources that can be used to broaden students' views on software quality. Jürgen Börstler, Harald Störrle, Daniel Toll, Jelle van Assema, Rodrigo Duran 0001, Sara Hooshangi, Johan Jeuring, Hieke Keuning, Carsten Kleiner, Bonnie K. MacKellar |
ITiCSE | 7 |
| 2017 | Code Quality Issues in Student ProgramsabstractBecause low quality code can cause serious problems in software systems, students learning to program should pay attention to code quality early. Although many studies have investigated mistakes that students make during programming, we do not know much about the quality of their code. This study examines the presence of quality issues related to program flow, choice of programming constructs and functions, clarity of expressions, decomposition and modularization in a large set of student Java programs. We investigated which issues occur most frequently, if students are able to solve these issues over time and if the use of code analysis tools has an effect on issue occurrence. We found that students hardly fix issues, in particular issues related to modularization, and that the use of tooling does not have much effect on the occurrence of issues. Hieke Keuning, Bastiaan Heeren, Johan Jeuring |
ITiCSE | 3 |
| 2017 | Generating Hints and Feedback for Hilbert-style Axiomatic ProofsabstractThis paper describes an algorithm to generate Hilbert-style axiomatic proofs. Based on this algorithm we develop logax, a new interactive tutoring tool that provides hints and feedback to a student who stepwise constructs an axiomatic proof. We compare the generated proofs with expert and student solutions, and conclude that the quality of the generated proofs is comparable to that of expert proofs. logax\ recognizes most steps that students take when constructing a proof. If a student diverges from the generated solution, logax can still provide hints and feedback. Josje Lodder, Bastiaan Heeren, Johan Jeuring |
SIGCSE | 3 |
| 2016 | Towards a Systematic Review of Automated Feedback Generation for Programming ExercisesabstractFormative feedback, aimed at helping students to improve their work, is an important factor in learning. Many tools that offer programming exercises provide automated feedback on student solutions. We are performing a systematic literature review to find out what kind of feedback is provided, which techniques are used to generate the feedback, how adaptable the feedback is, and how these tools are evaluated. We have designed a labelling to classify the tools, and use Narciss' feedback content categories to classify feedback messages. We report on the results of the first iteration of our search in which we coded 69 tools. We have found that tools do not often give feedback on fixing problems and taking a next step, and that teachers cannot easily adapt tools to their own needs. Hieke Keuning, Johan Jeuring, Bastiaan Heeren |
ITiCSE | 2 |
| 2015 | Communicate! - A Serious Game for Communication Skills -abstractCommunicate! is a serious game for practicing communication skills. It supports practicing interpersonal communication skills between a health care professional such as a doctor or a pharmacist, or a (business) psychologist, and a patient or client. A player selects a scenario, and holds a consultation with a virtual character. In the consultation, the player chooses between the various options offered in the scenario. The player scores on the learning goals addressed by the scenario, and gets immediate feedback through the effect of the choice between the answer options on the utterance and emotion of the virtual character. Communicate! also offers an editor for scenarios. A scenario is a graph-like structure, extended with several constructs to avoid the development of repetitive structures. We have performed several experiments with Communicate!, both with students to evaluate the use of Communicate! in various programs at Utrecht University, and with teachers to evaluate the development of scenarios for Communicate! Johan Jeuring, Frans Grosfeld, Bastiaan Heeren, Michiel Hulsbergen, Richta IJntema, Vincent Jonker, Nicole Mastenbroek, Maarten van der Smagt, Frank Wijmans, Majanne Wolters, Henk van Zeijts |
EC-TEL | 1 |
| 2015 | Type-changing rewriting and semantics-preserving transformation
Sean Leather, Johan Jeuring, Andres Löh, Bram Schuur |
Sci. Comput. Program. | 2 |
| 2014 | Type-changing rewriting and semantics-preserving transformationabstractWe have identified a class of regular, whole-program transformations that cannot be safely performed with typical transformation techniques because transformation requires changing the types of terms. In these transformations, we want to change typically large parts of a program from using one type to using another type while simultaneously preserving the original program semantics after transformation. Sean Leather, Johan Jeuring, Andres Löh, Bram Schuur |
PEPM | 2 |
| 2014 | Inductive representations of RDF graphs
José Emilio Labra Gayo, Johan Jeuring, José María Álvarez 0001 |
Sci. Comput. Program. | 2 |
| 2014 | Feedback services for stepwise exercises
Bastiaan Heeren, Johan Jeuring |
Sci. Comput. Program. | 2 |
| 2012 | Teachers and Students in Charge - Using Annotated Model Solutions in a Functional Programming Tutor
Alex Gerdes, Bastiaan Heeren, Johan Jeuring |
EC-TEL | 3 |
| 2012 | Ask-Elle: A Haskell Tutor - Demonstration
Johan Jeuring, Alex Gerdes, Bastiaan Heeren |
EC-TEL | 1 |
| 2012 | Testing type class lawsabstractThe specification of a class in Haskell often starts with stating, in comments, the laws that should be satisfied by methods defined in instances of the class, followed by the type of the methods of the class. This paper develops a framework that supports testing such class laws using QuickCheck. Our framework is a light-weight class law testing framework, which requires a limited amount of work per class law, and per datatype for which the class law is tested. We also show how to test class laws with partially-defined values. Using partially-defined values, we show that the standard lazy and strict implementations of the state monad do not satisfy the expected laws. Johan Jeuring, Patrik Jansson, Cláudio Amaral |
Haskell | 1 |
| 2012 | An interactive functional programming tutorabstractWe introduce an interactive tutor that supports the stepwise development of simple functional programs. Using this tutor, students receive feedback about whether or not they are on the right track, can ask for a hint when they are stuck, and get suggestions about how to refactor their program. Our tutor generates this semantically rich feedback from model solutions, using advanced concepts from software technology. We show how a teacher can add an exercise to the tutor, and fine-tune feedback. We report on an experiment in which we used our tutor. Alex Gerdes, Johan Jeuring, Bastiaan Heeren |
ITiCSE | 2 |
| 2012 | Probability estimation and a competence model for rule based e-tutoring systemsabstractIn this paper, we present a student model for rule based e-tutoring systems. This model describes both properties of rewrite rules (difficulty and discriminativity) and of students (start competence and learning speed). The model is an extension of the two-parameter logistic ogive function of Item Response Theory. We show that the model can be applied even to relatively small datasets. We gather data from students working on problems in the logic domain, and show that the model estimates of rule difficulty correspond well to expert opinions. We also show that the estimated start competence corresponds well to our expectations based on the previous experience of the students in the logic domain. We point out that this model can be used to inform students about their competence and learning, and teachers about the students and the difficulty and discriminativity of the rules. Diederik M. Roijers, Johan Jeuring, A. J. Feelders |
LAK | 2 |
| 2010 | A generic deriving mechanism for HaskellabstractHaskell's deriving mechanism supports the automatic generation of instances for a number of functions. The Haskell 98 Report only specifies how to generate instances for the Eq, Ord, Enum, Bounded, Show, and Read classes. The description of how to generate instances is largely informal. The generation of instances imposes restrictions on the shape of datatypes, depending on the particular class to derive. As a consequence, the portability of instances across different compilers is not guaranteed. José Pedro Magalhães, Atze Dijkstra, Johan Jeuring, Andres Löh |
Haskell | 3 |
| 2010 | Optimizing generics is easy!abstractDatatype-generic programming increases program reliability by reducing code duplication and enhancing reusability and modularity. Several generic programming libraries for Haskell have been developed in the past few years. These libraries have been compared in detail with respect to expressiveness, extensibility, typing issues, etc., but performance comparisons have been brief, limited, and preliminary. It is widely believed that generic programs run slower than hand-written code. In this paper we present an extensive benchmark suite for generic functions and analyze the potential for automatic code optimization at compilation time. Our benchmark confirms that generic programs, when compiled with the standard optimization flags of the Glasgow Haskell Compiler (GHC), are substantially slower than their hand-written counterparts. However, we also find that more advanced optimization capabilities of GHC can be used to further optimize generic functions, sometimes achieving the same efficiency as hand-written code. José Pedro Magalhães, Stefan Holdermans, Johan Jeuring, Andres Löh |
PEPM | 3 |
| 2010 | Using strategies for assessment of programming exercisesabstractProgramming exercise assessment tools alleviate the task of teachers, and increase consistency of markings. Many programming exercise assessment tools are based on testing. A test-based assessment tool for programming exercises cannot ensure that a solution is correct. Moreover, it is difficult to test if a student has used good programming practices. This is unfortunate, because teachers want students to adopt good programming techniques. We propose to use strategies, in combination with program transformations, as a foundation for functional programming exercise assessment. Expert knowledge, in the form of model solutions, can be expressed as programming strategies. Using these strategies we can guarantee that a student program is equivalent to a model solution, and we can report which solution strategy has been used to solve the programming problem. Alex Gerdes, Johan Jeuring, Bastiaan Heeren |
SIGCSE | 2 |
| 2010 | A lightweight approach to datatype-generic rewritingabstractAbstract Term-rewriting systems can be expressed as generic programs parameterised over the shape of the terms being rewritten. Previous implementations of generic rewriting libraries require users to either adapt the datatypes that are used to describe these terms or to specify rewrite rules as functions. These are fundamental limitations: the former implies a lot of work for the user, while the latter makes it hard if not impossible to document, test, and analyze rewrite rules. In this article, we demonstrate how to overcome these limitations by making essential use of type-indexed datatypes. Our approach is lightweight in that it is entirely expressible in Haskell with GADTs and type families and can be readily packaged for use with contemporary Haskell distributions. Thomas van Noort, Alexey Rodriguez Yakushev, Stefan Holdermans, Johan Jeuring, Bastiaan Heeren, José Pedro Magalhães |
J. Funct. Program. | 4 |
| 2009 | Constructing Strategies for Programming
Alex Gerdes, Bastiaan Heeren, Johan Jeuring |
CSEDU (1) | 3 |
| 2009 | Generic programming with fixed points for mutually recursive datatypesabstractMany datatype-generic functions need access to the recursive positions in the structure of the datatype, and therefore adopt a fixed point view on datatypes. Examples include variants of fold that traverse the data following the recursive structure, or the Zipper data structure that enables navigation along the recursive positions. However, Hindley-Milner-inspired type systems with algebraic datatypes make it difficult to express fixed points for anything but regular datatypes. Many real-life examples such as abstract syntax trees are in fact systems of mutually recursive datatypes and therefore excluded. Using Haskell's GADTs and type families, we describe a technique that allows a fixed-point view for systems of mutually recursive datatypes. We demonstrate that our approach is widely applicable by giving several examples of generic functions for this view, most prominently the Zipper. Alexey Rodriguez Yakushev, Stefan Holdermans, Andres Löh, Johan Jeuring |
ICFP | 4 |
| 2008 | Comparing libraries for generic programming in haskellabstractDatatype-generic programming is defining functions that depend on the structure, or "shape", of datatypes. It has been around for more than 10 years, and a lot of progress has been made, in particular in the lazy functional programming language Haskell. There are morethan 10 proposals for generic programming libraries orlanguage extensions for Haskell. To compare and characterise the many generic programming libraries in atyped functional language, we introduce a set of criteria and develop a generic programming benchmark: a set of characteristic examples testing various facets of datatype-generic programming. We have implemented the benchmark for nine existing Haskell generic programming libraries and present the evaluation of the libraries. The comparison is useful for reaching a common standard for generic programming, but also for a programmer who has to choose a particular approach for datatype-generic programming. Alexey Rodriguez Yakushev, Johan Jeuring, Patrik Jansson, Alex Gerdes, Oleg Kiselyov, Bruno C. d. S. Oliveira |
Haskell | 2 |
| 2008 | Report on the tenth ICFP programming contestabstractThe ICFP programming contest is a 72-hour contest, which attracts thousands of contestants from all over the world. In this report we describe what it takes to organise this contest, the main ideas behind the contest we organised, the task, how to solve it, how we created it, and how well the contestants did. Eelco Dolstra, Jurriaan Hage, Bastiaan Heeren, Stefan Holdermans, Johan Jeuring, Andres Löh, Clara Löh, Arie Middelkoop, Alexey Rodriguez Yakushev, John van Schie |
ICFP | 5 |
| 2007 | Customizing an XML-Haskell data binding with type isomorphism inference in Generic Haskell
Frank Atanassow, Johan Jeuring |
Sci. Comput. Program. | 2 |
| 2006 | Generic Views on Data Types
Stefan Holdermans, Johan Jeuring, Andres Löh, Alexey Rodriguez Yakushev |
MPC | 2 |
| 2005 | Using Schema Analysis for Feedback in Authoring Tools for Learning Environments
Harrie Passier, Johan Jeuring |
AIED | 2 |
| 2004 | Inferring Type Isomorphisms Generically
Frank Atanassow, Johan Jeuring |
MPC | 2 |
| 2004 | UUXML: A Type-Preserving XML Schema-Haskell Data Binding
Frank Atanassow, Dave Clarke 0001, Johan Jeuring |
PADL | 3 |
| 2004 | Type-indexed data types
Ralf Hinze, Johan Jeuring, Andres Löh |
Sci. Comput. Program. | 2 |
| 2003 | Dependency-style generic HaskellabstractGeneric Haskell is an extension of Haskell that supports the construction of generic programs. During the development of several applications, such as an XML editor and compressor, we encountered a number of limitations with the existing (Classic) Generic Haskell language, as implemented by the current Generic Haskell compiler. Specifically, generic definitions become disproportionately more difficult to write as their complexity increases, such as when one generic function uses another, because recursion is implicit in generic definitions. In the current implementation, writing such functions suffers the burden of a large administrative overhead and is at times counter-intuitive. Furthermore, the absence of type checking in the current implementation can make Generic Haskell hard to use.In this paper we develop the foundations of Dependency-style Generic Haskell which addresses the above problems, shifting the burden from the programmer to the compiler. These foundations consist of a full type system for Dependency-style Generic Haskell's core language and appropriate reduction rules. The type system enables the programmer to write generic functions in a more natural style, taking care of dependency details which were previously the programmer's responsibility. Andres Löh, Dave Clarke 0001, Johan Jeuring |
ICFP | 3 |
| 2002 | Type-Indexed Data Types
Ralf Hinze, Johan Jeuring, Andres Löh |
MPC | 2 |
| 2002 | Polytypic data conversion programs
Patrik Jansson, Johan Jeuring |
Sci. Comput. Program. | 2 |
| 2001 | Weaving a webabstractSuppose, you want to implement a structured editor for some term type, so that the user can navigate through a given term and perform edit actions on subterms. In this case you are immediately faced with the problem of how to keep track of the cursor movements and the user's edits in a reasonably efficient manner. In a previous pearl, Huet (1997) introduced a simple data structure, the Zipper , that addresses this problem – we will explain the Zipper briefly in section 2. A drawback of the Zipper is that the type of cursor locations depends on the structure of the term type, i.e. each term type gives rise to a different type of location (unless you are working in an untyped environment). In this pearl, we present an alternative data structure, the web , that serves the same purpose, but that is parametric in the underlying term type. Sections 3–6 are devoted to the new data structure. Before we unravel the Zipper and explore the web, let us first give a taste of their use. Ralf Hinze, Johan Jeuring |
J. Funct. Program. | 2 |
| 1999 | Polytypic Compact Printing and Parsing
Patrik Jansson, Johan Jeuring |
ESOP | 2 |
| 1998 | Polytypic UnificationabstractUnification, or two-way pattern matching, is the process of solving an equation involving two first-order terms with variables. Unification is used in type inference in many programming languages and in the execution of logic programs. This means that unification algorithms have to be written over and over again for different term types. Many other functions also make sense for a large class of datatypes; examples are pretty printers, equality checks, maps etc. They can be defined by induction on the structure of user-defined datatypes. Implementations of these functions for different datatypes are closely related to the structure of the datatypes. We call such functions polytypic. This paper describes a unification algorithm parametrised on the type of the terms, and shows how to use polytypism to obtain a unification algorithm that works for all regular term types. Patrik Jansson, Johan Jeuring |
J. Funct. Program. | 2 |
| 1997 | Polyp - A Polytypic Programming LanguageabstractMany functions have to be written over and over again for different datatypes, either because datatypes change during the development of programs, or because functions with similar functionality are needed on different datatypes. Examples of such functions are pretty printers, debuggers, equality functions, unifiers, pattern matchers, rewriting functions, etc. Such functions are called polytypic functions. A polytypic function is a function that is defined by induction on the structure of user-defined datatypes. This paper extends a functional language (a subset of Haskell) with a construct for writing polytypic functions. The extended language type checks definitions of polytypic functions, and infers the types of all other expressions using an extension of Jones' theories of qualified types and higher-order polymorphism. The semantics of the programs in the extended language is obtained by adding type arguments to functions in a dictionary passing style. Programs in the extended language are translated to Haskell. Patrik Jansson, Johan Jeuring |
POPL | 2 |
| 1994 | Bottom-up Grammar Analysis - A Functional Formulation
Johan Jeuring, S. Doaitse Swierstra |
ESOP | 1 |
| 1994 | The Derivation of On-Line Algorithms, with an Application To Finding Palindromes
Johan Jeuring |
Algorithmica | 1 |