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 TBA.
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.
Office hours TBA.

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

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.

Reading assignments are from Sipser, *An Introduction to the Theory
of Computation*, third (or second) edition, available through the
university's eCampus entity and elsewhere.

Class meetings are MW 5:30-6:45 in room S131 ILC, unless there are future changes due to COVID. (We would likely have synchronous meetings at those times in that case.)

The Spring 2021 lectures are asynchronous and will be on Echo360. There are five lectures for each week of classes, and the chapter and section numbers from Sipser are given for each week below.

On most Monday class sessions there will be synchronous in-class discussions, where students will be presented with a problem and solve in in groups using breakout rooms. Attendance is required -- if you cannot make a meeting for good reasons, apply for an excused absence on the Moodle site.

The remaining class sessions will be "semi-lectures" and attendance will not be graded. They will be recorded on Echo360.

There will be one midterm exam, during class time on Monday 10 April, with a review session during the previous semi-lecture. There will be a final exam scheduled by the University during finals period.

PART I: Regular, Context-Free and Computable Languages Week 1 Video Lectures: Basics, Induction, Regular Expressions (0, 1.3) Mon 05 Feb Semi-Lecture 1 Wed 07 Feb Semi-Lecture 2 (UGRAD ADD/DROP) Week 2 Video Lectures: Finite Automata, Kleene, Myhill-Nerode (1) Mon 12 Feb Feb Semi-Lecture 3 Wed 14 Feb Discussion #1 (GRAD ADD/DROP) Week 3 Video Lectures: Context-Free Languages (2.1-2.3) Mon 19 Feb NO CLASS (Presidents' Day holiday) Wed 21 Feb Semi-Lecture 4 Thu 22 Feb Discussion #2 (MONDAY SCHEDULE) Week 4 Video Lectures: Turing Machines, CT Thesis (3) Mon 26 Feb Semi-Lecture 5 Wed 28 Feb Discussion #3 Week 5 Video Lectures: Decidability (4) Mon 04 Mar Semi-Lecture 6 Wed 06 Mar Discussion #4 Week 6 Video Lectures: Reducibility (5) Mon 11 Mar Semi-Lecture 7 Wed 13 Mar Discussion #5 SPRING BREAK Week 7 Video Lectures: Recursion Theorem, Kolmogorov (6.1, 6.4) Mon 25 Mar Semi-Lecture 8 Wed 27 Apr Discussion #6 Week 8 Review and MIDTERM on Ch. 1-6 Mon 01 Apr Review Session Wed 03 Apr MIDTERM EXAM, ILC 131, on Chapters 1-6 (Weeks 1-7) PART II: Complexity Theory Week 9 Video Lectures: Time Complexity, P and NP (7.1-7.3) Mon 08 Apr Semi-Lecture 9 Wed 10 Apr Discussion #7 Week 10 Video Lectures: NP Completeness (7.4, 7.5) Fri 12 Apr Semi-Lecture 10 (MONDAY SCHEDULE) Mon 15 Apr NO CLASS (Patriots' Day holiday) Wed 17 Apr Discussion #8 Week 11 Video Lectures: Space Complexity (8.1-8.3) Mon 22 Apr Semi-Lecture 11 Week 12 Video Lectures: Logspace Complexity (8.4-8.6) Wed 24 Apr Semi-Lecture 12 Mon 29 Apr Discussion #9 Week 13 Video Lectures: Circuit Complexity and the NC Classes Wed 01 May Semi-Lecture 13 Mon 06 May Discussion #10 Wed 08 May Review Session FINAL EXAM (cumulative): To be assigned by the University, in exam period

Your grade in COMPSCI 501 will be based on the following:

**Midterm Exam:**There will be one midterm exam counting 20% of your final grade, during the class period on Monday 3 April, with extended time to 5:30-7:30 pm. Exact format will be determined soon. There are past midterms, with solutions, from my prior offerings of the course, here for Spring 2021 and at similar pages on the websites for my offerings in Spring 2008 through Spring 2017.**Final Exam:**This will during the final exam period as scheduled by the University, and will be cumulative. You will have two hours. This exam will count for 30% of your final grade. Again, the final from Spring 2023, together with the earlier final exams, all with solutions, are on my web site and should be useful as practice.**Homework:**There will be six homework assignments during the term. Together they will count for 30% of your final grade. The questions will mostly be taken from the textbook. Late homework will in general not be accepted -- we'll deal with valid excuses by giving "excused" grades on particular assignments. Note: The best five of the six homeworks will each count for 6% of the grade -- the lowest mark will not count at all.**Discussion Writings:**Each of the ten discussion meetings will have a writing assignment, for which each group will submit a solution. These will be coarsely graded, typically A, B, or F, and these grades will total 20% of your total grade. Because we have a large class with in-class discussions, we will assign groups that will persist for later sessions.- Any sincere attempt to solve the problem will get at least a B. Often actually solving the problem is enough for an A. (Often there will be a series of problems and we'll decide after the fact how far you need to have gotten for the A.) (Attendence at discussions is thus "required", in that missing a discussion without a major excuse (medical, family emergency, etc.) incurs a grade penalty.) (We are still using COVID rules for medical excused absences -- if you feel that you coming to a particular class session would be unsafe for you or for others, in your sole judgement, you should ask to have it excused.) (Also note that it is your responsibility to apply for an excused absence on the Moodle form, so we don't have to search elsewhere for your request.)

All work submitted must be your own **in presentation**. How much
outside help is allowed depends on the course component.

- The exams this term are closed book, and
no outside help is allowed.
**Any**cheating on an exam, such as communicating with another student, soliciting help on a public website, or unattributed use of an online source is grounds for an F in the course. - For discussion assignments, almost anything goes as a source of information, including the instructor, grader, and your classmates, but you must still write up the solution in your own words so direct copying is not allowed.
- With homework the situation is in between and the rule
harder to specify. You
**may**discuss homework with other students, in fact I encourage this as a learning experience. But again, the writeup must be your work. Copying is not allowed, and collaboration so close that it**looks like**copying is not allowed. (In general, if I get two identical homeworks I will accept neither of them (i.e., both get F's) and will give you a stern warning that could lead to formal action the next time.) A good practice is to divide your work into an "ideas phase" where you collaborate and a "writeup phase" where you work alone -- enter the writeup phase with notes, but not written solutions. - If you make use of a printed or on-line source for the homework, other than specific course materials such as the textbook or web site, please mention it in your writeup. Of course copying a solution to a problem from the web is cheating, and this is easier for us to detect than you might think.

Last modified 27 January 2024