Neon
Hage
What is Neon?
The Neon library is a domain specific embedded language written in and to be used
in tandem with
Haskell. Its purpose is to analyze large collections of student written
programs logged by the
Helium compiler. We plan to use it to investigate the following:
- how is the Helium compiler used, e.g., do hints for correcting type errors help?
- how do students learn to program Haskell/Helium, e.g., should list comprehension be taught before or after general recursion, how does knowledge of Java help or interfere with students learning Haskell?
- how do students use the Haskell language, e.g., which language features do they avoid, how deeply nested is a typical let construct?
The main development characteristics are that
- it should be an easy and effective way of writing queries on the collection of loggings
- it should allow a large amount of reuse across queries
- it should be possible to add new ways of combining queries into new ones
- it should generate esthetically pleasing results in multiple formats (PNG pictures of various graphic forms, Latex tables and HTML tables are currently supported, the PNG files are generated by a third party tool called Ploticus)
- we want to reuse as much as possible code written for the Helium compiler
An example of a generated picture can be found below
The system was developed by Peter van Keeken as part of his Master's thesis project,
under the guidance of
Jurriaan Hage
More extensive examples
The following is a typical output generated by the system. The system generated an HTML file, which includes
tables formatted in HTML and links to the graphical plots for the information in the tables. The pictures typically show different facets,
in increasingly more detail. Usually, an overall picture is given, then information organized per week of the course, and sometimes even give information for particular students.
The headers for the pictures are a bit cryptic. This has to do with the fact that they were automatically generated. We are planning to improve
that.
- Phase research: we consider the ratios between the number of lexical, parse, type and other static errors with respect to the total number of compiles. We also give the absolute numbers, to show the significance. The data set we used is from the course year 2004/2005.
- Compilation interval analysis: how often do students invoke the compiler? Does that change over the course period?
- Typing error correction research: here we consider the time between the occurrence of a type error, and the first subsequent correct compile.
Download
The Neon library can be downloaded here:
Click to download neon-dist.gz
See the README on how to compile and use the system. The data sets that we have
collected over the years while logging with Helium are
not part of this download.
If you are interested in obtaining these data sets contact the owner of this web page.
For experimentation reasons, a small collection of loggings has been included.
Documentation for the system can be found in the
Master thesis of Peter van Keeken.
If you want to generate graphical output, you are going to need the
Ploticus program.
--
JurriaanHage - 22 Aug 2007