**Time:**MWF 9:15-10:20

**Location:**CSI G12

**Professor:**David Galles

**Office:**HR 542

**Office Hours**: TR 10-12, M 2-3 or by appointment

Though these are my stated office hours, I am in my office most of the day.

If my door is open (and it usually is), I am happy to talk with students.

**Phone:**422-5951

**Email:**galles@usfca.edu

**Text:**

Required: Lewis & Papadimitriou, *Elements
of
the Theory of Computation, 2nd edition*

**Prerequisites:**

CS 245 - Data Structures and
Algorithms

Math 201/202 Discrete Mathematics

**Grading Policy:**

Grades will be given according to scores on
written homework assignments, midterms and finals, according to the
following percentages.

Assignment | Percentage | Date |

Homework | 40% | Weekly |

Midterm 1 | 15% | 10/7/2013 |

Midterm 2 | 15% | 11/20/2013 |

Final | 30% | Friday, December 6th, 2013, 10:00 AM-12:00 PM. |

Grades will be on a straight scale, with *approximately*:

A | 90% and above |

B | 80%-89% |

C | 68%-79% |

D | 62%-67% |

F | 61% and below |

These are percentages are upper limits -- thus a score of 90 is guaranteed to get at least an A-, 80 is guaranteed to get at least a B-, and so on.

**Academic Honesty:**

You are not allowed to use resources other
than those approved by me for completing your homework.
Specifically, you are not to use homework solutions from previous
iterations of this course. If you have access to old solutions,
throw them out now!! If you get perfect scores on the 25% of the
questions that are repeated, and flail on the 75% of the questions that
are new, you will raise a red flag. You are also not allowed to
search the web for solutions to the homework problems. You
may discuss problems with other students, but each student must write
up the solutions on his or her own. You should never look at the solution of another student.

**Homework**

The homework assignments for this class are
conceptually difficult. In fact, I will be assigning homework
that I do not expect you to be able to complete on your own! To
succeed in the homework for
the class, you must:

- Start work on the homework right after it is assigned, working until you get stuck. When you get stuck on one problem, put it aside and work on the others.
- Come by my office to discuss difficulties you are having with various problems.
- Using the hints & techniques from our discussion, go back and work on your own until you get stuck again.
- Come by my office (again) to discuss the problems, now that you have a greater understanding of the issues
- Work more on the problem on you own.
- Repeat (and repeat!), as necessary.

Note that for this strategy to work, you need to start on the
homework assignments soon after they are they are assigned, especially
since homework will be due weekly. I am expecting a large amount
of work from you –
but I am willing to give a large amount of assistance in return.

**Finals and Midterms**

Both midterms and the final will be closed notes. If
you have a conflict with the midterm dates and times, see me **now**
to see if we can work something out. Requests to change midterm
dates after the first week or two of class will be politely and respectfully
refused. The final date cannot be changed except under
extraordinary circumstances. Conflicting airline reservations are
not extraordinary circumstances.

**Late Policy**

Homework is due by the start of class on the due
date. Late homeworks WILL NOT BE ACCEPTED. If you have difficulty
with an assignment, or some type of time conflict, the correct time to
see me is *before*
it is due.

**Topics to be covered (tentative):**

Mathematical Tools

Set Theory

Functions & Relations

Formal Languages

Proof techniques

Finite Automata

Deterministic Finite Automata (DFA)

Non-Deterministic Finite Automata (NFA)

Regular Expressions

Equivalence of DFAs, NFAs, and Regular Expressions

Non-regular languages

pumping lemma

Context-Free Languages

Context-Free Grammar (CFG)

Parse Trees

Push-Down Automata (deterministic & non-deterministic) (PDA)

Equivalence of CFGs and PDAs

Turing Machines

Definition of a Turing machine

Extensions of Turing machines

Non-Deterministic Turing machines

Equivalence of various Turing machine formalisms

Undecidability

Church-Turing Thesis

Universal Turing Machines

Halting Problem

Other unsolvable problems

Computational Complexity & NP-Completeness

the class P

the class NP

Reductions

the class NP-Complete

Dealing with NP-Completeness