You will perform several projects that involve developing code using the Java, Scheme and Haskell programming languages. Programming projects will be assigned following completion of homeworks for each paradigm. Compilers and interpreters for all languages will be available on the EECS Department's Linux systems. When possible, compilers will be available for download from the course web site for installation in the Linux environment. You are required to submit your documented source code, testing results, test input files you have prepared, and any documentation needed to execute your code. Use tar to create an archive of your submission. Please use the my.eecs system to submit computer-based homework assignments and projects. You will be given specific submission instructions as needed.

I will not accept paper listings when electronic submission is required. Your programs will be extracted, compiled and tested in the Linux environment. Please document your code source files making certain to include your name and ID number. Undocumented source code will result in a serious point deduction!
Propositional Sequent Calculus theorem prover. Due: 10/1/07 before class.
Virtual Machine and Scheme Compiler - You will write a virtual machine for executing stack-based assembly-like code.  You will then write a compiler that will translate a tiny subset of Scheme into your virtual machine.  You should be able to run the result on your virtual machine. Due: TBD - watch the blog
KULL Abstract Interpretter - You will write an an abstract interpreter for the KU Little Language (KULL) that will accept a language term, apply an abstraction function, and return the evaluation result. You will define an abstract syntax (AST) data structure for the language and an interpretation function that maps a legal AST element to a concrete or abstract value. I will provide a front-end parser that will perform syntax checking.