## Theoretical Foundations of Computing (CS3613), Summer 2016

### University of Information Technology (UIT), Vietnam

#### July 11 - August 5, 2016

#### Lecture: Monday, Wednesday, Friday: 8:00-11:00 AM

#### Room: E3.3

#### Instructor

- Dr. David Cline, Visiting Lecturer
- david.cline@okstate.edu
- Office hours: 1:30PM - 3:30PM M-F

#### Teaching Assistants

- Hien Nguyen Dinh
- Associate Dean of Computer Science Faculty
- hiennd@uit.edu.vn

#### Text

- Introduction to the Theory of Computation (3rd edition)
- Michael Sipser

#### Course Objectives

This course asks the mathematical question “What is a computer, and what can it compute”. Asking this question can lead to some surprising answers about what computers and particular models of computation can and cannot do. Some of the topics we will touch on in the class are:

- Set terminology
- Boolean logic
- Proof methods
- Regular languages and Finite Automata
- Context Free Languages and Push-down Automata
- Turing machines
- The Church-Turing thesis
- Decidability
- Time and space complexity
- P, NP, and NP-completeness

#### Assignments

- In-class problems
- There will be a number of in-class problems to be worked out and turned in during class. Consequently, you should plan to bring paper and pencil to complete these. You may also be called on to demonstrate your solution to one of the in-class problems in front of the class.

- Homework problems
- There will be 7 problem sets throughout the term. These should be completed on paper, and turned in on the day shown on the syllabus schedule.

- Tests
- This class has a midterm and a final test. The midterm will be administered in class near the middle of the term. The final will be comprehensive and will be administered on the last day of class.

#### Grade Breakdown

- In-class problem sets: 20%
- Homework problem sets: 30%
- Tests: 50%

#### Lecture Notes and Homeworks

#### Tentative Schedule

Day | Reading (Sipser) | Topics | Assignments |
---|---|---|---|

July 11 | 0.1, 0.2 | Notations and terminology (lecture 1) | |

0.3, 0.4 | Types of proof (lecture 1) | ||

0.4 | More types of proof (lecture 1) | ||

July 13 | 1.1 | Finite automata (lecture 2) | |

1.2 | Regular Languages and Nondeterminism (lecture 2) | ||

1.3 | Regular expressions and regex (lecture 2) | (HW 1: 0.1-0.4) | |

July 15 | 1.4 | The pumping lemma (lecture3a) | |

2.1 | Context-Free Grammars (lecture 3b) | ||

2.1 | Context-Free Grammars (lecture 3b | (HW 2: 1.1-1.3, regex) | |

July 18 | 2.2 | Pushdown Automata (lecture 4a) | |

2.3 | Equivalence of PDA’s and CFG’s (lecture 4b) | ||

2.4 | Pumping lemma for CFL’s (lecture 4b) | (HW 3: 1.4-2.1) | |

July 20 | Recursive Descent Parsing (lecture 5) | ||

Recursive Descent Parsing (lecture 5) | |||

3.1 | Turing machines (lecture 6) | (HW 4: 2.2-2.4) | |

July 22 | 3.2,3.3 | Variants of Turing machines (lecture 6) | |

Diagonalization (lecture 6b) | |||

4.1 | Decidable languages (lecture 7) | ||

July 25 | 4.2 | Decidability (lecture 7) | |

6.4 | Information (lecture 7b) | ||

Midterm review, review questions | (HW 5: 3.1-3.3) | ||

July 27 | Midterm | ||

July 29 | 7.1 | Measuring complexity (lecture 8) | |

7.2,7.3 | P and NP (lecture 8) | ||

7.4 | NP-completeness (lecture 8) | (HW 6: 4.1,4.2, 6.4, Diagonalization) | |

Aug 1 | 7.5 | NP-complete problems (lecture 9) | |

8.1 | Reducibility (lecture 9) | ||

Reducibility 2 (lecture 9) | (HW 7: 7.1-7.3) | ||

Aug 3 | 10.1,10.2 | Probabilistic algorithms (lecture 10) | |

Final review | |||

Review questions | |||

Aug 5 | Final |