91.301 Organization of Programming Languages
Prof. F. Martin
Student Project Links
$cheme $tockby Gary Kanter and Paul Ricker
- Scheme-in-C++-Game-Engine by Dante Kappotis
- C++-in-Scheme-Calculator by Steven Zukowski
- Checkbook Balancer by Eric Krupnik
- Scheme-&-SQL-Database-Interactions by Rohan Golwala
- XML Baseball Statistics by Jerron St. Armand
- Scheme Plotting by Easwaran
- RSS-Mashups-in-Scheme by Tom Kiley
- iRobot Create Scheme API by John Fertitta
- Scheme-and-GUI-Box_and_Pointer_Diagrams by Dongrui Zhang
- ID3 Tag Editor by Joshua Kraunelis
- GUI Email Client by Steven LeBoeuf
- SimpleRSS by Philip Kovac
- CrawLS by Patrick Lozzi
- SchemeSpider by Chris DiMaio
- XML Manipulation by Brian Mello
- Music Discovery by Chris Corcoran
- Desktop Relief Engraving by Mark Sherman
- User-interactive Webpage Application in PLTScheme by Shruthi Rajegowda
- Drummer-in-Scheme by David Romano
- PCB Drill by Saroun Sek
- Task Scheduler by Sophanna Son
- Fluxus using Scheme by Josyel Perez
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:
- The annoying part, where you figure out/locate the existing the low-level techniques for gluing Scheme to the outside world.
- 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:
- You don't have a project at all until you have some solution to get you outside the Scheme box.
- 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.