Data Structures and Algorithms

Part 0a: Prerequisites

Why study this?

These topics are things that you'll want to be comfortable with before learning data structures and algorithms but you don't have to know all of them before you get started. For example, bit arithmetic won't be relevant until we cover Bloom Filters.

Content

std::initializer_list, std::unique_ptr, deep vs shallow copies, and std::move video (41 minutes) (Spring 2021)

Part 0b: Engineering / Practical Skills

Why study this?

These are skills that you'll want to be comfortable with for working on real-life projects.

Content

Part 1: Introduction to Big-O

Why study this?

Data structures and algorithms is all about solving problems efficiently: quickly and using little memory. Big-O is a tool that allows us to compare the efficiency of different data structures, algorithms, or other code no matter what computer we're using.

Goals

After this Part of the course, you'll be able to calculate the big-O of a few algorithms and possibly all the code you've ever written so far. You'll also be able to compare the big-O of virtually anything and know which data structure or algorithm is theoretically more efficient without ever looking at the code! These are skills you'll use throughout this course and throughout your career whenever you want things to be efficient at large scale.

Content

Part 2: Vectors, Linked Lists, Stacks, Queues

Goals

Vectors and linked lists are among the simplest data structures. Vectors are especially common and in fact, std::string are based on vectors. -- Learning about vectors and linked lists will help you learn about all the more complicated data structures, like balanced binary search trees or hash tables. After learning this material, you'll understand the relationship between a concrete implementation and an abstract idea and you'll have practice analyzing a data structure.

Content

Part 3: Trees

Part 4: Hashing

Part 5: Priority Queues and Sorting

Part 6: Graphs

Misc. / Other

These are topics that are worth discussing but that I haven't found a good place for yet in the course. -- These topics may or may not be covered.