Skip navigation.

Contact Us

Department of Computer Science

Janssen Engineering
Room 236
PO Box 441010
Moscow, Idaho
83844-1010

phone: 208-885-6592
fax: 208-885-9052

e-mail:
dept chair
graduate info
undergrad info
sys admin
webmaster

CS Department Banner Graphic

CS 385 Theory of Computation

Total Credits: 3 cr

Course Coordinator: Terry Soule

URL: http://www2.cs.uidaho.edu/~cs385

Current Catalog Description: See Math 385. Mathematical models of computation, including finite automata and Turing machines. Prereq: perm.

Textbook: P. Linz, An Introduction to Formal Languages and Automata, 3rd Edition, Jones and Bartlett, 2001 or similar text.

References: Online notes and handouts, including FSA simulators.

Course Goals: Introduce the student to the need for, and the working of, mathematical proofs. Develop facility for the concepts, notations, and techniques of the theories of automata, formal languages and Turing machines.

Prerequisites by Topic:

  • Trees, graphs, worst case analysis, recursion (CS 121)
  • Induction, counting (Math 175)
  • Series, set theory (Math 176)

Major Topics Covered in the Course: : (duration) (CC2001 BOK reference)

  • Language Theory (AL7)
    • Recursive definitions ( 2 hours)
    • Regular expressions and languages ( 2 hours)
    • Finite automata ( 2 hours)
    • Kleene's theorem ( 1 hour)
    • Myhill-Nerode theorem ( 1 hour)
    • Nondeterminism ( 4 hours)
    • Finite automata with output ( 2 hours)
    • Nonregular languages ( 4 hours)
    • Pushdown automata ( 2 hours)
    • Contex-free grammars ( 2 hours)
    • Chomsky normal form ( 2 hours)
    • Non-context-free grammars and languages ( 3 hours)
    • Parsing algorithms ( 1 hour)
  • Computability Theory (AL5)
    • Turing machines ( 3 hours)
    • The Halting problem ( 1 hour)
    • Rice's theorem ( 1 hour)
    • Complexity Classes ( 2 hours)
    • Completeness ( 1 hour)

Laboratory projects (specify number of weeks on each): None.

Estimated Curriculum Category Content:

Area Core Advanced Area Core Advanced
Algorithms   1 cr Data Structures    
Software Design     Prog. Languages   1 cr
Computer Arch     Other   1 cr

Oral and Written Communications:

Social and Ethical Issues:

Theoretical Content:

  • Finite automata (DFA, NFA, PDA, TM)
  • Grammars
  • Arithmetic Hierarchy
  • Computational complexity

Problem Analysis: The course analyses the limits of computation, both absolute and relative to time/space. We analyze specific languages to separate classes, with respect to models of computation.

Solution Design: : "Solutions" are mathematic proofs, which permeate the course.

Course Outcomes: The following list documents the course outcomes and crossreferences them to the BSCS program outcomes. The letter at the beginning of each reference identifies the program outcome supported. The numbers sequentially identify the course outcome for this course. After completing CS 385 a student should have or be able to:

  • Use mathematical techniques and principles to define problems in terms of languages/sets. (a-1)
  • Use mathematical techniques and principals to determine which language family (including regular, context free, and recursive) a particular language is in. (a-2)
  • Use mathematical techniques and principals to reason about the theoretical difficulty of computational problems. (a-3)
  • Detailed knowledge of the fundamentals of the theory of computation. Including: (a-4)
    a. Write and understand recursive definitions of sets.
    b. Trace the behavior of simple DFAs, NFAs, PDA, and Turing Machines.
    c. Write definitions of regular languages using regular expressions, DFAs, NFAs, and regular grammars.
    d. Apply the Pumping lemma to show that a language is not regular.
    e. Know the basic closure properties of regular languages, context free languages, and recursive languages.
    f. Write definitions of context-free languages using context-free grammars and PDA.
    g. Apply the Pumping lemma to show that a language is not context-free.
    h. Know the relative computational power of different models of Turing Machines (multi-tape, semi-infinite tape, etc.)
    i. Know the definition of a recursively enumerable language.
    j. Know the definition of a recursive language.
    k. Know what the Halting problem is.
    l. Be able to reduce one undecidable problem to another.
    m. Ability to do proof by induction
  • Write clear, understandable mathematical proofs. (f-1)