CS 381 - Introduction to Theory of Computing, Summer 2004

Lecture topics and relevant textbook references, as well as any additional in-class handouts, will be posted here. You are encouraged to take some time before each lecture to look at the textbook section that will be covered; this will make your class time a lot more productive.

The textbook is divided into sections called Lectures; the references given below are to these sections.

Part 1 - Automata and regular languages

  • May 25 - Course introduction; informal description of finite automata (Lecture 1)
  • May 26 - Key definitions and concepts; formal definition of a DFA (Lectures 2 and 3)
  • May 27 - The product construction; closure properties of regular languages (Lecture 4)
  • May 28 - Introduction to nondeterminism (Lecture 5, and this additional handout about computation trees for NFAs)
  • May 31 - No class - Memorial Day!
  • June 1 - The subset construction for converting an NFA to a DFA (Lecture 6)
  • June 2 - Epsilon transitions; more closure properties of regular languages; intro to regular expressions (Lectures 6 and 7)
  • June 3 - Converting a regular expression to a finite automaton; simplifying regular expressions (Lectures 8 and 9)
  • June 4 - Converting a finite automaton to a regular expression; limitations of finite automata (Lectures 9 and 11)
  • June 7 - The pumping lemma and nonregularity (Lectures 11 and 12)
  • June 8 - DFA state minimization (Lectures 13 and 14)
  • June 9 - Final session on automata; decision problems (additional handout), other odds and ends.
  • June 10 - Prelim 1, covering all the material on finite automata and regular languages up to and including June 8th's class.

    Part 2 - Context-free languages

  • June 11 - Introduction to Context-Free Grammars and Pushdown Automata (Lecture 19)
  • June 14 - Brief discussion of ambiguity in grammars (Lecture 26); balanced parentheses (Lecture 20)
  • June 15 - Chomsky and Greibach normal forms for CFGs; properties of parse trees for CNF grammars (Lectures 21 and 22)
  • June 16 - The pumping lemma for CFLs (Lectures 22)
  • June 17 - NPDAs; converting a CFG to a NPDA (Lectures 23 and 24)
  • June 18 - Converting a NPDA to a CFG (Lectures 24 and 25); a few words about DPDAs and DCFLs (Supplementary Lecture F)
  • June 21 - Closure properties for CFLs; CKY algorithm (Lecture 27)
  • June 22 - Practical issues arising when CFLs are used in compilers (Mostly this additional handout and also Lecture 26)
  • June 23 - Prelim 2, covering all the material on context-free languages up to and including June 21st's class.

    Part 3 - Effective computability and Turing Machines

  • June 24 - Introduction to Turing Machines; the Church-Turing thesis (Lecture 28; also see the Resources section for links relating to some of the topics discussed)
  • June 25 - More examples of TMs; Recursive and r.e. languages (Lecture 29)
  • June 28 - Alternative models of TMs (Lecture 30 and additional handout on nondeterministic TMs); Universal TMs and diagonalization (Lecture 31)
  • June 29 - Undecidability of the Halting Problem (Lecture 31); Other decidable and undecidable problems (Lecture 32)
  • June 30 - More undecidable problems; Reductions (Lecture 33)
  • July 1 - Rice's Theorem (Lecture 34); The example we did was Misc. Exercise 113, p. 344 (solution p. 370)
  • July 2 - Undecidable problems about CFLs (Lecture 35)
  • July 5 - No class in the morning. Optional review session in the afternoon, 2 pm Hollister 362.
  • July 6 - Final Exam, 2-4:30 pm, Hollister 362.