Computer Science 383

Theory of Computation

Fall 2018

 Me: Bob Geitz, King 223A    x-8386 Office Hours: MWR 1:30-3:30, or by appointment I am around most of the day when I am not in class.

Overview

This is a course in the theory of computation, a field that is considerably older than computers and computer science itself. We will look at issues related to what can be algorithmically computed and what can be said about the computational process, including time and space complexity. Although the models of computation we will use are quite concrete and easily programmed, our interest in them is primarily mathematical. We will write many proofs, just as you did in the Algorithms class, but the proofs in this class tend to be more constructive and less abstract.

Learning Goals: Here is what you should get out of this course:

• An understanding of the limits of computation. Not all problems can be solved algorithmically. We will see how it is possible to show that a given problem cannot be solved.
• An understanding of formal languages. Almost every program processes input in some way, and sets up a dialog between the the computer and the input source. We will look at the language of that dialog, its properties, and what computational resources are necessary to process it.
• An understanding of grammars. Grammars are the most succinct tool for describing languages. We will describe several classes of grammars and the properties of the languages they define.
• An understanding of computation as a process. Some problems inherently need more computational resources than others. We will categorize problems by the types of resources they require.
• A deeper understanding of proofs. You may find that the proofs in this class are easier to wrap your head around than the proofs in the Algorithms or Discrete Mathematics classes.
• A deeper understanding of induction. Most of the proofs in this class use some form of induction. You will see that it is as powerful a tool as recursion, and just as easy to use.

Textbook:

Automata Theory, Languages, and Computation, 3rd edition by Hopcroft, Motwani, and Ullman; Pearson/Addison-Wesley 2007. I am sorry this is expensive, but I think it is the clearest book available on the theory of computation.

We will have 2 in-class exams during the semestezr and a comprehensive final exam. Here is how the grades for the course will be composed:

• Homework 35%
• In-class exams 20% each
• Final exam 25%

Note that the final exam will be Wednesday, December 19 at 2pm. This time is set by the Registrar and I cannot change it for the class or for individuals. If you have issues with this time you should talk to Bo Arbogast or Donna Russell in the AARC immediately.

Homework

Most of your learning in the course will come from the homework. The homework assignments will take time -- I would guess about 6 to 10 hours per week. You are welcome, and even encouraged, to form a study group to work on the homework. Mathematics is all about communication. The most important thing you can take from this course is the ability to formulate a convincing mathematical proof and that requires an audience to be convinced. So you can work out solutions to the problems in a group. However, you must write up your own statement of the solutions.

Your solutions should be submitted as a hard copy; I will not accept homework by email.. Many proofs in this class consist of diagrams, and those can be hand-drawn as long as they are legible. Narrative proofs should be typed. I don't particularly care if you use TeX or MS Word, but I want printed, not handwritten text. There is a reason for requiring you to type solutions. We are all sloppy with hand-written copy; we cross things out, draw arrows to new text, and so forth. Mathematics requires precision and careful use of language. It is much easier to see if a proof is correct if it is typed.

At the top of your solutions say who you worked with on the assignment. If you worked with person X and your solution isn't quite clear, person X's solution might help us to understand yours. Somewhere, preferably at the end, include the Honor Pledge: "I have written these solutions myself; I have given them to no one else"

Late homework: You can hand in one assignment up to 2 days late without penalty. Other assignments can be handed in up to 2 days late but are docked 50%. Except in extreme circumstances (I would need to hear from your class dean) homework that is more than 2 days late will receive no credit. For the most part you are better off turning in an assignment that is incomplete than turning it in late.

The Honor Code

The Honor Code has a straightforward application to this class. On all of the exams you are responsible for your own work; you may neither give nor receive any information during the course of the exam. If someone takes an exam at a different time than the rest of the class there may be no communication concerning the exam between that person and anyone else in the class, not even whether the exam was easy or difficult. For the homewok you are welcome to talk to anyone you like but you must write your own solutions.

Course outline:

 Week Day Topic Notes Week 1 September 4-7 Introduction Finite Automata; Regular Languages Chapters 1,2 Week 2 September 10-14 Regular Expressions. The equivalence of Regular Expressions and Finite Automata Chapter 3 Week 3 September 17-19 The Pumping Lemma Determining whether a language is regular Chapter 4 No class on September 21 eek 4 September 24-28 Propeties of Regular Languages Chapter 4 Week 5 October 1-5 Context-Free Grammars and Languages Chapter 5 Exam I: Reular Languages Week 6 October 8-12 Pushdown Automata Chapter 6 Week 7 October 15-19 Context-Free Languages and Pushdown Automata Chapter 7 FALL BREAK! Week 8 Oct 29 - Nov 2 Properties of Context-Free Languages Chapter 7 Week 9 November 5-9 Turing Machines Chapter 8 Week 10 November 12-16 Computability Chapter 9 Exam 2: Context-Free Languages Week 11 November 19-21 The Halting Problem Chapter 9 Week 12 November 26-30 Decidability and Recursive Enumerability Chapter 9 Week 13 December 3-7 Cook's Theorem Chapter 10 Week 14 December 10-12 NP Completeness Chapter 10 Final Exam: Wednesday, December 19, 2-4 PM