next up previous
Next: Required Reading


CSE396 Course Information, Spring 2021

Instructor:

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

TA:

Rui Li, rli35@buffalo.edu

Office Hours:

Lectures and Recitations (now all remote):

(LEC)
TuTh 12:40--2:20pm remote (HyFlex in Knox 20 may be possible again later)
(R1)
Mondays 8:00--8:50am, remote
(R2)
Mondays 5:20--6:10pm, remote
(R3)
Mondays 4:10--5:00pm, remote
(R4)
Thursdays, 4--4:50pm, remote. (Previous mistake "Fridays" fixed.)
Recitations do not meet in Week 1.

Syllabus from 2019 (differences to be noted in first lecture but mostly similar)

Examinations:


Survey Sheet (non-graded item on Autograder)

Assignments and Answer Keys (will appear here, note 2019 assignments below)

  1. Assignment 1, due Tue. 2/16, 11:59pm
  2. Assignment 2, due Tue. 2/23, 11:59pm
  3. Assignment 3, due Tue. 3/2, 11:59pm
  4. Assignment 4, due Tue. 3/9, 11:59pm
  5. Assignment 5, due Tue. 3/23, 11:59pm
  6. Assignment 6, due Tue. 3/30, 11:59pm
  7. Assignment 7, due Tue. 4/6, 11:59pm
  8. Assignment 8, due Tue. 4/13, 11:59pm
  9. Assignment 9, due Tue. 4/27, 11:59pm
  10. Assignment 10, due Thu. 5/6, 11:59pm

Sample Prelim I Exam, from Spring 2019

Sample Prelim II Exam, from Spring 2019

Sample Final Exam, from Spring 2019

Lecture Notes in 2021 (will appear here, see below for previous years)

  1. Week 1: Tue. Thu. (part before demo)
  2. Week 2: Tue. Thu.
  3. Week 3: Tue. Thu.
  4. Week 4: Tue. Thu.
  5. Week 5: Tue. Thu.
  6. Week 6: Tue. Thu.
  7. Week 7: (Tue=Prelim I) Thu.
  8. Week 8: Tue. Thu.
  9. Week 9: Tue. Thu.
  10. Week 10: Tue. Thu.
  11. Week 11: Tue. Thu.
  12. Week 12: Thu. (Tue. was Prelim II)
  13. Week 13: Tue. Thu. (plus first half of Tue. 5/4)
  14. Week 14: Tue. Thu.



Spring 2019 Assignments

(their answers will be available inside Piazza)
  1. Assignment 1, due Fri. 2/15, 11:59pm
  2. Assignment 2, due Thu. 2/21, 11:59pm
  3. Assignment 3, due Thu. 2/28, 11:59pm
  4. Assignment 4, due Thu. 3/7, 11:59pm
  5. Assignment 5, due Thu. 3/28, 11:59pm (TopHat portion now 1 attempt only)
  6. Assignment 6, due Fri. 4/5, 11:59pm
  7. Assignment 7, due Thu. 4/11, 11:59pm
  8. Assignment 8, due Thu. 4/18, 11:59pm
  9. Assignment 9, due Thu. 5/2, 11:59pm
  10. Assignment 10, due Thu. 5/9, 11:59pm

Lecture Notes in 2019


2021 Piazza page


Extra Resources (some may be used officially)

Setup instructions for the "Turing Kit" DFA/TM simulator (optional).

Or more simply, download TKIT70.zip to your PC, unzip and navigate your command line to that folder, and run

java -cp TKIT70.jar Main

Open the file DragonSL.tmt and then do View--Auto Resize to get a bigger canvas. You can also load a different color scheme and much else.

ASCII text pseudocode for the FA-to-regexp algorithm, expressed using a matrix of regular expressions.

Supplementary lecture notes on the Myhill-Nerode Theorem. Note too that this is covered in the Chapter 1 problems section, and both editions of Sipser give the proof (both directions) in the answers section.

Typeset and expanded handout on "Structural Induction" using context-free grammars.

Supplementary handout on Chomsky normal form conversion, with a worked-out example. (This spells things out more than the text does in its proof of Theorem 2.9---adding two optional steps removing "dead" and "unreachable" variables---but it's the same process.)

Notes on Turing Machines and PDAs (some sideways):







Nature and Purposes of the Course

The first main objective of the course is to convey those major concepts and results in the theory of computation that guide our thinking about the power of computers and the problems we can solve with them. This includes the entire historical origin of the field in the work of Alan M. Turing, John von Neumann, and Stephen C. Kleene. Finite automata, regular expressions, context-free (and other) grammars, pushdown automata, and idealized programs (if not the Turing machine, think of the Java Virtual Machine) are tools of everyday computing practice. Computational complexity theory asks the fundamental question of how much time, memory, and other computational resources computers need to solve certain problems, and today is relied upon for Internet security.

A second main objective is not as "concrete" as the above-listed syllabus material, but is just as important. Computers are by-nature entirely formal entities---they do precisely what is prescribed in programming languages that are ultimately formal and mathematical. Not just to reason about them, but even to communicate effectively in the field and on the job, one must be able to state assertions precisely and design prototypes concisely. This requires fluency in the underlying mathematical language used to describe problems, computations, and objectives. This course gives valuable training in formal modes of reasoning, analysis, and presentation.


Items From Previous Semesters


Lecture Notes from 2018

Lecture Notes from 2017

Spring 2016 Lecture Notes