Take this next
Data Structures in C
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.
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.
Two programs can give the same answer and still be very different programs. One finishes in a second on a million records. The other is still running tomorrow. This course is about telling them apart on paper, before either one is written.
It is a short introduction for people who can already program a little and want the vocabulary the rest of computer science takes for granted. No prior theory is assumed. Each lesson builds one tool, proves that it works, and uses it on code you will recognise.
By the end you will be able to:
Read the lessons in order, since each leans on the one before. Work the exercises on paper before opening the solutions; a proof only becomes yours once you have tried to write it. When you finish, the course on data structures in C puts these tools to work on real implementations.
Take this next
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.