[Note: this webpage last modified Friday, 04-Feb-2011 19:44:51 EST]

The course description for this course states that taking CS 420/520 (the undergraduate version of the course) is a prerequisite. We experimented with allowing courses at other universities to count for this prerequisite, and the results were not desirable. The students did not in fact have the necessary background, and 620 degenerated into being essentially the same as 420/520. This is a disservice to our students and to our program.

Thus we have amended the prerequisite requirement. To take this course,
a student **must** either (a) take CS 420/520 at ISU and obtain a
sufficient grade, or (b) pass a written entrance exam demonstrating basic
knowledge of the material covered in 420/520. The exam will be given during
the first lecture of classes, as communicated via email and
on the General Information and Announcements
page.

__Exam Difficulty:__ The purpose of the exam is to verify *basic*
knowledge of the material covered in 420/520. If you have taken a course
in theory of computation, languages and automata, or something similar, you
should have no problem passing the exam. We do not expect you to remember
everything from a course that may have been taken a few years ago. A
student will pass the exam if they get a score of at least 50%. A
sample exam is given below.

__Why Do We Care?:__ It is important to truly enforce the prerequisite
for 620 for two main reasons. First, the material covered in 420/520 is
fundamental material that every student graduating with a degree in
computer science should have seen. Second,
we want to verify each student has the necessary background to succeed
in an advanced, graduate-level theory of computation course.

__What Should I Do?__ If you have not taken a theory of computation,
languages and automata, or similar course previously and think you
probably will not pass the exam (a sample is given below), you should
take CS 420/520 before signing up for 620. Note that CS 520 counts as a
course for the master's program, so this should not delay your completion
of the program. If you have taken 420/520 at ISU, then you should sign up
for 620, and you do not need to pass the entrance exam. If you have taken
something similar to a theory of computation or languages and automata
theory course elsewhere and think you will pass the exam, then you can sign
up for 620.

If you think you would likely fail the entrance exam, you should drop
620 and sign up for 520 instead. I suggest doing this soon so that you
can get into 520 before it fills up.
If you are unsure of what to do or think that your situation
deserves special consideration, please set up an appointment to meet
with myself or one of the other CS faculty (professors Abhyankar,
Exoo, Hutchison, and Sternfeld) **before the semester starts**.

__Exam Syllabus and Format:__
The Michael Sipser text
Introduction to the Theory of Computation
serves as the syllabus for the test. 420/520 generally covers chapters on
background, regular languages, context-free languages, the
Church-Turing thesis, decidability, reducibility, and time complexity
(these are chapters 0-5, 7 in the text). The basic material from
these chapters forms the syllabus for the exam. Note that you must
only obtain 50% to pass the entrance exam, so you may choose to focus
on reviewing only 2/3 of the material in preparing for the exam.

The exam consists of a number of questions, testing basic knowledge of this material. The difficulty of these questions is at the level of the basic examples, exercises, and problems from the Sipser text. The student will be given a few hours to take the exam in the presence of a faculty member. A student who has recently taken 420/520 and done well would likely finish the exam in about 30 minutes. The goal is that even a student who took a theory of computation or languages and automata theory course a few years ago could pass the test without spending too much time reviewing.

Here is a sample of what the exam might look like. This gives you a feel for the level of difficulty of the questions on the exam.

Regular languages.

Give a

*deterministic finite automata*for the set of binary strings corresponding to*even numbers*. Leading zeros in the binary string are allowed, so 0010 is a valid binary string representing the number 2.Give a

*regular expression*for the set of binary strings corresponding to*odd numbers*. Leading zeros in the binary string are allowed, so 0011 is a valid binary string representing the number 3.

Context-Free Languages.

Give an example of a problem that is not regular (there is no deterministic finite automata for the problem) but that can be decided by a deterministic pushdown automata (a deterministic finite automata that also has access to a stack).

Give the pushdown automata for the problem.

Prove the problem is not regular.

Turing Machines.

Describe how a Turing Machine operates.

Draw a picture of and label the parts of a Turing Machine.

Decidability.

Explain what it means for a problem to be undecidable.

The following are all undecidable problems: (i) set of all Turing machine, input pairs (M, x) such that M halts in finite time when given x as input (a.k.a. the halting problem), (ii) the set of all Turing machines that never accept any string (they compute the empty set), (iii) the set of pairs of Turing machines (M

_{1}, M_{2}) such that M_{1}and M_{2}accept the same set of strings (compute the same language).Choose one of these problems, and prove that it is undecidable. You may use the fact that the other two problems are undecidable.

Time Complexity.

What is meant by the notation O(n)? What is meant by O(n

^{2})?List three well-known problems that can be computed in polynomial time. List one well-known problem that either cannot be computed in polynomial time, or is conjectured to require more than polynomial time to solve.

Explain what an NP problem is and what is meant by the term NP-complete.