CS 603 Projects

Spring 2006

Projects in this course are selected from the textbook, although sometimes we might augment the descriptions given in the text with additional explanations or specifications.  Please refer to this page before you begin each project, and again before you submit each project in case any clarifications have been added.

You should implement all the assigned exercises from each chapter within a single interpreter, so that all the newly added features can be used together in the same source program.  That is, do NOT implement each extension to the source language in a separate interpreter.

Project 1 Chapter 2 exercises 17, 18, 21.
Project 2 Chapter 3 exercises 31, 36, 37.  It is not necessary to program the metacircular interpreter in exercise 36.
Project 3 Repeat these exercises from Projects 1 and 2 using the ML implementation of mScheme:  Chapter 2 exercises 18, 21.  Chapter 3 exercises 31, 36.
Project 4 Chapter 9 exercises 31, 32.  For extra credit, Chapter 9 exercise 30.  All exercise numbers refer to the current edition of the text.
Project 5 Chapter 10 exercises 15, 16.  For extra credit, implement the "occurs check".

You may work either individually or in teams of 2 or 3 students if you wish, provided that each student contributes to the successful completion of the project, and provided that each student understands all the code that is written.  If you work in a team, then indicate in your email submission what was the contribution of each team member to the project.  That is, which parts of the code were written and/or debugged by each individual.  Also include all team members' names in your email submission message.

If you choose to work in a team, then ideally you should work with as many different teammates as possible during the semester.  This will enable everyone to receive the maximum benefit from working in teams.  So please attempt to form a different group of team members for each project to the extent that this is possible.

Your grade depends upon correctness, efficiency, programming style, and thorough testing.  On each project you should implement the specified changes to the interpreter in a reasonably efficient manner, your changes must be readable and clearly indicated, and you should provide sample programs that test all the new language features and convinces me that they operate correctly.

The due date for each project can be viewed on the Tentative Course Schedule.  These due dates will not be moved forward, but they might be moved back at the discretion of the instructor.  Email your project to me at borie@cs.ua.edu by 11:59 p.m. of the due date, or earlier.  All the files necessary to compile and run your programs should be attached in a .zip file.  Also attach sample programs that demonstrate the working features of your project.  Click here for instructions how to create a .zip file using Windows XP.