Mechanics Syllabus Assignments Supplemental
CS 581: Spring 2012


Grading Rubric guide:

Illustrate result = 2 points
"Illustration" problems are those that show understanding of a result or technique from the reading. They are frequently identified as "Exercises" in Sipser.
2 = solution is a correct illustration of result
1 = repairable systematic application of result to be illustrated
0 = does not show understanding of result to be illustrated

Construction = 5 points
The "construction" portion of a problem involves defining the mathematical structure (machine, grammar, language) that is intended to have the property of interest. Frequently constructions will be supported by proofs of specific properties or at least justifications that explain the construction.
5 = clearly presented correct construction
4 = minor repair required
3 = significant repair required
2 = shows understanding of the problem

Proof = 5 points (per major claim)
A proof is a formal mathematical argument for a specfic claim.
5 = clear and correct
4 = minor repair
3 = outline is logically sound and similar to correct result
2 = fundamental error in logical structure of argument, but well enough presented to diagnose error

Justification = 3 points
A justification is an explanation of a construction that identifies key concepts necessary to understand its correctness. Justifications may explain the semantic significance of states, associate "sublanguages" with variables in a grammar, or call out other properties that will help the grader identify the correctness of a construction.
3 = clear and correct; articulates key properties
2 = minor repair

Note: Sometimes I will expect a more detailed argument than Sipser models in the text. I have tried to use the rubric to indicate when I expect proofs or systematic justifications of the correctness of constructions.

Assignment 0, Please submit at Lecture 2.

Assignment 0 is intended to be somewhat self-diagnostic. If these concepts are unfamiliar then you may be unprepared for this course.

All problems are from Sipser:

  1. Sipser 0.1 d,e,f
  2. 0.2 d,e,f
  3. 0.3 f
  4. 0.7 (note: part c is subtle)
  5. 0.8

Assignment 1, due at Lecture 3

Sipser (numbers in [] are for first edition). Applicable rubric in angle brackets (<>).

  1. 1.3 [1.3] (Draw DFA) <Illustrate>
  2. 1.4g [new] (Construct intersection) <Illustrate>
  3. 1.5d [new] (Complement) <Illustrate>
  4. 1.31 [1.24] (Closed under reverse) <Construction> <Proof>
  5. 1.32 [1.25] (Correct sums) <Construction> <Justification>

I developed a tutorial for the Haskell tools based on this assignment.


Assignment 2, due Lecture 5


  1. 1.16 (b) [1.12(b) in 1st edition] <Illustrate>
  2. 1.21(a) [1.16(a)] <Illustrate>
  3. 1.46(a) [not in 1st edition] <Proof>
  4. 1.51 [1.34] Indistinguishable by L is an equivalence relation. <Proof> <Proof> <Proof>

Assignment 3, due Lecture 7

Sipser 2nd edition [first edition]:

  1. 1.52 [1.35] Myhill-Nerode theorem. Please answer in your own words; the 2nd edition contains a sample solution. a.<Proof> b. <Construction><Proof> c.<Proof>
  2. 2.2 [2.2] <Illustrate> <Illustrate>
  3. 2.18 [2.17] <Construction> <Proof> <Illustrate>
  4. 2.35 [2.20] <Proof>

Assignment 4, due Lecture 9

Sipser 2nd edition [first edition]:

  1. 2.30 a,d [2.18 a,d] <Proof> <Proof>
  2. 2.22 [2.26] Hint: Focus on how two strings can be different. Two strings can be different if they are different lengths, or if there is some corresponding position where they differ. Your solution only needs to find a single difference. I have seen understandable solutions that use either a PDA or a grammar to define the language. As a warm up problem it may be useful to find a description for w#x#y#z such that |w| = |y|.
    <Construction> <Justification>
  3. 3.6 [3.6] <Illustrate>

Assignment 5, due Lecture 13

Sipser 2nd edition

  1. 3.18 [3.16] <Construction> <Proof> <Construction> <Proof>
  2. 4.6 [4.7] (diagonalization, {0,1}^\omega is not countable) <Illustrate>
  3. 4.17 [4.17] (C is Turing-recognizable if there is a decidable language D such that C = {x| \exists y . <x,y> \in D}) <Construction> <Proof> <Construction> <Proof>

Assignment 6, due Lecture 15 (may be supplemented)

Sipser 2nd edition [1st edition]

  1. 4.18 [4.18] (any two disjoint co-Turing-recognizable languages are separated by a decidable language) <Construction> <Proof>
  2. 5.28 [5.22] (Note: sample solution is given in 2nd edition; however collaboration policy applies!)
  3. 5.30 [not in 1st edition]

Assignment 7, due Lecture 17

New assignment 7: primrec.pdf MY.hs NaturalPR.hs

pdf file [assignment may be revised for this class offering]

Assignment 8, due Lecture 19

Here is the updated pdf file.

Tim Sheard's calculator is

The Haskell Platform is

(note: A sample solution for an earlier version of this assignment is available here; however the collaboration policy applies!)

Assignment 9, Do not hand in.

Supplemental assignment pdf file.