Loading

from first concept to confident practice

C

Learn the language underneath everything, one byte at a time.

Start learning 20 lessons · first lesson about 8 min · free · no account needed
About this track

C is a small language used in operating systems, databases, embedded devices and performance-critical tools. Learning it shows you how data is laid out and how programs manage memory. Start with your first printf, then practice control flow, functions, arrays, pointers, files and multi-part programs. Visual puzzles make addresses and bit masks concrete. Simulate an Arduino sensor loop and a Linux driver-style event queue, then finish with a sensor-log report. Exercises compile and run real C17 in the browser; hardware and kernel examples are clearly marked for local environments.

Before you start
  • No programming experience needed - we start from zero.
  • Comfort using a computer and a web browser.
  • Curiosity about how software works under the hood.
  1. Unit 1 · 0/2 lessons

    Getting started

    What C is, and your first real program. Badge: It compiles!

    1. 0x001What is C, and why learn it?Where C came from, where it runs today, and how a C program goes from text to something your computer can execute. 8 min 8 min
    2. 0x102Your first program: Hello, worldWrite, compile and run a complete C program, and understand every line of it. 10 min 0/2 exercises solved 10 min 0/2 exercises solved
  2. Unit 2 · 0/3 lessons

    Data and expressions

    Variables, types, arithmetic, and talking to the user. Badge: Type safe

    1. 0x203Variables and typesStore values in named boxes of memory, and learn why every box in C has a type and a size. 12 min 0/1 exercises solved 12 min 0/1 exercises solved
    2. 0x304Operators and expressionsDo math in C - and learn the two surprises everyone hits: integer division and operator precedence. 12 min 0/2 exercises solved 12 min 0/2 exercises solved
    3. 0x405Input and outputFormat output precisely with printf, and read what the user types with scanf. 12 min 0/2 exercises solved 12 min 0/2 exercises solved
  3. Unit 3 · 0/2 lessons

    Control flow

    Make decisions and repeat work. Badge: Loop de loop

    1. 0x506Making decisions: if and switchMake your program choose what to do with if, else, logical operators and switch. 12 min 0/2 exercises solved 12 min 0/2 exercises solved
    2. 0x607Loops: while, for, do-whileRepeat work with loops, control them with break and continue, and avoid the classic off-by-one. 14 min 0/2 exercises solved 14 min 0/2 exercises solved
  4. Unit 4 · 0/2 lessons

    Functions and arrays

    Organize code into functions and data into arrays. Badge: Well defined

    1. 0x708FunctionsBreak programs into named, reusable pieces - and learn why C functions get copies of their arguments. 14 min 0/2 exercises solved 14 min 0/2 exercises solved
    2. 0x809ArraysStore many values of the same type side by side in memory, and loop over them safely. 14 min 0/2 exercises solved 14 min 0/2 exercises solved
  5. Unit 5 · 0/3 lessons

    Pointers and memory

    Addresses, strings, and managing memory yourself. Badge: Pointer wrangler

    1. 0x9010PointersThe idea C is famous for: a variable that holds the address of another. Less scary than its reputation. 16 min 0/1 exercises solved 16 min 0/1 exercises solved
    2. 0xA011StringsC has no string type - just arrays of characters ending in a zero. Here is how to work with them safely. 15 min 0/2 exercises solved 15 min 0/2 exercises solved
    3. 0xB012Dynamic memory: malloc and freeAsk for memory at run time when you don't know sizes in advance - and give it back when you are done. 16 min 0/2 exercises solved 16 min 0/2 exercises solved
  6. Unit 6 · 0/3 lessons

    Building bigger programs

    Your own types, files, and professional habits. Badge: Systems thinker

    1. 0xC013Structs: your own typesGroup related values into one type with struct, name it with typedef, and reach through pointers with ->. 14 min 0/2 exercises solved 14 min 0/2 exercises solved
    2. 0xD014Working with filesOpen, read and write files with the FILE API, and handle the errors that real files throw at you. 14 min 0/1 exercises solved 14 min 0/1 exercises solved
    3. 0xE015Writing C like a professionalThe habits, tools and tricks that separate code that works today from code that keeps working. 12 min 0/1 exercises solved 12 min 0/1 exercises solved
  7. Unit 7 · 0/4 lessons

    C in the real world

    Simulate embedded sensors and driver queues, use device flags, and build command-line tools. Badge: Systems builder

    1. 0xF016Bits and flags in real devicesUse unsigned masks to read and change individual device settings. 22 min 0/1 exercises solved 22 min 0/1 exercises solved
    2. 0x10017Embedded C and an Arduino sensorRead a sensor, make a decision, and control an LED in a simulated device loop. 25 min 0/1 exercises solved 25 min 0/1 exercises solved
    3. 0x11018Linux drivers and event queuesModel how a driver buffers incoming events before a consumer handles them. 28 min 0/1 exercises solved 28 min 0/1 exercises solved
    4. 0x12019Make a useful command-line toolRead arguments, report errors and return an exit status a script can use. 22 min 0/1 exercises solved 22 min 0/1 exercises solved
  8. Unit 8 · 0/1 lessons

    Capstone

    Build a bounded, validated sensor-log report from a stream of readings. Badge: Sensor engineer

    1. 0x13020Capstone: a sensor log reportBuild a small streaming tool that validates readings and reports useful statistics. 30 min 0/1 exercises solved 30 min 0/1 exercises solved