CS 603 Projects

Spring 2007

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.  The exercise numbers refer to the Spring 2007 edition of the text.  It is not necessary to answer individual parts such as (a, b, c, d) unless explicitly stated.

You should implement all the assigned exercises for each project 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 20, 23.
Project 2 Chapter 3 exercises 32 (and part c), 33 (a).
Project 3 Repeat all the exercises from Projects 1 and 2 using the ML implementation of mScheme.
Project 4 Chapter 9 exercises 33, 35 (a).  In exercise 33, just implement the two optimizations described in parts (a, b).
Project 5 Chapter 10 exercises 17, 20, 21.

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 also provide sample programs that test all the new language features to convince 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.