WebLab is a web-based learning management system with a focus on programming education.

Traditional programming education has a long feedback cycle with students making assignments in the lab and teaching assistants manually grading (sometimes still on paper) submitted assignments. In addition, the approach requires installation of programming environments on lab machines and/or a wide variety of student's own computers. Finally, exams are typically conducted on paper, making it hard to test programming skills and insight, and again making for a large grading effort.

WebLab provides an all-in-one environment for programming courses. The application is provided as a web service that can be used by instructors and students at any computer with an internet connection.

Students read assignments and write programming solutions directly in the application. Submitted programs are compiled and executed immediately on the server. Solutions are checked for correctness using unit tests, which are reported directly to students. Instructors use the same environment as students to design the course set-up and develop and test assignments. In addition, WebLab supports instructors to do all course administration. Thus, WebLab completely avoids the problem of installing programming environments. By adding support for a programming language to WebLab once, it can be used in all courses by all students.

Besides the web front-end for realizing programming in the browser, an important problem we had to address in the design of the WebLab is the secure execution of student programs. Executing arbitrary user-generated code on a server is what regular web applications try to avoid at all costs, since it allows users to disrupt the service or steal data. We designed a sandboxed environment in which programs in a variety of languages (currently Scala, C, JavaScript, and Java) do not have access to the host machine or each other, yet can be executed rapidly and for many students simultaneously.

WebLab assignments can be used during scheduled lab sessions, so that teaching assistants can focus on explaining rather than checking solutions. WebLab can also be used to administer computer-based programming exams. For that purpose, students need to sign in to the exam using a personalized key that is handed out on paper during the exam to verify physical presence in the examination room. Using unit-testing based grading, exam grades can be published on the day of the exam.

WebLab is not custom designed for a single course. It supports flexible design of a course with a tree structured assignment structure with flexible grading schemes for each node in the tree.

The course was first developed for a course on Concepts of Programming languages in the Computer Science bachelor at TU Delft, which is starting its third year of usage. It is also being used by two programming languages courses at TU Darmstadt. In Q3 of 2013-2014 it will be used by two more courses in the TU Delft Computer Science bachelor program.

WebLab was first developed by Eelco Visser and Vlad Vergu.

Last Wednesday, January 29, 2014, Maartje de Jonge successfully defended her thesis "Language-parametric Techniques for Language-Specific Editors"

Abstract: The goal of this dissertation is to develop techniques that simplify the implementation of tool support for new languages. More specifically, we focus on language-parametric solutions for the implementation of language-specific editor support. In the first part of this dissertation we investigate generic techniques to recover from syntax errors that occur during interactive editing. In the second part we look into language-parametric techniques for the implementation of refactoring tools.

Her research is also available through the parse error recovery provided by the Spoofax Language Workbench.

(on facebook)

Read more

banner

On January 17, 2014 I'm giving my inaugural speech on the occasion of my appointment as full professor at TU Delft.

This seemed like a good excuse to organize a symposium and get some great speakers from the programming languages community to come to Delft. I am delighted that the following excellent researchers and speakers accepted my invitation to speak at the symposium on The Future of Programming on January 16 and 17 in Delft:

Registration is free and includes lunch. While seating at the inaugural speech is virtually unlimited, seating at the symposium is limited and quickly filling up. Make sure to register soon.

Vortrag | DSLs und ihre Tools: State of the Art | Markus Völter (Freiberufler/itemis)

Vortrag | DSLs und ihre Tools: State of the Art | Markus Völter (Freiberufler/itemis)

Searching for a portrait of Markus Völter on flickr, I found this picture from April 2013 on which he seems to be presenting the name binding language of Spoofax.

Users of Stratego/Spoofax often express confusion about the dynamic rules feature of the language. There is a reason for that, since dynamic rules are often used to simulate global variables and stateful programming. However, the feature was developed for more interesting use cases. The approach provides an elegant example of how to combine analysis and transformation, which is nicely demonstrated by the definition of partial evaluation, for example. A more important problem is that it is not clear how to make transformations with dynamic rules incremental, which is a requirement in interactive development environments. In considering new designs to realize incremental, interactive context-sensitive transformations, I think it is useful to be at least be aware of the original design goals and capabilities of dynamic rules in Stratego.

I'll be giving a talk about dynamic rules in our Software Language Engineering Meeting at November 5 at TU Delft. For those who cannot attend, here are some pointers to papers

and a couple of slide decks (with quite a bit of overlap):

Read more