Notes of data structures and C++ concepts, along with guides for the tools you'll need in this course
An algorithm for finding the shortest paths between nodes in a graph.
By Siping Meng
Trees that contain every nodes in a graph and has the minimum weight.
By Jenny Chen
BFS and DFS are two simple but useful graph traversal algorithms.
By Xin Tong, Zhenyi Tang
An efficient way to store and query information about set membership.
By Eddie Huang
Tree structures that allow you to quickly both store elements and query the most important element
Structure that can map keys to values
Trees for points in k dimension.
Self-balancing trees that can have large branching factor.
By Adrian Clark
Self-balancing binary search trees that allow you to store and query data in logarithmic time.
A two-child tree that can be searched by moving left or right.
By Tamara Nelson-Fromm
Structures for storing and querying elements in particular linear orders.
By Jenny Chen, Eddie Huang
A memory structure that gives a linear order to the dataset.
An abstraction that makes it easy to traverse arbitrary data structures.
By Nathan Walters
A C++ feature that allows functions and classes to be defined over generic types
A core principle of object-oriented design that allows new objects to take on properties of existing objects.
A detailed explanation of stack and heap memory.
By Jenny Chen, Ruohao Guo
Templates that define the behavior of objects
Catch is an open-source C++ testing framework that's used to test your labs and MPs.
By Anonymous
Go above and beyond print statements with gdb, a powerful debugger for C++.
gdb
Find cases of memory mismanagement with Valgrind.
An overview of the git version control system and how it's used in this course.
git
Instructions for how to work on CS 225 assignments on your own machine.
Instructions for how participate in virtual office hours.
By Parth Dhruve
A thorough introduction to make, a build automation tool that you'll use to help compile your C++ code.
make
An overview of common commands for git, the widely used version control software.