CS 373 is the standard senior-level algorithms class required of every
computer science undergraduate and graduate student at the University
of Illinois (unless you take the automata theory class CS 375, but
relatively few students do that). This page contains all the teaching
materials that my TAs and I have developed during the five times I've
taught the course (thrice in reality and twice virtually).

Why shoud I take it?

The ability to design and analyze algorithms is a crucial ability in
developing useful software. This course would hopefully provide you
with the tools to compare between different algorithms (performing the
same task), the ability to analyze them, the knowledge of how to
choose between them, and the ability to design such algorithms
yourself.

Administrivia

Prerequisites:

Students are assumed to have working
knowledge of the material taught in CS 225
and CS 273.
This is not the same as merely having passed! If you're an
undergraduate and you haven't taken those classes, you need my
permission to enroll.

Coursework:

Grades are based on 6 homeworks (30%) (dropping the lowest), two
in-class midterms (20% each), and a final exam (30%). Undergrdauates
and graduate students are graded on separate scales. Graduate
students have some additional homework and exam problems; undergrads
can solve the graduate homework problems for extra credit.

I do not actually assign reading or
homework problems from CLR. I have a standing rule that if it
isn't in the posted lecture notes, it isn't covered in the
homeworks or the exams. Nevertheless, the textbook is an
excellent reference for all things algorithmic. Students re
encouraged to consult CLR if they find something in the notes
confusing or unclear.

Graduate students - register for 3/4, 7/8, 15/16, 31/32 or 1 unit?

There is not going to be any difference in the requirements between
students registered for this course for 3/4 or 1 unit, so you might as
well register for 1 unit.