© 2026 Dometrain. All rights reserved.
Learn how to program in C, from your first function to pointers, dynamic memory, and data structures.
C requires a precise mental model of memory and execution, and missing the fundamentals often leads to undefined behavior or memory leaks. This course builds a working knowledge of C from the ground up, starting with the compilation process, formatted output using printf, and how data physically fits into memory using int, float, and sizeof. From there, you will work through operators, control flow, and loops, learning how to write defensive guard clauses and manage state. Once the basics are in place, the course moves into functions, parameter copying, and recursion, before introducing arrays and null-terminated character arrays. This sets the stage for one of C’s most critical concepts: pointers. You will learn how to safely navigate buffers with pointer arithmetic, modify variables through pointer arguments, check for NULL, and enforce read-only guarantees with const.
With memory access understood, you will tackle the string.h toolkit, using functions like strtok, strtol, and strcmp to parse and manipulate text. The curriculum then shifts to dynamic memory on the heap, detailing the exact lifecycle of malloc, calloc, realloc, and free to ensure you clean up every allocation. You will structure complex data using struct, enum, and union, handle explicit type conversions, and organize multi-file programs using header guards, the preprocessor, and storage modifiers like static and extern. The final modules cover low-level bit manipulation for hardware registers, function pointers for dynamic routing, and standard library utilities like qsort and bsearch. Finally, you will implement foundational data structures from scratch—including linked lists, ring buffers, stacks, queues, and dynamic arrays—before applying everything to complete capstone projects like an in-memory bookstore and a task manager.