COMS W3261 Computer Science Theory Section 001 Fall 2017 |
Announcements | ||||||||||||||||||||||||||||||||||||||||||
Welcome to Computer Science Theory, Section 1, for Fall 2017! This website contains all information relevant to the course. Class meets 1:10-2:25pm, Mondays and Wednesdays, 428 Pupin. The CS Theory final exam will be held Dec 11, 2017 in class. It will cover lectures 12-24. Homework assignment #5 is due on Courseworks by 11:59pm Mon, Dec 11, 2017. Solutions to HW4 have been posted on Courseworks/COMSW3261/Files. Course webpage: https://www.cs.columbia.edu/~aho/cs3261 Columbia Courseworks: https://courseworks.columbia.edu Piazza bulletin board: https://piazza.com/columbia/fall2017/comsw3261_001_2017_3/home Course wiki: https://comsw3261-001-2017-3.wikispaces.columbia.edu/home |
||||||||||||||||||||||||||||||||||||||||||
Teaching Staff | ||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||
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 probably approximately correct learning, the model of computation underlying machine learning, and 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 2017 | ||||||||||||||||||||||||||||||||||||||||||
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. |
||||||||||||||||||||||||||||||||||||||||||
Scott Aaronson and Nancy Lynch 6.045J Automata, Computability, and Complexity, Spring 2011 MIT OpenCourseWare |
||||||||||||||||||||||||||||||||||||||||||
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 November 1, 2017 |