Programming as Communication
pro/programming
An introductory series about talking to computers, and the thinking skills that come with it.
Talk to the Machine
Programming is telling a very literal, very powerful, very stupid machine exactly what to do. This chapter introduces the core thesis of the course.
What Exactly Do You Want?
Before we can tell a computer what to do, we must know what we actually want. This chapter explores why precise thinking matters and how to break down problems.
Read the Room
Programming isn't one thing - it's an entire zoo of related but distinct skills. Understanding which computational creature you're addressing changes everything about how you approach the conversation.
Reading the Language
Programming is more about reading code than writing it. Learn to recognize variables, understand data types, interpret operators, and decode what you see when AI generates code for you.
Following the Flow
Learn to trace what code does, understand the flow when reading programs. Follow the computer's path through sequences, decisions, and loops.
Your New Colleague
AI coding assistants have changed how we build software. This chapter teaches the workflow: prompting, reading output, understanding functions, and building interactive programs.
The Shape of Information
How to organize information in ways that make questions easy to answer. Arrays keep things in order; objects let you look things up by name.
When Things Go Wrong
Your code will have errors, including code AI writes for you. This chapter teaches you to classify them, read error messages, debug systematically, and test your assumptions.
Standing on Shoulders
Libraries are collections of code written by other programmers who've already solved particular problems. Learn to leverage shared knowledge and work with AI to find the right tools.
Programs That Listen
This is where everything converges. Build interactive programs, connect to web APIs, and complete a guided project with AI, from prompt to working software.
Write It Like You Mean It
You write code once, but it gets read over and over, by you, by colleagues, by AI. This chapter explores why optimizing for human readability is the most important skill you can develop.
The Bigger Picture
The programming world is larger than what you've seen. This chapter maps the landscape: how programs handle many things at once, and the different ways programmers have learned to think about problems.
Keeping Track
Version control is how real projects manage change. It tracks what changed, when, and why: your safety net when working with AI, your collaboration tool when working with people.
Your Turn
This isn't the end of anything. It's where the training wheels come off and you discover what you're actually capable of building.
Advanced Control Flow
Deeper exploration of control flow: recursion (functions that call themselves) and the arrow code antipattern.
Advanced Functions
Higher-order functions, map and filter, pure functions, and treating functions as values: the functional programming concepts that unlock elegant data transformation.
State Machines & Patterns
State machines, event sourcing, and shared mutable state: patterns for managing complexity when simple variables aren't enough.
Concurrency Deep Dive
Actors, promises, backpressure, and the deeper patterns of concurrent programming.
Type Systems & Memory
Static vs dynamic typing, memory management models, and domain-specific languages: the deeper mechanics that differentiate programming languages.
Famous Bugs
The Therac-25 radiation overdoses, the Mars Climate Orbiter crash, the Morris Worm: real stories of what happens when bugs escape into the wild.