CSE 596     Course Information     Fall 2018

Instructor: Dr. Kenneth W. Regan   326 Davis Hall   645-4738   regan@buffalo.edu

Office Hours:
Regan: Tuesdays 1--2:30pm, other time TBA.

Lectures (LEC) MWF   2:00pm-2:50pm   in Norton 213

Printed Syllabus. Piazza Page.

"Turing Kit" Simulator, designed by Mark D. Grimaldi for CSE396 in 1997.

Note: The orientation of the course is changing from prior emphasis on formal reasoning and rigor for general doctoral study to greater emphasis on algorithmic content. It may later evolve back into the undergrad+grad 4xx/5xx format that existed when I came in 1989. The change away from the previously-used textbook is part of this evolution. The above-linked notes by Arun Debray from Stanford's undergrad course led by Ryan Williams (about whom, see this blog article by me) share many of my own preferences: Myhill-Nerode Theorem, streaming algorithms, many-one reductions earlier rather than later, Gödel's Incompleteness Theorems included and handled simply, quick road to NP-completeness. The change is also partly reflected in my slides for a 20-hour course given at the University of Calcutta in August 2016.

Lecture Notes

Assignments in Fall 2018

  1. Assignment 1, due Wed. 9/19.
  2. Assignment 2, due Wed. 9/26.

Assignments and Keys From 2016

Assignment 1, due Wed. 9/21.

Assignment 2, due Wed. 9/28. Answer Key (handwritten scan)

Assignment 3, due Wed. 10/5. Answer Key (typeset)

Assignment 4, due Wed. 10/12. Answer Key

Assignment 5, due Wed. 10/26. Answer Key

Assignment 6, due Wed. 11/2. Answer Key

Assignment 7, due Friday 11/11. Answer Key

Assignment 8, due Friday 11/18. Answer Key

Assignment 9 (the last), due Friday 12/9.

Assignment 10 (extra option), due Monday 12/19.

Required Reading---some given out in class besides web-readable.

  1. The "backbone" of the course (except for quantum computing material at the end) will be these notes (original smaller-font version) scribed by Arun Debray from lectures by Ryan Williams at Stanford. They will lead into...

  2. Chapters 27 and 28 (earlier versions) of the CRC Handbook on Algorithms and Theory of Computing , co-authored by me with Eric W. Allender and Michael C. Loui. The "2up" versions will be printed and given out in class.

  3. Extra material for Weeks 2--3: Lecture Notes on Finite Automata by Dr. Mitsunori Ogihara, University of Miami. DFAs, NFAs, Regular Expressions. Slides for visualizing DFAs, collected by Andrew Hughes. NFA slides too.

  4. Handouts on diagonalization, the Myhill-Nerode Theorem, and later subjects as warranted---including the basics of quantum computing.

Optional Reading

  1. The course notes by Debray are based on the popular textbook whose first 7 chapters are under in our undergraduate CSE396 course: Introduction to the Theory of Computation by Michael Sipser. Links: brief MIT page, Amazon page.
  2. Computability and Complexity Theory (2nd ed.) by Steven Homer and Alan L. Selman. This textbook used in many previous years is now optional.

  3. Handouts on a programmer's view of the S-m-n and Recursion Theorems, and the arithmetical hierarchy.

  4. There may be some other optional elements, such as a forum (Piazza or newsgroup) and software to visualize Turing Machines (which needs update/repair). The weblog "Gödel's Lost Letter and P=NP" (rjlipton.wordpress.com), which I co-manage, may play some of the role of a ``course blog.''



The course will be graded on a total-points system. Letter grades will also be given for individual exams and possibly some assignments, as a help in telling you where you stand, but only the point totals will have official significance. The weighting of grades in this course shall be:

Homework: 36%
Prelims: 24%
Final: 40%

I reserve the right to 5% leeway in weighting while assigning the final letter grade-this is most typically done for students who do markedly well on the final exam, when it may be treated as if it were worth 45% for that student. This will only be done to an individual student's advantage, and will have no effect on others' grades.

The homework will consist of weekly or bi-weekly problem sets. All submissions will be in hardcopy.

Problem set submissions must be your own individual work . No joint submissions will be accepted. In an early lecture I will explain the purpose of individual work, academic integrity, and the "qualitative" nature of exercises in this course. I will give guidelines on how work can be done and what can be discussed among you. Cheating will be punished as per department policy-in a graduate community this shouldn't have to be said, but alas it does. The Department's policy statement is available here.

My (KWR) general policy is not to implement a lateness-for-reduced-credit scheme. Instead I say that late work is not acceptable but extensions may be granted on request. Especially in smaller classes I am liberal with extensions, especially the 24-hour kind, but I still wish a request. In return, you get an answer key shortly afterward, and a relatively quick turnaround of graded work before the next problem set is due. In an exceptional situation, you may contact me beforehand.

Approximate Course Calendar

The plan is to cover finite automata and (non-)regular languages in the first three weeks (plus a day), then computability and undecidability through mid-term. The second half will feature computational complexity (using my chapters with Allender and Loui and Debray's notes as parallel texts): time and space complexity defined, why we emphasize P and NP, NPhardness and completeness, other salient complexity classes and the (known and unknown) relationships among them. Basics of randomized algorithms and quantum computing will round out the coverage. Homeworks or Piazza posts will give indication from week to week of exactly what to read. I cannot spell out a timetable in greater detail now because my lectures will adjust to the needs of the class. I welcome feedback to me personally.