Home Assignments Lecture Blog Resources Project

91.301 Organization of Programming Languages
Prof. F. Martin

Student Project Links

Particular Project Ideas

  • build an interface to Google Docs by porting the GData API to Scheme. See info here.
  • create a tool to step-and-repeat a printed circuit board drill pattern. My colleague Don Rhine needs a simple tool that will read in PCB drill files (which are simple text files with XY specifications of drill locations) and repeat a given design in a grid. Contact Fred to get more details.

Semester Project Guidelines

The semester project has several objectives:

  • Have you apply the ideas learned in the class to a practical problem of your own choosing
  • Connect Scheme code to “the world” outside the Scheme sandbox we have been playing in most of the semester
  • Find relevance of ideas in OPL to a problem that you might care about

The primary learning goal of the project is to have you find some personal meaning and utility in the concepts introduced in the class.


Pretty much any application that connects Scheme to the world outside the interpreter sandbox is desireable. This might include:

  • audio processing
  • image processing
  • database applications
  • CAD (e.g., 2D engraving or 3D manufacturing)
  • internet (crawling the web; web services)
  • robot control
  • compilers or language processing


To simplify, there will be two aspects to the project:

  1. The annoying part, where you figure out/locate the existing the low-level techniques for gluing Scheme to the outside world.
  2. The fun part, where you get to work on your project itself.

There are various libraries available on the PLT-Scheme web site to help you with both.

I would suggest that you invest time upfront in the annoying part. This is for two reasons:

  1. You don't have a project at all until you have some solution to get you outside the Scheme box.
  2. Once you get this out of the way, you can move on to the fun part.

I would encourage everyone to start thinking about what they are interested in and investigating libraries available on PLT-Scheme now.

It is a perfectly reasonable approach to start with the library first (say, a database interface library), get it working, and then choose the application (“fun part”) second.

Also, there is a Google group for PLT Scheme users. People there are generally quite helpful when you are trying to use their stuff. (Also, they have a sense of humor when students post straight homework questions; these don't get answered directly.)

An Alternate Approach -- Embedding Scheme into Another App

There is a smallish C library named siod — Scheme In One Defun. This is intended for building a Scheme interpreter into another body of code.

For those of you who have experience building C/C++ apps, this might be an interesting way to go.

See also http://sisc-scheme.org/, “Second Interpreter of Scheme Code,” which is a Scheme interpreter written in Java. There is a live demo on the SISC web site.

There is also a web page for SISC Scheme and Tomcat.