Kevin Sun


Algorithms (PDF)

These notes cover topics in algorithms at a standard undergraduate level. They assume familiarity with fundamental programming concepts (e.g., arrays, loops), discrete math (e.g., basic set theory, graphs), and asymptotic notation. I recommend the textbooks below for further reading; these notes are primarily based on them:

Of course, there are many other wonderful textbooks and resources not listed above, and I encourage you to seek them out.

Theory of Computation (PDF)

These notes are primarily written for anyone studying from the book Introduction to the Theory of Computation by Michael Sipser, specifically the third edition. (In these notes, whenever I refer to "the book," I am referring to that book.) I recommend the book; I think it is excellent. While writing these notes, I also consulted other resources, most notably the following, which I also recommend:

These notes are not meant to be a substitution for the book; instead, I think of them as an unofficial companion to the book.