Registration information for the spring course is on the spring course web site.

Welcome to the Fall 2017 web page for CS173

Most information will be in the subpages for the two lectures and the honors add-on. Links will appear below as we get those pages ready (probably in August).

Meanwhile, please read the registration and start-up information below. You can also look at the Fall 2016 and/or Spring 2017 web pages to get a sense of what the course covers and how it normally runs.


The course currently looks full on the registration system, but we're holding back significant numbers of seats for CS majors who pass the CS 125 proficiency exam. Any unused seats will be released for general enrollment on Tuesday the 5th, around 9am.

If you are a CS/CE major needing to get into the class:

If you aren't yet registered when clases start, COME TO CLASS and stay caught up with the work. We'll probably be able to get you into the class.

If you cannot get into the class because it is full, keep an eye on the registration system. Seats can appear as late as the second week of classes. (We do not let students join the class after add date.) Be aware that you must come to class and stay caught up with the work if you are trying to add after classes have started.

Prerequisite checking

To take this course, you must have completed Calculus I (Math 220 or 221) and CS 125 or ECE 220. In early August, we will check everyone's background and remove anyone who will not have the prerequisites. If credit for these courses is not already visible on your transcript, e.g. because you have incoming transfer credit, please fill out this form:

Special Situation Form

In particular, this course assumes that you have significant practice with recursion, have worked with basic data structures (e.g. linked lists, trees or graphs), and have seen simple examples of big-O algorithm analysis. Students without this background sometimes think they are ok towards the start of the term, but get into trouble midway through the course.

Notice that if you have informal background in C++ or Java, but no actual credit, you must take the CS 125 proficiency exam to satisfy the prerequisite.

If you need to take the proficiency exam, have a backup plan in case you don't pass. Similarly have a backup plan if you are depending on informal background to get in.

Textbook etc

The main textbook is online. (Some revision may happen over the summer.)

You'll need to purchase two items at the Union Bookstore:

The lab notebook is so that you can submit work during discussion sections, but also retain a copy for later studying. (Collected discussion work is not returned to you.) We believe this is most easily done using a carbonless duplicate lab notebook and we've selected one convenient model. However, it's ok to use other methods of quickly making a duplicate copy for your records, e.g. loose carbonless duplicate sheets, the remainder of your half-used chemistry notebook, cell phone camera.

Honors and Proficiency Exam

If you have taken previous proof-based math courses, you may wish to attempt the proficiency exam. For more information, see the CS Proficiency Exams page.

If your background is strong and your schedule is not very full, you may wish to do the Honors Add-on. See the link at the top of this page. You can add this after classes start.