Bastiaan Heeren

dblp:51/3944 · DBLP profile ↗
← Back
25ranked-venue papers
6as first author
4since 2021 · last 2024
0000-0001-6647-6130ORCID · verified

Domains — the database's venue-derived domains; a paper can count in several

Human-computer interaction and ubiquitous computing · 16 · 2 first-author · 2 since 2021Applied, interdisciplinary, general and emerging computing · 9 · 2 first-authorSoftware engineering, systems software and programming languages · 8 · 4 first-author · 2 since 2021
YearPublicationVenuePosition
2024 Example-Based Reasoning about the Realizability of Polymorphic Programs
abstract
Parametricity 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.3
2023 A Systematic Mapping Study of Code Quality in Education
abstract
While 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)3
2023 Program Synthesis Using Example Propagation
Niek Mulleners, Johan Jeuring, Bastiaan Heeren
PADL3
2021 A Tutoring System to Learn Code Refactoring
abstract
In 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
SIGCSE2
2019 Automated Feedback on the Structure of Hypothesis Tests
Sietske Tacoma, Bastiaan Heeren, Johan Jeuring, Paul Drijvers
AIED (2)2
2019 The Diagnosing Behaviour of Intelligent Tutoring Systems
Renate van der Bent, Johan Jeuring, Bastiaan Heeren
EC-TEL3
2019 How Teachers Would Help Students to Improve Their Code
abstract
Code 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
ITiCSE2
2019 A Systematic Literature Review of Automated Feedback Generation for Programming Exercises
abstract
Formative 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.3
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-TEL1
2017 An Extensible Domain-Specific Language for Describing Problem-Solving Procedures
Bastiaan Heeren, Johan Jeuring
AIED1
2017 Code Quality Issues in Student Programs
abstract
Because 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
ITiCSE2
2017 Generating Hints and Feedback for Hilbert-style Axiomatic Proofs
abstract
This 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
SIGCSE2
2016 Towards a Systematic Review of Automated Feedback Generation for Programming Exercises
abstract
Formative 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
ITiCSE3
2015 Communicate! - A Serious Game for Communication Skills -
abstract
Communicate! 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-TEL3
2014 Feedback services for stepwise exercises
Bastiaan Heeren, Johan Jeuring
Sci. Comput. Program.1
2012 Teachers and Students in Charge - Using Annotated Model Solutions in a Functional Programming Tutor
Alex Gerdes, Bastiaan Heeren, Johan Jeuring
EC-TEL2
2012 Ask-Elle: A Haskell Tutor - Demonstration
Johan Jeuring, Alex Gerdes, Bastiaan Heeren
EC-TEL3
2012 An interactive functional programming tutor
abstract
We 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
ITiCSE3
2010 Using strategies for assessment of programming exercises
abstract
Programming 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
SIGCSE3
2010 A lightweight approach to datatype-generic rewriting
abstract
Abstract 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.5
2009 Constructing Strategies for Programming
Alex Gerdes, Bastiaan Heeren, Johan Jeuring
CSEDU (1)2
2008 Report on the tenth ICFP programming contest
abstract
The 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
ICFP3
2005 Type Class Directives
Bastiaan Heeren, Jurriaan Hage
PADL1
2003 Helium, for learning Haskell
abstract
Helium is a user-friendly compiler designed especially for learning the functional programming language Haskell. The quality of the error messages has been the main concern both in the choice of the language features and in the implementation of the compiler. Helium implements almost full Haskell, where the most notable difference is the absence of type classes. Our goal is to let students learn functional programming more quickly and with more fun. The compiler has been successfully employed in two introductory programming courses at Utrecht University.
Bastiaan Heeren, Daan Leijen, Arjan van IJzendoorn
Haskell1
2003 Scripting the type inference process
abstract
To improve the quality of type error messages in functional programming languages, we propose four techniques which influence the behaviour of constraint-based type inference processes. These techniques take the form of externally supplied type inference directives, precluding the need to make any changes to the compiler. A second advantage is that the directives are automatically checked for soundness with respect to the underlying type system. We show how the techniques can be used to improve the type error messages reported for a combinator library. More specifically, how they can help to generate error messages which are conceptually closer to the domain for which the library was developed. The techniques have all been incorporated in the Helium compiler, which implements a large subset of Haskell.
Bastiaan Heeren, Jurriaan Hage, S. Doaitse Swierstra
ICFP1