CS 655 - Homework

Homework Assignments

All homework must be completed individually. You may discuss the problems with others but you must turn in your own work. You may either (1) email me your PDF or PS homework file, (2) give me your homework in class, (3) give me your homework during my office hours, or (4) slip your homework under my office door. If the homework assignment includes a programming component, you must email me your code.

Do not make use of any other delivery method for your homework (e.g., carrier pigeons, my faculty mailbox).


  1. Homework 1 Written (last update -- minor tweaks -- Wed Jan 25 20:16:43 EST 2006 ).
    Homework 1 Code. Homework 1 FAQ.
    Homework 1 Summary.
  2. Homework 2 Written (last update -- minor tweak in exercise 3 example programs -- Fri Jan 27 08:35:43 EST 2006 ).
    Homework 2 Code (verison 2) (last update -- fixes to make test -- Fri Jan 27 08:49:03 EST 2006 ).
    Homework 2 FAQ.
  3. Homework 3 Written.
    Liskov et al.'s Abstraction Mechanisms in CLU.
    Stroustrup's What is "Object-Oriented Programming"?.
    Homework 3 Code.
    Homework 3 FAQ.
  4. Homework 4 Written
    (No code component. Work on your project proposal.)
  5. Homework 5 Written.
    Homework 5 Code (version 3!).
    Homework 5 FAQ.
    Simplify (for Windows) or Simplify (for Linux) or Simplify (for OS X) or Simplify (for Solaris) --- download one and rename it to $TOP/Simplify (i.e., put it in the same directory as nf.ml)
    Necula et al.'s CIL: Intermediate Language and Tools for Analysis and Transformation of C Programs (optional)
    Detlefs, Nelson and Saxe's Simplify: A Theorem Prover For Program Checking (optional)
    Manuvir Das' Unification-based pointer analysis with directional assignments (optional, the GOLF paper)
    Bush, Pincus and Seilaff's A Static Analyzer For finding Dynamic Programming Errors (optional, the PREfix paper)
    Homework 5 CIL Precompile for x86/Cygwin (optional, but if you can't build Cil yourself or you're getting those "Misc.Fatal_errors" when compiling, just drop this one in)
    O'Reilly's Develping Applications With Objective Caml (really optional, but if you feel you need extra help with OCaml, this book probably has the answers -- you can also talk to me)

Random Somewhat-Related Humor

  1. The Guru of Chelm (evaluating systems)
  2. K-Coward (taking math too seriously)
  3. Hamlet PowerPoint (problems with all-PowerPoint presentations)
  4. Universal Poker (proof theory: why is Truth's opposite "Void"?)
  5. How To Prove It (alternative techniques to structural induction)
  6. Polynomial Hierarchy Collapses: Thousands Feared Tractable
  7. GCC International (promoting international understanding)
  8. Microsoft Buys TeX (note "What were we thinking?" and "third-party display driver")
  9. Feel-Good Abstraction (at what level should we analyze and design?)
  10. Parametric Worm (Microsoft security explained)
  11. 1776 Computers (historical perspectives)
  12. Security Important (system and user security)
  13. Jobs Translated (meanings of terse utterances)

Other Similar Courses

Here are some example homeworks from similar courses at other universities (these should actually work as of 5pm Jan 17, but are probably a bit more "implementation-heavy" than what you'll see in this course):