CSSE 474: Theory of Computation
Computer Science and Software Engineering
Rose-Hulman Institute of Technology

Catalog Course Description

Prerequisites: CSSE 230 and MA 375
Crosslisted as: MA474

Students study mathematical models by which to answer three questions: What is a computer? What limits exist on what problems computers can solve? What does it mean for a problem to be hard? Topics include models of computation (including Turing machines), undecidability (including the Halting Problem) and computational complexity (including NP-completeness).

Course Outcomes

Students who successfully complete this course should be able to:
  1. Discuss the concept of finite state machines.
  2. Design a deterministic finite-state machine to accept a specified language.
  3. Explain context-free grammars.
  4. Explain at least one algorithm for both top-down and bottom-up parsing.
  5. Explain the Church-Turing thesis and its significance.
  6. Determine a language's location in the Chomsky hierarchy (regular sets, context-free, context-sensitive, and recursively enumerable languages).
  7. Prove that a language is in a specified class and that it is not in the next lower class.
  8. Convert among equivalently powerful notations for a language, including among DFAs, NFAs, and regular expressions, and between PDAs and CFGs.
  9. Explain how some problems have no algorithmic solution.
  10. Provide examples that illustrate the concept of uncomputability.
  11. Define the classes P and NP.
  12. Explain the significance of NP-completeness.
  13. Prove that a problem is NP-complete by reducing a classic known NP-complete problem to it.

Instructor

Michael Wollowski

Text

Our primary text is as follows. Readings and assignments will come from it.

Michael Sipser. Introduction to the Theory of Computation, 2nd ed. Thomson Course Technology, Boston, MA, USA, 2006.

For the materials covered in this course, it is a lot of times useful to have an alternate presentation of the materials. Here are a couple of texts you may wish to consult:

Topics

Below is a schedule which gives an ordering of the material we will cover. The correspondence of the materials to weeks is very approximate. You will notice that we are starting out with Turing Machines. They are a very straight-forward concept and are a tremendous aid in setting the agenda for this course.

WeekTopics
1Skills review, Turing Machines
2Turing Machines, Church Turing Thesis, The Halting Problem
3Regular languages
4Regular languages
5Context free languages
6Context sensitive languages
7Decidability
8Reducibility
9Complexity
10Tractable and intractable problems

Grading

There will be two exams and a final.

There will be about 10 homework assignments, containing assignments from the book and other sources. Some of the homework assignments will include tasks such as programming a Turing Machine, developing regular expressions and context-free grammars for a subset of a programming language and to understand Goedel's incompleteness proof.

Your final grade will be determined as follows:

Exam 120%
Exam 225%
Final exam25%
Homework25%
Participation5%

More to come!