This is the home page for COMPSCI 501. COMPSCI 501 is an advanced undergraduate/master's-level core course in the theory of computation and will deal with formal language theory (finite automata, regular languages, grammars, and pushdown automata), computability theory, and complexity theory.

COMPSCI 501 counts as an upper-level undergraduate elective course for computer science majors, a menu course for math majors in the computing track, and a theory core for M.S. students in computer science. Undergraduate and graduate students will have the same assignments and the same grade scale.

**Instructor Contact Info:**
David Mix Barrington, 210 CMPSCI
building, 545-4329), office hours for Spring 2024 Monday 2:30-3:30,
Tuesday 10:00-11:00 (Zoom only), Thursday 4:00-5:00.
Zoom number on course Moodle page.

I generally answer my email fairly reliably. I do answer my other email address, but less often, and it doesn't forward to my main address.

**TA Contact Info:** Kyle Doney
kpdoney@umass.edu,
Jacob Urisman jurisman@umass.edu,
Maha Alkhairy malkhairy@umass.edu.

**UCA Contact Info:**
Ben Burns,
Tristan Carel,
Segev Moritz.

**Office Hours:** (LGRT 220 unless specified)

- Monday: Dave 2:30-3:30 (210 CSB)
- Tuesday: Dave 10:00-11:00 (zoom), Jacob 2:00-3:00 (CS 207)
- Wednesday: Kyle 11:00-12:00, Maha 4:00-5:00
- Thursday: Dave 4:00-5:00 (210 CSB)
- Friday: Tristan 4:00-5:00, Ben 5:00-6:00

The course is primarily intended for undergraduates in computer science and related majors such as mathematics or computer engineering, for master's students in computer science, and for graduate students in other fields with the appropriate background and interest. COMPSCI 311 (theory of algorithms) is the primary prerequisite, though this may be negotiable for students with a strong mathematics background. The mathematical techniques taught in COMPSCI 250 (or similar courses like MATH 300 or MATH 455) will be used heavily. No programming will be assigned, but familiarity with programming at the level of at least COMPSCI 187 (data structures) will sometimes be assumed. This is probably the mathematically most difficult course in the COMPSCI undergraduate curriculum. It is a semi-elective course -- it fills requirements for any CMPSCI major and many MATH majors, but should be taken only by students whose mathematical ability and/or motivation is average or above relative to COMPSCI majors.

The textbook for the course is Introduction to the Theory of Computation by Michael Sipser, *third
edition*. This is a very good book: I will be following it very closely
for my lectures, and it is a very good long-term reference, but it is rather
expensive. I will be using the third edition -- the second edition
has pretty much the same material (except for extra material on CFL's
that I won't be using) but exercise numbers will differ.
The book information has been posted on
SPIRE, and thus the University's ECampus textbook entity has copies of the book
available.

Lectures, typically 4-6 totaling 90-120 minutes per week, will be asynchronous and recorded on Echo360. They will follow the textbook pretty closely.

I taught this course in Spring 2021 as a fully remote class, and before that in Spring 2017, when it was considerably smaller, so I've debated how to implement it for Spring 2022 and thereafter, coming up with a "semi-flipped" model.

We have two synchronous class meetings per week, Mondays and Wednesdays 5:30-6:45 p.m. in room S131 of the Integrative Learning Center. (As I write, UMass have not yet announced any changes for the coming term related to COVID, but it's certainly conceivable that we might go remote for some time at some point.)

My plan is to have ten discussion meetings (as in COMPSCI 250 or 311) on most Mondays. You'll be divided into groups of about four students and work together on a set of problems, with staff circulating around the room.

For lectures, we have the recorded ones from 2021, with slides, delivered by me or by Rik Sengupta, broken into five videos each week (60 total, averaging about 20 minutes each). These will be asynchronous and will be on Echo360.

Then, with the other 16 class sessions, we will have "semi-lectures". I'll address the main points of each of recorded lectures, but not in as much detail as the lectures will do. I'll also have more opportunity to work examples on the "blackboard", and respond to student questions. These will be recorded on Echo360.

We'll be using Piazza for most internal communications, Gradescope for exams and homework, and Moodle mostly to link things.

**Announcements (25 January 2024):**

- (25 January) Updated TA roster.
- (31 Dec) This is a temporary page so far.
- (1 Jan) Updated TA and UCA addresses.
- (5 Feb) Corrected Ben's email, added office hours, added HW deadlines. In many respects, transition to semi-flipped format aside, the course will operate very much like the Spring 2017 version -- the web site for that is still up, here.

Last modified 6 February 2024