Take this first
Algorithm Analysis Essentials
Predict how code scales before you run it: asymptotic notation, recurrences and the master theorem, and amortized analysis, with proofs you can follow and exercises with solutions.
Build the structures every program leans on, from scratch, in plain C11: a growable array and an open addressing hash table, with careful memory handling and measured cost analysis.
Most languages hand you a list and a dictionary and ask you not to look inside. C hands you malloc and wishes you luck. That makes it the best language for learning how these structures really work: nothing is hidden, every byte of storage is one you asked for, and every mistake is yours to find.
This course builds two of the most used structures from an empty file. Each lesson develops one complete, compilable program, explains the decisions that are easy to get wrong, and ties the cost of each operation back to the prerequisite course.
You will be able to:
malloc and freeType the code rather than pasting it, then compile with warnings turned all the way up:
cc -std=c11 -Wall -Wextra -Wpedantic -fsanitize=address,undefined vector.c -o vectorThe sanitizers catch out-of-bounds access, use after free and (on Linux) leaks at run time, exactly the class of bug these lessons are about. Every listing in the course builds cleanly with that command.
Take this first
Predict how code scales before you run it: asymptotic notation, recurrences and the master theorem, and amortized analysis, with proofs you can follow and exercises with solutions.