People | Textbook | Grading | Objective | Background | Schedule | Exams | Homework
If you have time/money/desire for a single supplementary reference, I'd recommend getting the book by Sipser (see below). It's quite good and has been used recently as the textbook in CS 4123, which is a continuation of CS 3133.
Make-up exams will not be offered except in cases of true personal
hardship (not e.g. because of travel plans), and only with
suitable corroborating documentation.
What this course is about
This course provides an introduction to computer science "theory".
One of the main objectives is to lay the foundations for an understanding
of the fundamental capabilities and limitations of computers, a pursuit
that will be continued in CS 4123.
With this goal in mind, we ask the question:
what is a computer? We consider several formal models
of machines (computers) and languages (problems).
It turns out that for some of these machine models
we can say rather precisely what languages they "understand",
i.e. what problems they can solve (and what problems they
Such formal languages are useful in their own right
(for instance in the design of programming languages),
so we will touch upon the topic of parsing, meaning the
process of analyzing "sentences" written in these languages.
At the end of the course a different issue,
time complexity, is briefly addressed.
This applies only to problems that can in principle be
solved by a computer (program), and corresponds to the question:
how long would it take a program to solve increasingly
large instances of this particular problem?
This course introduces the theoretical foundations of computer science. These form the basis for a more complete understanding of the proficiency in computer science. Topics include computational models, formal languages, parsing, and an introduction to compatibility and complexity theory, including NP-completeness. Students will be expected to complete a variety of exercises and proofs. Intended audience: computer science majors and others desiring an understanding of the theoretical foundations of computer science. Undergraduate credit may not be earned both for this course or for CS 503. Recommended Background: CS 2022 and CS 2223. Students who have credit for CS 4121 cannot receive credit for CS 3133. Students graduating under the pre-1996 distribution requirements may satisfy the Theory area requirement by taking this course, although it does not count as a 4000-level course.
Some ideas you should be familiar with
You should be comfortable with techniques from discrete mathematics
and algorithms at the level of CS 2022 and CS 2223. A brief review
of some of the more basic material is available via the link
that appears below.
Schedule of Topics
Note: some deviations from this schedule may occur
|Aug. 27-28||chapters 1, 2||Strings, languages
Sipser, chapter 0
|Aug. 31 - Sept. 4||chapters 3, 4||Context-free grammars
Aho et al, 2.2
|Sept. 7-11||chapters 4, 6||Parsing
|Sept. 14-18||chapters 6, 7
opt: Sipser, 1.4
|Finite automata and
|Sept. 21-25||chapters 7, 8||Pushdown automata and
Sipser, chapter 2
|Sept. 28 - Oct. 2||chapter 9||Turing machines||
Sipser, chapter 3
|Oct. 5-9||chapter 14||Time complexity
The class P
|Oct. 12-15||chapters 14-15
opt: Sipser, ch. 7
|The class NP
P vs NP