CS 603 Assignments

Spring 2008

Please refer to this page before you begin each assignment, and again before you submit each assignment in case any clarifications have been added.  Exercise numbers refer to the Spring 2008 edition of the text.

Assignment 1 Modify Impcore's natural operational semantics and its implementation to provide a new built-in expression (branch e0 e1 e2 e3) with meaning as follows:  First evaluate e0.  If that value is positive, evaluate e1; or if zero, evaluate e2; or if negative, evaluate e3.
Assignment 2 Chapter 3 exercises 3, 6, 16.
Assignment 3 Modify the C implementation of mScheme as follows:  Actual parameters placed inside curly braces { } will be passed-by-name, and actual parameters placed inside square brackets [ ] will be passed-by-need.  Click here for further explanations and examples.
Assignment 4 Repeat Assignment 2 using ML rather than mScheme.
Assignment 5 Repeat Assignment 3 using the ML implementation of mScheme.
Assignment 6 Chapter 9 exercise 19.  Also, modify the ML implementation of mSmalltalk as follows:  Exchange the order of the message and receiver in a message send, and also permit method overloading via the number of parameters.  Click here for further explanations and examples.
Assignment 7 Chapter 10 exercises 14, 22.  For problem 14, the semantics of mML are defined in section 7.3, and are much simpler than the semantics for mScheme.  Click here to find fixes for typos in problem 14.  For problem 22, swap the words "succeeds" and "fails" in the problem statement.

Each assignment must be solved and written individually.  Do not look at another student's written work, and do not show another student your written work.  However, you are encouraged to discuss the concepts and ideas verbally, provided that everybody involved is contributing equally.  It is acceptable to refer to the textbook or the lecture notes during such discussions.

For coding problems your grade depends upon correctness, efficiency, programming style, and thorough testing.  Provide both the solution to the problem and input code that can be used to demonstrate its correctness.

Due dates for each assignment will be indicated on the Tentative Course ScheduleCoding problems should be submitted via email to borie@cs.ua.edu by 11:59 p.m. of the due dateAttach all the files needed to compile and run and test your programs in a single .zip file.  Other problems (such as writing semantics) may be submitted either on paper at class time, or via email by 11:59pm.