August 24

Lecture Overview

Linus Torvalds has a famous quote "Bad programmers worry about the code. Good programmers worry about data structures and their relationships. ... I will, in fact, claim that the difference between a bad programmer and a good one is whether he considers his code or his data structures more important." More particularly, good data structures make code easy to design, develop, maintain, debug, and so on. Even excellent code cannot make up for bad data structures.

In this course, we will attempt to understand why is the above true and what good data structures look like. Very briefly, even simple procedural logic (code) is hard for humans to verify while quite complicated data structures are easy to reason about due to one tool: induction/recursion (induction and recursion are two sides to the same coin). Data structures are built by combining simpler tools into more complex tools and reasoning about their behavior using induction, while to trace procedural code requires a large mental model of all state present inside the computer.

We will be using the Open Data Structures book, which is a pseudo-code based data structures book.

I started going through the interfaces section on ADTs, interfaces, and implementations.

Exercises