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!
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.