The heart of computer science: the containers that hold data and the procedures that transform it. From stacks and trees to searching, sorting, and the powerful algorithmic design techniques — divide and conquer, greedy choices, dynamic programming — that solve hard problems efficiently.
This subject course follows the topic vertically, across the years it spans. Some lessons are already written; the rest are shown as placeholders.