CMPSCI 501 Formal Language Theory Spring, 2018

Meeting times: MWF 11:15 - 12:05, LGRT 123.      Note: first meeting will be Monday, Jan. 22, 2018.

Instructor: Neil Immerman

CMPSCI 501: Office Hours, Spring 2018
Neil Immerman, CS 374, M,Tu 1:30 - 2:30, and by appointment.
Larkin FlodinTh 3:30 - 4:30 p.m., LGRT 220
Sam McGuireM 10 - 11 a.m., LGRT 220

What is this course about?      CS 501 is an advanced undergraduate/master's-level core course in the theory of computation: formal language theory (finite automata, regular languages, context-free grammars and pushdown automata), computability theory, and complexity theory. This is a mathematical course: you will learn the main mathematical models of computation and how to prove their basic properties.

How Do I Succeed in this Course?      Do all the assigned reading thoughtfully and in advance. Work through all the examples in the text. Every time the author states a result, try to prove it yourself before you read the proof in the book. If you can do it yourself, that's great! If you can't, you will be much more appreciative and able to understand the proof in the book. Work many sample problems! The same way you have to practice when learning a musical instrument or a sport, you have to practice solving problems to develop a facility and an understanding of this material. Please sign up on the CS501 Piazza site. Ask questions there and answer each other's questions. Extra credit will be given for good answers on Piazza and also for the first person to point out any typo or error in any of the handouts, or any typo in the text not already listed in Sipser's errata page for 2nd Edition or errata page for 3rd Edition.

Prerequisites: CMPSCI 311, with a B- or better. It is useful to have "mathematical sophistication", at the level of of getting an A in CMPSCI 250, or in an upper-level math courses.

Required text: Michael Sipser, Introduction to the Theory of Computation, second or third edition.