Download MuLE and Program Test Files
Frequently Asked Questions about Mule
Publications related to using MuLE in the classroom.
Lab Assignments and Instructor Guide
MuLE user manuals in HTML.
A little bit about us and the MuLE project

Project Summary for MuLE
An Environment for Interpreter-based Projects for the
Programming Languages Course

The MUltiple Language Environment (MuLE) is a teaching tool for the programming
languages course which enhances the students' grasp of fundamental programming language concepts, constructs and paradigms and deepens the students' appreciation of the relationship between language features and their implementation. The software tool, MuLE, supports interpreter-based projects for multiple programming language paradigms (e.g. object-oriented, procedural/imperative, functional/applicative, logic/declarative). The built-in interpreters are SLam (Simple Lambda language, a functional language), SPoc (Simple Procedural language, an imperative language), SOOP (Simple Object Oriented Programming language), and SLic (Simple LogIC language, a declarative language). The interpreters are designed to share as much code as possible to facilitate students moving from one interpreter to another for projects.

The current version of MuLE (completely redesigned in 2000) is implemented in DrScheme, a completely free (GNU Public License) version of Scheme which runs on Windows (95/98, NT), UNIX, and Macintosh, and which has strong graphical support for GUI development. A number of lab modules for classroom use have been developed as part of the standard MuLE package.

MuLE offers simple demonstration languages (SLam, SLic, SOOP, SPoc) which have a number of pedagogical uses:

  • Introductory projects which introduce the MuLE environment and its implementation language, Scheme.
  • Teaching by counter-example projects which involve keeping all aspects of a simple language constant while one particular feature is changed to explore the effect of that design on the expressive power and efficiency of the language.
  • Programming within the context of a larger existing program (PIC) projects which require students to understand the overall design of a particular interpreter and the flow of information through the interpreter to implement a specific component.
  • Programming in the Large (PIL) projects where students must design and implement 500-1,000 line modules that interface with several other components of the interpreter.


For More Information, see:

L.A. Smith King, John Barr, and Ben Coleman "What Could Be More SLic?: Projects for the Programming Languages Course", Proceedings of the 31st SIGCSE Technical Symposium on Computer Science Education, Charlotte, NC, February 2001.

NSF CCLI-DUE 9952398, L.A. Smith King, College of the Holy Cross (PI), John Barr, Ithaca College (co-PI), "An Environment for Interpreter-based Projects for the Programming Languages Course", January 2000-June 2001.

John Barr and L.A. Smith King, "Teaching Programming Languages by Counter-Example", The Proceedings of the Eleventh Annual Eastern Small College Computing Conference, New Rochelle, NY, October 20-21, 1995.

L.A. Smith King and John Barr, "An Environment for Interpreter-Based Programming Language Projects", Proceedings of the 26th SIGCSE Technical Symposium on Computer Science Education, Nashville, TN, March 1995.

John Barr and L.A. Smith King, "Interpreter-Based Projects for a Traditional Programming Language Course", The Journal of Computing in Small Colleges, Volume 10, Number 2, November 1994.

Sponsored in part by NSF grant DUE-9952398 Any opinions, findings, and conclusions or recommendations expressed in this material are those of the author(s) and do not necessarily reflect the views of the National Science Foundation. Using Dr Scheme