Notes of data structures and C++ concepts, along with guides for the tools you'll need in this course
Structure that can map keys to values
By Siping Meng
An algorithm for finding the shortest paths between nodes in a graph.
Trees that contain every nodes in a graph and has the minimum weight.
By Jenny Chen
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
Self-balancing trees that can have large branching factor.
By Adrian Clark
Trees for points in k dimension.
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
BFS and DFS are two simple but useful graph traversal algorithms.
By Xin Tong, Zhenyi Tang
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 detailed explanation of stack and heap memory.
By Jenny Chen, Ruohao Guo
A core principle of object-oriented design that allows new objects to take on properties of existing objects.
A C++ feature that allows functions and classes to be defined over generic types
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.
By Tamara Nelson-Fromm, Jenny Chen, Justin Hu, Bwohan Wang, Brad Solomon, G Carl Evans
An overview of common commands for git, the widely used version control software.