Programming Education in the Browser with WebLab

February 05, 2014

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.