CS 573 is full — Now what?

CS 573 has already reached its registration capacity of 70 students. We've already increased the limit once, from 40 to 70 (which is why we're in Ceramics instead of Siebel). For multiple reasons, moving into a still larger room now is impossible.

But if you still want or need to take CS 573 this semester, DON'T PANIC! You have at least four options.


Try again next year.

CS 573 is offered every fall semester. (I do not expect to teach it next year.)


Get on the waiting list.

Come to class, take notes, do the homeworks, go to office hours, and so forth, just like the registered students. During the first two lectures, I will pass around a signup sheet for a waiting list. Students on the waiting list will be registered in decreasing order by homework average. If you do not submit homework (even Homework 0), I will assume you are no longer interested in registering and will remove your name from the waiting list.

Most likely, everyone who wants to take the class will be able to register by the add deadline (October 1). Just before the deadline, if the class is still full and there are still unregistered students on the waiting list, we will attempt to raise the enrollment cap to let everyone in. I've had to do this exactly once in 12 years.

Last semester, more students wanted to take CS 473 than we could reasonably accommodate without additional TA support. I do not expect a similar situation this semester, but if necessary, we will give priority to students who need CS 573 to satisfy a requirement (graduation, qualifying exam, etc.) this year.


Take a different theory course.

CS 573 is by far the most popular graduate-level theory course, but it is not the only one, nor is it necessarily the most relevant one for your academic/career/research interests. Here are some other options:

  • Fall 2010:
    • CS 476: Program Verification (Messeguer) — offered every fall
    • CS 498 MS: Theory of Parallel Computing (Snir)
    • CS 598 MAN: Applied Cryptography (Prabhakaran) — offered every fall
    • CS 598 MP: Software Verification (Parasarathy)
    • CS 598 SHP: Randomized Algorithms (Har-Peled) — every two years

  • Spring 2011:
    • CS 477: Formal Software Development Methods (Messeguer) — offered every spring
    • CS 597: Computational Complexity (Prabhakaran) — offered every spring
    • CS 598 CC: Approximation Algorithms (Chekuri) — every two years
    • CS 598 JE: Data Structures (Erickson)
    • possibly other special topics courses (498 or 598)

CS 476, CS 477, and CS 579 can be used in place of CS 573 to satisfy the MS/MCS theory distribution requirement. Some special topics classes (498 or 598) may also satisfy this requirement; talk to the instructor and/or the academic office. PhD students should discuss appropriate theory courses with their Program of Study committees and/or research advisors.

For students admitted before Fall 2010, CS 473 also satisfies the theory distribution requirement, but this option is recommended only for students with serious gaps in their undergraduate background.


Take a proficiency exam.

You can satisfy any MS/MCS distribution requirement by taking a proficiency exam. You must get a B- or better on the exam to earn proficiency credit. (It's unclear whether PhD students can use a proficiency exam to satisfy a Program of Study requirement; please consult your committee, your advisor, and/or the academic office.)

The proficiency exam for CS 573 is just the regular final exam. To take the CS 573 final exam for proficiency credit, just show up for the regular final and write "PROFICIENCY" in large friendly letters on the front of the answer booklet. Your grade will be based on your exam grade, relative to the registered students. For example, if you get a score of 75%, you get the same letter grade as a registered student who got 75% on their final exam.

As a safety net, if you plan to take the final exam for proficiency credit, I strongly recommend also taking the midterms; these will be averaged in with your final. Again, just show up. Dates, times, and topics for each exam will be announced on the course schedule.

Do not take the proficiency exam unless you are sure you know the material! In the past, several students have waited until their very last semester at UIUC to take the CS 573 proficiency exam, and then failed. Those students did not graduate; some of them lost pending job offers; a few even lost visas. Don't do this!

The obvious downside of taking a proficiency exam is that you lose an opportunity to practice with the material. Even if you already know all the material that the course covers, taking the course for credit will help you polish your design, analysis, and communication skills, and possibly expose (and help fill) gaps that you didn't know you had. So again: Do not take the proficiency exam unless you are sure you know the material!