Fundamentals
Variables, control flow, functions, recursion, types, memory. These ideas are the same in every language, so they are taught once here, without any one syntax. Language lessons link back when they build on one.
Beginner
Read and write small programs with confidence.
Programs and data
- What a program is25 minExplain source code, compiling and interpreting, and trace a small program by hand to predict what it does.
- Editors, terminals and running code30 minUse a terminal, a text editor and a run command to execute a program, change it and run it again.
- Values and types30 minClassify values by type, predict which mixed operations fail, and tell static from dynamic and strong from weak typing.
- Variables and assignment30 minExplain names, binding and mutation, and trace how a program's variables change as it runs.
- Expressions and operators35 minEvaluate expressions by hand using precedence, and predict integer division, overflow and float rounding surprises.
- Text, characters and encodings35 minExplain how text is stored as code points and bytes, and why the length of a string depends on what you count.
Control flow and functions
- Making decisions40 minWrite branching logic with if, else if and else, combine conditions with boolean operators, and use guard clauses to keep decisions readable.
- Repetition40 minRepeat work with while and for loops, choose between counted and conditional loops, and avoid off-by-one errors and infinite loops.
- Functions40 minBreak a problem into named, reusable pieces with clear inputs and outputs, and see how calls stack up while a program runs.
- Scope and lifetime40 minPredict which variable a name refers to, understand shadowing, and see when a variable is created and destroyed.
- Recursion45 minWrite and trace functions that call themselves, using a base case, a recursive case and an understanding of the call stack.
- When things go wrong45 minTell syntax, runtime and logic errors apart, choose between exceptions and error values, and handle bad input deliberately.
Data structures
- Arrays and lists45 minStore many values in order, reach any of them by position, and change, slice and loop over them safely.
- Maps and sets45 minLook values up by key instead of by position, test membership quickly, and choose between a list, a map and a set.
- Grouping data: records and objects50 minBundle related values into one named thing, attach behaviour to it, and tell apart two things that are equal from one thing with two names.
- Stacks, queues and linked lists55 minUse the classic last-in-first-out and first-in-first-out structures, and see how nodes that point to each other form a linked list.
- Trees and graphs60 minRepresent hierarchies and networks with nodes and links, search a binary search tree, and find the shortest route through a graph.
- Memory, values and references55 minUnderstand where data lives, what assignment really copies, why two names can change one thing, and when memory is given back.
Algorithms and complexity
- Algorithmic thinking50 minPlan a solution in plain steps before you write code, using decomposition, pseudocode, worked examples and a deliberate hunt for edge cases.
- Complexity and Big-O55 minDescribe how the work a program does grows with the size of its input, and learn the handful of growth rates that cover almost every program you will write.
- Searching and sorting70 minImplement linear and binary search, then insertion sort and merge sort, and learn what stability means and why you will usually call the built-in sort.
- Common problem-solving patterns65 minLearn five reusable ideas, two pointers, sliding window, hashing for lookup, divide and conquer and memoisation, that each turn a slow solution into a fast one.
- Programming paradigms60 minCompare the imperative, object-oriented, functional and declarative styles by solving one task in each, and learn what each style is good at.
Working like a programmer
- Debugging60 minFind bugs systematically by reproducing them, isolating them and testing hypotheses, using print statements, debuggers and stack traces.
- The testing mindset60 minWrite small automated tests that check your code against expected results, choose cases that expose bugs, and meet test-driven development.
- Version control with Git70 minTrack every change to your code with Git, work on ideas in branches, merge them back, resolve a conflict and share work through a remote.
- Reading documentation and other people's code55 minFind reliable answers in official documentation, read function signatures, and make sense of unfamiliar code by searching and tracing it.
- Clean code and security basics65 minWrite code other people can read, and avoid the beginner security mistakes that cause most real breaches, then choose your language track.