This section is one of my personal favorites. Often in computer science curricula, algorithms are presented as a fait accompli, with little explanation of what specifically motivated or inspired their design. For example, what motivated Edgar Dijkstra to solve the single-source shortest path problem in the first place? Why did he settle on a greedy approach, and why does it succeed for any weighted graph with non-negative edges?
The first time I encountered Dijkstra's algorithm, it was delivered on a single slide with three neat bullet points and some psuedocode. What irked me about this was the lack of discussion regarding how it worked, why it worked, and what alternatives might have been considered. What were the constraints? What were the trade-offs? None of that came through.
In this section, I hope to explore the design of various algorithms, the guiding principles, and the compromises that went into them in hopes of becoming a better problem solver.