CS 431/631 - Programming Language Implementation
Spring 2013 Project

There are 4 projects to choose from. You need to notify me by e-mail of your choice by Tuesday March 19.

  1. Implement a D to C++/Java translator. This is a good choice if you wish to learn a new language and get more experience translating language constructs to another language.
  2. Implement a C/Pascal/Simple Language to Assembly translator on a target machine. This is best if you wish to learn more about code generation and optimization.
  3. Add features to an existing language (e.g. C with Classes). This is a good choice if you wish to learn more about designing languages.
  4. Implement a Prolog interpreter. This is a good choice if you wish to learn more about Prolog and providing a run-time environment (which is needed to solve Prolog queries).
Your grade will be based on
  1. the quality of your implementation - does it correctly and efficiently create code in your target language?
  2. the quality of your test programs - are they complete and rigorous?
  3. the percentage completeness of your implementation - this will vary based on your project (i.e. implementing 50% of D would be impressive, while 50% of ANSI C would not)
Steps to complete for the project:
  1. Choose your project and submit your choice to me by Tuesday March 19.
  2. Create a suite of test programs of increasing complexity that you will use to test your implementation and determine your percentage of completion. E-mail the suite of test programs to me by Tuesday April 9.
  3. Finish your implementation.
  4. 15-20 minute presentation on Tuesday April 30 or Thursday May 2.
  5. Final written report due on Thursday May 2.