I have become interested in computer science some years ago and I am now concerned with educating myself on the fundamentals of “Data Structures and Algorithms” as taught in the courses of the same name at many universities. I never actually enrolled in such a course and so my curriculum is somewhat impromptu.
In a college course, from the student’s point of view, every new class is a surprise known most clearly only to the instructor. In a self-taught regimen, “surprises” are pre-arranged. This article is a syllabus for such a study. I am basing it on the advice of instructors, friends, and MIT’s OpenCourseWare (courses 6.006 and 6.046).
Introduction to Algorithms by Cormen, Leiserson, and Rivest (henceforth “CLR”). This book is thick, ugly, and believed to be essential by many computer scientists.
Algorithms by Dasgupta, Papadimitrou, and Vazirani (henceforth “DPV”). This book is light, written very cleanly, and seems completely incompatible with CLR. The pre-print is available for free online.
Topics (unordered list of main topics):
- Graphs and paths
- Binary search trees
- Divide and conquer algorithms
- Greedy algorithms
- Dynamic programming
- Linear programming
- Quantum algorithms
I will be alternating the chapters between CLR (associated with the MIT syllabus) and DPV. Article posts are made by topic rather than chapter. This way, revisited topics can be added to with new insights gathered from different resources.
All articles, especially this one are in constant revision until I am satisfied.