Author: Liang Huang
This book is intended for an introductory course on the design and analysis of algorithms, assuming that students have already taken a data structures course and are comfortable with recursion and big-\(O\) notations. We also assume that students are fluent in at least one of the three major languages: C/C++, Java, and Python. All coding examples are given in Python.