G7400 F'12
Set 1
Set 2
Set 3
Set 4
Set 5
Set 6
Set 7
Set 8
Set 9
Set 10


TitleDue Date
Basic Programming9/14
Languages, Data, and Recursive Programming9/21
More Metafunctions9/28
Conjectures, Theorems, Proofs; Relations10/05
Calculational Semantics for Imperative Languages10/12
The AST Machine10/19
Types and Type Checking10/26
Register Machines11/2
IF Statements and WHILE Loops11/09
Closing the Cycle11/16

Pair Programming:

You must work on all homework assignments in pairs. Pair programming means that you use one computer and one keyboard whenever you work on any part of the problem set. One partner, called pilot, uses the keyboard, while the other one -- appropriately called co-pilot -- watches. The co-pilot should look out for mistakes and enforce the design recipe.

I recommend switching roles in the middle of problems not (just) between problems. Doing so ensures that design knowledge is truly spread over the pair. While the development of software is not the focus of this course, following these basic pair programming rules will also introduce you to elementary software engineering techniques.

Most importantly, pair programming is one way to help you learn. While computers may be able to check the syntax and the semantics of your programs, they do not engage you in conversations about the material. In my experience, such conversations help students understand the various pieces from different perspectives and often eliminate small obstacles in the reading and programming material.

Nevertheless, you are responsible for your PhD and your knowledge. You therefore may not to go outside your current partnership to seek help.

last updated on Wed Nov 7 10:09:15 EST 2012generated with Racket