Software repository mining with Marmoset

Most computer science educators hold strong opinions about the “right” approach to teaching introductory level programming. Unfortunately, we have comparatively little hard evidence about the effectiveness of these various approaches because we generally lack the infrastructure to obtain sufficiently detailed data about novices’ programming habits.To gain insight into students’ programming habits, we developed Marmoset, a project snapshot and submission system. Like existing project submission systems, Marmoset allows students to submit versions of their projects to a central server, which automatically tests them and records the results. Unlike existing systems, Marmoset also collects finegrained code snapshots as students work on projects: each time a student saves her work, it is automatically committed to a CVS repository.We believe the data collected by Marmoset will be a rich source of insight about learning to program and software evolution in general. To validate the effectiveness of our tool, we performed an experiment which found a statistically significant correlation between warnings reported by a static analysis tool and failed unit tests.To make fine-grained code evolution data more useful, we present a data schema which allows a variety of useful queries to be more easily formulated and answered.

Here is the ACM portal page.
(via the PLT Discussion List)

It is what you know that you don't know that matters most

The idea that “It is what you know that you don’t know that matters most” has been coming up a lot lately. Here is one fellow’s take on it via this post:

I have the the distinction of being the “programming languages guru” here at Dobbs Code Talk. So what does this mean to me? It means that after many years of programming and studying language design, I am reasonably aware about what it is that I don’t know about programming languages. Contrast this to something like helicopter mechanics, for which the only meaningful thing I can say is that I know nothing about it.
It is perhaps a dubious achievement to be knowledgable about the limits of your understanding, but at the same time I don’t really think you can do any better.

Agreed.

Bazaar Marketing Practice

I recently cut over from Subversion to Bazaar. Happy to see that a new, improved version, 1.9, was released; I headed over to the download area only to find a RC1 version available. There were only two 1.9 releases available: source code or a Mac installer. Apparently the Windows installer will be available in a few days. How disappointing.
Why drum up everyone’s excitement on the 7th of November only to tell them that they need to wait around for another five days before they can use it? It is a bizarre marketing practice!

A Theory for Language Design

No amount of language design can force a programmer to write clear programs. If the programmer’s conception of the problem is badly organized, then his programs will also be badly organized. The extent to which a programming language can help a programmer to organize his problem is precisely the extent to which it provides features appropriate to his problem domain. The emphasis should not be on eliminating “bad” language constructs, but on discovering or inventing helpful ones.

— AIM-353: LAMBDA: The Ultimate Imperative

Helium for learning Haskell

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.

(mentioned on the PLT discussion list)