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.


CS majors (CS Engineering and CS+X) can add this course in the obvious way.

ECE students need to register via the ECE department Details are on a pinned post on the ECE Advising "course" on piazza.

If you are not a CS or CE major, the course will open for non-major enrollment late in the registration process: Monday April 24th. However, we hold back a number of seats over the summer for incoming CS freshmen and transfer students. Any surplus seats will be released around the start of classes.

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, a form will appear here in August, on which you can report special situations such as incoming transfer credit.

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

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.