CS Department Logo

COMS W3261
Computer Science Theory Section 001
Fall 2016
  Class meets 1:10-2:25pm, Mondays and Wednesdays, 833 Mudd.

Midterm is Wednesday, October 26, 2016, 1:10-2:25pm.
   Students whose last names begin A-M should go to room 833 Mudd.
   Students whose last names begin N-Z should go to room 1127 Mudd.
See Midterm Review for coverage of the midterm and study hints. Solutions to the sample problems on the midterm review can be found on Courseworks/COMSW3261_3261_001_2016_3/Files/resources.

Course webpage: https://www.cs.columbia.edu/~aho/cs3261
Columbia Courseworks: https://courseworks.columbia.edu
Piazza bulletin board: https://piazza.com/columbia/fall2016/comsw3261_001_2016_3/home
Course wiki: https://comsw3261-001-2016-3.wikispaces.columbia.edu/home

Answers to Homework Assignment #2 have been been posted on the course wiki on Courseworks.
 Teaching Staff
 Name   email   Office hours    Location 
Prof. Al Aho   aho@cs.columbia.edu   Mon & Wed 3:00-4:00   513 CSB picture of Al Aho
Tim Goodwin   tlg2132@columbia.edu   Mon 10:00-12:00   122 Mudd picture of Tim Goodwin
Ethan Liu   yl3156@columbia.edu   Fri 10:00-12:00   122 Mudd picture of Ethan Liu
Flora Park   mp3369@columbia.edu   Thu 4:00-6:00   122 Mudd picture of XXX
Caroline Trimble   cdt2132@columbia.edu   Tue 5:30-7:30   122 Mudd picture of Caroline Trimble
Jessica Vandebon   jav2162@columbia.edu   Wed 4:30-6:30   122 Mudd picture of Jessica Vandebon
 Course Overview
  In Computer Science Theory you will learn computational thinking and get to know the fundamental models of computation that underlie modern computer hardware, software, and programming languages. You will also discover that there are limits on how quickly computers can solve some problems and that there are some problems that no computer can solve.

The course will cover the important formal languages in the Chomsky hierarchy -- the regular sets, the context-free languages, and the recursively enumerable sets -- as well as the formalisms that generate these languages and the machines that recognize them. The course will introduce the basic concepts of computability and complexity theory by focusing on the question, "What are the fundamental capabilities and limitations of computers?" The course will also introduce the untyped lambda calculus, the model of computation underlying functional programming languages.

The concepts covered in this course will be amply illustrated by applications to current programming languages, algorithms, natural language processing, and hardware and software design. The topics covered in Computer Science Theory are required background to many Computer Science upper division courses in programming languages, compilers, natural language processing, computer hardware and logic design, analysis of algorithms, computational complexity, learning theory, and cryptography.

 Pre- or Corequisites
  COMS W3134 or COMS W3137 Data Structures and Algorithms
  COMS W3203 Discrete Mathematics
 Schedule 2016
Date  Lecture  Reading 
Sep 7   1. Introduction to CS Theory  HMU, Ch. 1  
Sep 12   2. Finite Automata and Regular Languages   HMU, Ch. 2  
Sep 14   3. Regular Expressions   HMU, Sects. 3.1, 3.3.1  
Sep 19   4. Regular Expressions and Finite Automata   HMU, Ch. 3  
Sep 21   5. Properties of Regular Languages - I   HMU, Sects. 4.1 - 4.2  
Sep 26   6. Properties of Regular Languages - II   HMU, Ch. 4  
Sep 26   Homework Assignment #1   Due Oct 4 
Sep 28   7. Context-Free Grammars   HMU, Ch. 5 
Oct 3   8. Pushdown Automata   HMU, Ch. 6  
Oct 5   9. CFG's and PDA's   HMU Sects. 6.6, 7.1  
Oct 10   10. Pumping Lemma for CFL's   HMU, Ch. 7  
Oct 10   Homework Assignment #2   Due Oct 20  
Oct 12   11. Properties of CFL's   HMU, Ch. 7  
Oct 17   12. Turing Machines   HMU, Ch. 8  
Oct 19   13. TM Variants   HMU, Ch. 8  
Oct 24   14. Midterm Review   HMU, Chs. 1 - 7  
Oct 26   Midterm in 833 Mudd (A-M) and 1127 Mudd (N-Z)   HMU, Chs. 1 - 7  
Oct 31   15. The Diagonalization Language   HMU, Sects. 8.1.3, 9.1 - 9.3  
Oct 31   Homework Assignment #3   Due Nov 10  
Nov 2   16. The Universal Language   HMU, Sect. 9.2 
Nov 7   Academic Holiday  
Nov 9   17. Post's Correspondence Problem   HMU, Sects. 9.4 - 9.5  
Nov 14   18. Undecidable Problems   HMU, Ch. 9  
Nov 14   Homework Assignment #4   Due Nov 22  
Nov 16   19. The Classes P and NP   HMU, Sects. 10.1, 10.2.1 
Nov 21   20. Satisfiability is NP-complete   HMU, Sects. 10.1-10.3  
Nov 23   21. Restricted Satisfiability Problems   HMU, Sect. 10.3 
Nov 28   22. Additional Classes of Languages   HMU, Sects. 11.1 - 11.3  
Nov 29   Homework Assignment #5   Due Dec 9  
Dec 30   23. The Lambda Calculus I   Edwards: The Lambda Calculus  
Dec 5   24. The Lambda Calculus II   Edwards: The Lambda Calculus  
Dec 7   25. The Lambda Calculus III   Edwards: The Lambda Calculus  
Dec 12   Final Review  
 Required Text
  John E. Hopcroft, Rajeev Motwani, and Jeffrey D. Ullman
Introduction to Automata Theory, Languages, and Computation, Third Edition
Pearson/Addison-Wesley, 2007, ISBN 0-321-45536-3
 Additional References
  Michael Sipser
Introduction to the Theory of Computation, Third Edition
Cengage Learning, 2013

  Alfred V. Aho and Jeffrey D. Ullman
Foundations of Computer Science, C Edition
W. H. Freeman, 1995
An online version of this book is available here.
 Class Policies
  Grading 15 % Best four out of five homeworks
40 % Midterm
45 % Final
  Homeworks Five problem sets will be assigned during the semester. Follow the detailed instructions on each problem set.
Post your solutions to each problem set on Courseworks/COMSW3261/Assignments on or before each due date.
Each problem set is worth 100 points and only the four best of your five problem sets will be counted. The aggregate score of these four assignments will constitute 15% of your final grade.
Since only four out five assignments will be counted, this policy will allow you to skip one problem set for whatever reason you choose. Late assignments will not be accepted.
You must write your solutions in your own words by yourself. You can consult the instructor, the TAs, or your fellow students for help but you must acknowledge any sources you use other than yourself on your answers.
You are expected to adhere to the Academic Honesty Policy of the Department of Computer Science.

aho@cs.columbia.edu Updated October 24, 2016