Advanced Algorithms

MWF 10:45-11:35 AM, WEB L114


Class Links: Grading: Your performance in the course will be evaluated via (five) homeworks (60%), a final exam (20%), and a final project (20%).

Prerequisites As most first year MS/PhD students are expected to take this class, there are no enforced pre-reqs. However, a knowledge of basic data structures, graph theory, calculus, and probability will be assumed. To get a sense of what I mean, take a look at chapters 1-6 here. It is also crucial to be comfortable with reading and designing mathematical proofs. A good place to brush up on your math background is the monograph of Lehman and Leighton (chapters 1, 2, 3, 6, 12, 18, 20, 21, 22).

Course Policies

The School of Computing has a detailed set of policies concerning all students that take courses within the School. These include policies on academic misconduct, appeals procedures, addressing sexual misconduct, and preferred names and pronoun designations. You must read the policies prior to participation in this course.

The College of Engineering Semester Guidelines contain important dates regarding adding, dropping and withdrawing from classes as well as the College Policy regarding repeating courses. Students are responsible for being aware of the information contained therein.

If you are a student who needs accomodation or access due to a disability, please read the University of Utah ADA guidelines and then contact the Center for Disability and Access. They will work with me to provide whatever accomodations are needed.

Course Outline

The study of algorithms is, at one level, the study of techniques driven by rigorous formal analysis: divide and conquer, greedy algorithms, recursion, O() notation and the like. At another level, algorithms are about abstraction: what is the core computational structure underlying a problem, and how might we unlock it ?

In this course, we will study algorithms at the level of techniques, and at the level of structure. Formalization, a key step in the practice of using algorithms, will play an important role in this class. Specific topics to be covered include:

With all good must come some bad: and sometimes, the best way to understand the complexity of a problem is to understand how hard it is. To that end, we will also study

But "Aha!" you say, "I want to study BIG DATA", not all this algorithms stuff. Fortunately for you, we will cover some aspects of the most important ideas in big data

Some of these topics can command an entire course of their own; our coverage will emphasize the basics, covering a few of the most common ideas in play.


There will be no official textbook for the class. For the most part, I will use the lecture notes provided by Jeff Erickson

. Other material that you might like to consult include