Prerequisite and Entrance Exam

[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.

Prerequisite and Entrance Exam

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.

Sample Exam

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.

  1. Regular languages.

    1. 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.

    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.

  2. Context-Free Languages.

    1. 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).

    2. Give the pushdown automata for the problem.

    3. Prove the problem is not regular.

  3. Turing Machines.

    1. Describe how a Turing Machine operates.

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

  4. Decidability.

    1. Explain what it means for a problem to be undecidable.

    2. 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 (M1, M2) such that M1 and M2 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.

  5. Time Complexity.

    1. What is meant by the notation O(n)? What is meant by O(n2)?

    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.

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