Flowsmith

6-month track

C

Six months from 'hello, world' to writing your own data structures and a small interpreter.

What is C?

C is the language most operating systems, compilers and embedded devices are still written in. It gives you almost nothing for free — no garbage collector, no built-in strings, no safety net — which is exactly why learning it teaches you how memory, pointers and the machine underneath every other language actually work.

What you'll learn

  • Understand pointers, the stack and the heap well enough to explain them, not just use them
  • Implement core data structures — lists, stacks, trees — from scratch, with no library
  • Manage memory manually without leaking it, and catch bugs with valgrind
  • Read a Makefile and build a multi-file C project from the command line

Curriculum

month 1

Foundations

Learn the syntax and the mental model C runs on.

  • Variables, types and operators
  • Control flow and functions
  • Compiling with gcc
  • Reading compiler errors

month 2

Arrays & Strings

Work with raw data the way C actually represents it.

  • Arrays and multi-dimensional arrays
  • C strings and string.h
  • Command-line arguments
  • Scope and storage duration

month 3

Pointers & Memory

The core skill C is taught for.

  • Pointers and pointer arithmetic
  • malloc, calloc, realloc, free
  • structs and typedef
  • Common memory bugs and how to spot them

month 4

Data Structures

Build the structures other languages give you for free.

  • Linked lists
  • Stacks and queues
  • Binary trees
  • Testing your own data structures

month 5

Systems Basics

Move from a single file to a real, buildable project.

  • File I/O
  • The preprocessor and macros
  • Makefiles and multi-file projects
  • Debugging with gdb and valgrind

month 6

Capstone Project

Build something real with everything so far.

  • Design a small CLI tool or interpreter
  • Error handling without exceptions
  • Memory-leak-free by design
  • Ship and document the project