Homework, Exams, Etc.

This web page collects homeworks, exams, lab handouts, and similar course materials for my past offersings of CS 374, CS 473, and their predecessors. This archive spans 21 different classes over two decades, so it's primarily of historical interest, and possibly only of interest to me, which is why I've separated it from the main book and lecture notes page.

More Information

Permissions. The following material is licensed under a Attribution-NonCommercial-ShareAlike 4.0 International license. Anyone is welcome to download, print, use, copy, and/or distribute anything on this page, either electronically or on paper. You do not need to ask my permission. If you do use the material, please include a link back to this web page, either directly or through the mnenomic shortcut http://algorithms.wtf.

On the other hand, you do not have permission to repost anything on this web site behind a paywall, including cheating study sites like Chegg and CourseHero, learning management systems that are only accessible to tuition-paying students, and training for large language models that require a paid subscription to use. Selling paper copies at the actual cost of repoduction is fine, but nothing above that.

Please do not ask me for solutions. With very rare exceptions, I will say no, even if you are an instructor. I recognize that my stance limits the utility of these materials, especially for self-learners, but I'm trying to optimize the learning experience of my own students at Illinois. The point of homework is not to solve that particular homework problem, but to practice solving a type of problem and get honest feedback on your progress. I've found that when solutions are available, my own students are much more likely to rely on them, rather than trying to figure out the problems themselves, which means they get both less practice and less honest feedback, which means they do worse on exams and in the course overall.

And while I firmly believe that each student is ultimately responsible for their own learning, I also believe that it's my responsibility as an instructor to help them. Putting dessert on the table does not help anyone eat their vegetables.

Since 2016, I have included at least one solved problem in every CS 374 homework, and I do provide solutions to all labs and homeworks each semester, so that students have plenty of model solutions for future homeworks and exams. Releasing these solutions seems to have some real benefit (although it does make a significant number of useful problems unavailable for homeworks and exams). So I am likely to include solutions for a small subset of problems in a future edition of my textbook.

Bug Reports. If you find an error in the current semester's homework, exams, or labs, please post a bug report on the course's Piazza site. Please feel free to report errors in past homeworks or exams on the GitHub issue-tracking site; having a record of the bug will be helpful, even though it's too late to correct anything. (The classes are over.)

2015 Revision

My book and lecture notes are currently used in two regularly-offered courses, which became official in 2015. CS/ECE 374 is a mixed course on algorithms and models of computation, required for all undergraduate computer science and computer engineering majors. CS/Math 473 is a more advanced elective course on algorithms, offered to a mixed audience of upper-division undergraduates and (mostly non-CS) graduate students.

2003 Revision

From Fall 2003 to Fall 2014, our required algorithms course was split into separate graduate and undergraduate sections. Course numers for each of these sections varied over time.

Pre-2003 Revision

Prior to 2003, we offered a single algorithms course that was required for all undergraduate majors and all graduate students (MCS, MS, and PhD) in computer science.
Jeff Erickson — 24 May 2024