This course is about problem solving and computation via algorithms.
We will cover a number of known algorithms (sorting, hashing, search,
indexing) and their applications. We will discuss methods for analyzing
existing algorithms and designing new algorithms.
Finally, the students will be introduced to *complexity classes*, in
particular the class of *NP-completeness*.

Chapter 2.1, 2.3, 6, 7, 8

Chapter 3, 4, 5

Chapter 11

Chapter 22

Chapter 15, 16

Chapter 34