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 (though I will be in my office only
rarely during S21), office hours for Spring 2021 Tue 11-12, Fri 1-2.
Zoom number on course Moodle page.

I generally answer my email fairly reliably.

**TA Contact Info:** Rik Sengupta
rsengupta@cs.umass.edu.
Office hours TBA.

**Grader Contact Info:**
Ansh Chandra,
Sattwik (Sunny) Das,
possibly another TBA.

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 CMPSCI 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 CMPSCI 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.

The course will have three snychronous meetings a week, MWF 11:15-12:05.

The Monday and Wednesday classes will be discussion meetings not
unlike those in COMPSCI 250 or 311. Half the students will attend
Monday and the other half Wednesday, and in each class I will present
a problem or problems, divide you into groups in breakout rooms, and
have each group submit an answer at the end of the session. I did
this in COMPSCI 575 last term and had an unfortunate size imbalance
between the sections, so I need to balance them. Unless you have a
problem
with it, you should go to **Monday** discussion if your UMass
student number is **odd**, and to **Wednesday** discussion if it
is **even**. I, the TA, and the graders will be present to help
during the discussions, rotating through the breakout rooms.

The Friday class will be an optional "non-lecture" -- I'm not sure what format this will take exactly and it may evolve during the term.

The course will use the Moodle course management system, and much course material will be available only there.

**Announcements (1 February 2021):**

- (1 Feb) Office hours established, HW#1 posted.
- (29 Jan) All students on the Moodle roster have been added to
the Gradescope and Piazza sites. The first week of lectures are up
on Echo360, and the second week will go up probably tomorrow.
Remember that we
*do*have discussions this coming Monday and Wedensday, on material that is largely review from CS 250. - (19 Jan) Syllabus/schedule and requirements/grading pages are now up.
- (18 Jan) This area of the main course page will serve as a blog and will be my medium for communications with students that I want to archive for the public. The primary medium for communication will be the Moodle site. I've set up the main page today and will have the basic components of the public web site up soon. In most respects, transition to online format aside, the course will operate very much like the Spring 2017 version -- the web site for that is still up, here.

Last modified 1 February 2021