CS712/CS812
Project Phase 1
Spring 2005
Due Sunday February 13


In this phase the class will cooperate in the design of a simple object-oriented language.

Our design will support the following functionality:

The language will require that programs be completely specified in a single file.

The key criteria for evaluating our design is its completeness. We need to specify both the syntax and the semantics. We need to be sure to consider error situations when we describe the semantics. (For example, what should the compiler do if the user assigns a reference to an integer?)

We will base our language specification on The Java Language Specification. In fact we will try to extract our language directly out of Java, and then patch the resulting rough spots (e.g. there are no destructors in Java; our language does not have exceptions so what do we do when we encounter a divide by zero?). Students will be assigned a section of the Java specification and your assignment will be to adapt it for our language. Each feature of our language will be discussed in class, but the default syntax and semantics of our language will be based upon the Java syntax and semantics. So, when in doubt, mimic Java! In fact, shameless copying from the Java specification is allowed and even encouraged, but be careful to pull in only what we need.

Our language specification will be published as webpages. David Noblet will serve as the editor of the webpages. HTML for your section of the specification should be e-mailed to David within 48 hours following when your section is discussed in class. If you are not going to be able to meet this deadline, then you should contact me at the time your section is discussed in class.

You will be responsible for your section of the specification over the course of the whole semester. As weaknesses are detected in the specification, the responsible students will need to edit their section of the specification and e-mail the updated HTML to David.

I anticipate that all students will get full credit for this phase, if you fulfill your responsibilities over the whole semester, including preparing your initial draft, reading and critiquing other students' drafts, and editing your section as needed. Class attendance and participation is critical in the two-week period allocated for this phase. If you do not carry your assigned load at some point in the semester, then I will be forced to make deductions in your grade.

We will also share test files over the course of the semester. You will be responsible for generating test files for your section of the specification. The details of how and when we will share test files will be discussed at a later date.

Here are the work assignments, with the corresponding section in the Java specification:

Our specification will have the following chapters in this order:

  1. Lexical Structure
  2. Types, Values, and Variables
  3. Conversions and Promotions
  4. Names
  5. Classes
  6. Arrays
  7. Blocks and Statement
  8. Expressions
  9. LALR(1) Grammar

For chapters that are to be written by multiple students, here are the section numbers:


Last modified on January 28, 2005.

Comments and questions should be directed to hatcher@unh.edu