Johan Jeuring
Utrecht University, Computer Science, Faculty Member
- I work on: software technology for learning and teaching, Artificial intelligence in education, Intelligent tutoring systems, tutors for programming and mathematicsedit
IFIP-The International Federation for Information Processing IFIP was founded in 1960 under the auspices of UNESCO, following the First World Computer Congress held in Paris the previous year. An umbrella organization for societies... more
IFIP-The International Federation for Information Processing IFIP was founded in 1960 under the auspices of UNESCO, following the First World Computer Congress held in Paris the previous year. An umbrella organization for societies working in information processing, IFIP's aim ...
Research Interests:
Research Interests:
Learning to program is difficult. To support learning programming, many intelligent tutoring systems for learning programming have been developed. Research has shown that such tutors have positive effects on learning. However, intelligent... more
Learning to program is difficult. To support learning programming, many intelligent tutoring systems for learning programming have been developed. Research has shown that such tutors have positive effects on learning. However, intelligent tutors for learning programming are not widely used. Building an intelligent tutor for a programming language is a substantial amount of work, and utilising it in a course
Research Interests:
Research Interests:
Research Interests:
IFIP-The International Federation for Information Processing IFIP was founded in 1960 under the auspices of UNESCO, following the First World Computer Congress held in Paris the previous year. An umbrella organization for societies... more
IFIP-The International Federation for Information Processing IFIP was founded in 1960 under the auspices of UNESCO, following the First World Computer Congress held in Paris the previous year. An umbrella organization for societies working in information processing, IFIP's aim ...
Programs in languages such as Haskell are often datatype- centric and make extensive use of folds on that datatype. Incremen- talization of such a program can signicantly improve its performance by transforming monolithic atomic folds... more
Programs in languages such as Haskell are often datatype- centric and make extensive use of folds on that datatype. Incremen- talization of such a program can signicantly improve its performance by transforming monolithic atomic folds into incremental computations. Functional incrementalization separates the recursion from the applica- tion of the algebra in order to reduce redundant computations and reuse intermediate results. In this paper, we motivate incrementalization with a simple example and present a library for transforming programs using upwards, downwards, and circular incrementalization. Our benchmarks show that incrementalized computations using the library are nearly as fast as handwritten atomic functions.
This report contains the papers selected for presentation at the 2nd Workshop on Generic Programming (WGP2000), which was held on July 6, 2000 in Ponte de Lima, Portugal. Generic programming is about making programs more adaptable by... more
This report contains the papers selected for presentation at the 2nd Workshop on Generic Programming (WGP2000), which was held on July 6, 2000 in Ponte de Lima, Portugal. Generic programming is about making programs more adaptable by making them more general. Generic programs often embody non-traditional kinds of polymorphism; ordinary programs are obtained from them by suitably instantiating their parameters. In contrast with normal programs, the parameters of a generic program are often quite rich in structure. For ...
This tutorial book presents six carefully revised lectures given at the Spring School on Datatype-Generic Programming, SSDGP 2006. This was held in Nottingham, UK, in April 2006. It was colocated with the Symposium on Trends in Functional... more
This tutorial book presents six carefully revised lectures given at the Spring School on Datatype-Generic Programming, SSDGP 2006. This was held in Nottingham, UK, in April 2006. It was colocated with the Symposium on Trends in Functional Programming (TFP 2006), and the Conference of the Types Project (TYPES 2006). All the lectures have been subjected to thorough internal review by the editors and contributors, supported by independent external reviews.
��� Both text input as well as structure edit operations, without mode switching. For example, typing 2+ 3* 8 has the same effect as constructing this expression via selecting+,*, and the appropriate integers. It is not clear to us (yet)... more
��� Both text input as well as structure edit operations, without mode switching. For example, typing 2+ 3* 8 has the same effect as constructing this expression via selecting+,*, and the appropriate integers. It is not clear to us (yet) how to textually input two-dimensional formulae.��� Easy drag and drop of subexpressions.
A polytypic program is a program that behaves uniformly over a large class of datatypes. For functional polytypic programming this uniformity is achieved by parameterizing functions over type constructors to obtain polytypic functions. A... more
A polytypic program is a program that behaves uniformly over a large class of datatypes. For functional polytypic programming this uniformity is achieved by parameterizing functions over type constructors to obtain polytypic functions. A polytypic function is defined either by induction on the structure of regular type constructors or in terms of other polytypic functions. PolyP is an extension of the functional programming language Haskell with a construct for defining polytypic functions. PolyP is a type guided preprocessor that generates instances ...
Research Interests:
Abstract This course is being assessed by an unusual form of examination: a practical exercise. The object of the exercise is to show that you have learned to use lazy functional programming as a practical programming tool. The exercise... more
Abstract This course is being assessed by an unusual form of examination: a practical exercise. The object of the exercise is to show that you have learned to use lazy functional programming as a practical programming tool. The exercise is deliberately open-ended, in order to form a good basis for