This page collects the handwritten lecture notes I compiled when I taught an introductory algorithms course at UCLA in Winter 2022, along with some useful links and copies of the exams I wrote for the class (with solutions).

- Jeff Erickson’s algorithms textbook: a free online textbook with a fairly chatty/casual style, written by Jeff Erickson, a professor at the University of Illinois. Contains a lot of nice exercises.
- Princeton’s algorithms textbook: another free online textbook written by Robert Sedgewick and Kevin Wayne at Princeton. The website includes lecture videos, example code and lots of nice tables and diagrams.
- Algorithms for competitive programming: in spite of the name, this website is useful for anyone learning algorithm design. It contains descriptions of many common (and some less common) algorithms.
- Codeforces: a competitive programming website, which hosts competitions and practice problems.
- Project Euler: a website with a lot of fun problems which can be solved with programming and clever algorithm design (though a few can even be solved by hand). The problems are usually mathematical and often involve elementary number theory.
- The computer language benchmarks game: a website that tries to compare the relative speed of different popular programming languages.

- Midterm exam and solutions
- Final exam and solutions

Each lecture title links to the notes for that lecture. For each lecture I have listed the corresponding sections in two introductory textbooks on algorithms: the book *Algorithms* by Dasgupta, Papadimitriou and Vazirani (denoted “DPV” in the table below) and the book *Algorithm Design* by Kleinberg and Tardos (denoted “K&T”).