Bring web interactions to life
Track difficulty: Beginner
17 chapters · Checkpoints & final
Chapters & prerequisites
Before you start No programming experience needed. Begin with values, basic strings, and arrays; the later chapters build toward asynchronous work and data validation.
- Your first JavaScript programBeginner
- Values and decisionsBeginner
- Strings you can read and changeBeginner
- Arrays and the first itemBeginner
- Functions and loop boundariesBeginner
- Objects with named propertiesBeginner
- Destructuring, defaults, and rest parametersIntermediate
- Transform collections without surprisesIntermediate
- Object identity and deliberate nested updatesIntermediate
- Closures and keyed stateIntermediate
- Methods, receivers, and class invariantsIntermediate
- Modules and explicit dependenciesIntermediate
- Promises and failure pathsAdvanced
- Concurrent promises and result orderingAdvanced
- Text, Unicode, and explicit normalizationIntermediate
- Recursive decomposition and search invariantsAdvanced
- Validate data at boundariesAdvanced
Make everyday data work for you
Track difficulty: Beginner
17 chapters · Checkpoints & final
Chapters & prerequisites
Before you start No programming experience needed. Start with your first program, then strings, lists, decisions, and small functions before the deeper topics.
- Your first Python programBeginner
- Working with stringsBeginner
- Lists and changing one itemBeginner
- Decisions and repeating workBeginner
- Functions that return an answerBeginner
- Values, text, and arithmeticBeginner
- Functions and dependable defaultsBeginner
- Lists, sets, and dictionariesIntermediate
- Comprehensions and nested aliasingIntermediate
- Lexical scope and closuresIntermediate
- Iterators and lazy pipelinesIntermediate
- Instance state and behavioral contractsIntermediate
- Exceptions and resource boundariesAdvanced
- JSON parsing and domain validationAdvanced
- Records, ordering, and invariantsAdvanced
- Modules and tests that challenge a contractIntermediate
- Recursive algorithms and terminating rangesAdvanced
Shape collections and control memory
Track difficulty: Master
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start This is a focused C++ course for learners who can already read typed functions and arrays. Later lessons assume comfort reasoning about references, ownership, and lifetime.
- Values, expressions, and typesBeginner
- Functions, references, and lifetimeIntermediate
- Owned strings and borrowed string viewsAdvanced
- Vectors, bounds, and invalidationIntermediate
- Value classes and constructor invariantsIntermediate
- Maps, lookup, and accidental insertionIntermediate
- Algorithms and comparison contractsIntermediate
- Templates and meaningful type requirementsAdvanced
- Recursion and half-open range reasoningAdvanced
- Resource ownership with RAIIAdvanced
- Move operations and valid remaining stateAdvanced
- Exception safety and committing changesAdvanced
- Optional results and interface contractsAdvanced
Build with classes and reliable types
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start No previous Java required. Intro to Java explains how a small program runs; objects, types, methods, and collections are introduced as you progress.
- Intro to JavaBeginner
- Using objectsBeginner
- Data typesBeginner
- ClassesIntermediate
- DecisionsBeginner
- IterationIntermediate
- Arrays and ArrayListsIntermediate
- Sorting and searchingIntermediate
- Designing classesIntermediate
- Interfaces and polymorphismAdvanced
- InheritanceAdvanced
- Exception handlingAdvanced
- RecursionAdvanced
Write expressive .NET applications
Track difficulty: Intermediate
15 chapters · Checkpoints & final
Chapters & prerequisites
Before you start No previous C# required. Start with a small program, then values and arrays before methods, classes, and asynchronous work.
- Run and read a C# programBeginner
- Values, types, and stringsBeginner
- Create and read an arrayBeginner
- Decisions, loops, and methodsBeginner
- Arrays, value copies, and shared referencesIntermediate
- Pattern matching and exhaustive decisionsIntermediate
- Classes, properties, and invariantsIntermediate
- Collections and LINQ pipelinesIntermediate
- Dictionary contracts and equality rulesIntermediate
- Delegates and captured stateIntermediate
- Iterator methods and deferred executionAdvanced
- Interfaces and virtual behaviorAdvanced
- Nullable values and explicit failuresIntermediate
- Deterministic cleanup with usingAdvanced
- Tasks, asynchronous completion, and failureAdvanced
Follow instructions inside the CPU
Track difficulty: Master
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Assumes binary and hexadecimal notation, registers, signed arithmetic, and memory addresses. These x86-64 lessons are for learners with prior low-level programming experience.
- Registers and operand widthsMaster
- Sign extension and zero extensionMaster
- Addresses and sized memory operandsMaster
- Record layout, stride, and byte orderMaster
- Arithmetic, masks, and shiftsMaster
- Extracting and replacing packed bit fieldsMaster
- Carry, signed overflow, and wide additionMaster
- Comparisons and signed branchesMaster
- Bounded loops over arraysMaster
- Bounded byte scans and sentinel searchesMaster
- Division and implicit register pairsMaster
- Leaf functions and calling contractsMaster
- Nested calls and System V stack disciplineMaster
Add clear types to JavaScript ideas
Track difficulty: Intermediate
14 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Bring basic JavaScript variables, functions, arrays, and object literals. Classes are taught later; you do not need to finish the whole JavaScript course first.
- Read compiler feedback and run a checked programIntermediate
- Types as working contractsBeginner
- Object shapes and readonly viewsBeginner
- Tuples, rest parameters, and array boundariesIntermediate
- Narrowing and explicit statesIntermediate
- Literal inference and checked configurationIntermediate
- Preserve relationships with genericsIntermediate
- Function compatibility and callback promisesAdvanced
- Classes, structural contracts, and private stateIntermediate
- Module boundaries and type-only dependenciesIntermediate
- Typed asynchronous results and explicit failureAdvanced
- Derive API types from one modelAdvanced
- Conditional types and union distributionAdvanced
- Unknown input and trustworthy resultsAdvanced
Understand arrays, bytes, and pointers
Track difficulty: Advanced
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Bring basic programming experience with functions, loops, and arrays. This focused course develops explicit memory and pointer reasoning; it is not a first-programming course.
- Values and explicit computationBeginner
- Functions and bounded loopsBeginner
- Integer limits and checked arithmeticAdvanced
- Arrays, lengths, and terminated textIntermediate
- Text parsing and complete-consumption checksAdvanced
- Unsigned masks and packed flagsIntermediate
- Addresses, borrowing, and lifetimeAdvanced
- Structs and explicit success resultsIntermediate
- Headers, linkage, and separate compilationIntermediate
- Function pointers and comparator contractsAdvanced
- Streams, end-of-file, and error handlingIntermediate
- Allocation and ownership contractsAdvanced
- Resizing allocations without losing ownershipAdvanced
Small programs. Clear results.
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic variables, functions, and loops are useful preparation. The course introduces Go syntax before moving into slices, maps, interfaces, and concurrency.
- Values, functions, and loopsBeginner
- Bytes, runes, and text boundariesIntermediate
- Slices and shared backing arraysIntermediate
- Maps and presence checksIntermediate
- Pointers and controlled mutationIntermediate
- Structs, methods, and small interfacesIntermediate
- Sorting, searching, and stable tiesIntermediate
- Errors and deferred cleanupAdvanced
- Generic functions and useful constraintsAdvanced
- Readers, records, and partial progressAdvanced
- Tests, invariants, and boundary casesAdvanced
- Goroutines and channel coordinationAdvanced
- Cancellation and bounded concurrent workAdvanced
Build confidence with ownership.
Track difficulty: Master
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Bring experience with functions, collections, and typed values. Start at bindings if Rust is new to you; ownership and borrowing are developed in the following chapters.
- Bindings and expressionsBeginner
- Ownership and moved valuesIntermediate
- Borrowing and slicesIntermediate
- UTF-8 strings and safe boundariesIntermediate
- Structs and invariant-preserving methodsIntermediate
- Enums and exhaustive decisionsIntermediate
- Recoverable errors with ResultAdvanced
- Iterator pipelines and collectionAdvanced
- Hash maps and entry-based aggregationIntermediate
- Traits and replaceable behaviorAdvanced
- Generic borrowing and lifetime relationshipsAdvanced
- Tests for boundaries and mutation contractsAdvanced
- Owned messages and thread completionAdvanced
Express ideas with concise types.
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic variables, functions, and collections are helpful. The early chapters introduce Kotlin expressions and control flow before null safety, classes, and advanced APIs.
- Values and functionsBeginner
- Conditions, ranges, and iterationBeginner
- Text transformations and search boundariesIntermediate
- Null safety and validationIntermediate
- Arrays and two-dimensional traversalIntermediate
- Collections and transformationsIntermediate
- Maps, sets, and occurrence policiesIntermediate
- Higher-order functions and captured stateAdvanced
- Classes and data valuesIntermediate
- Interfaces and sealed alternativesAdvanced
- Generic APIs and varianceAdvanced
- Lazy sequences and bounded evaluationAdvanced
- Validation, failures, and contract testsAdvanced
Shape data for expressive apps.
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic variables, decisions, and collections are helpful. Start with Swift bindings and control flow before string indexing, optionals, and value semantics.
- Constants, variables, and expressionsBeginner
- Decisions and iterationBeginner
- Strings and collection indicesIntermediate
- Functions and optional resultsIntermediate
- Closures and captured stateAdvanced
- Arrays, dictionaries, and value copiesIntermediate
- Transforming and grouping collectionsIntermediate
- Structures and classesIntermediate
- Associated values and exhaustive stateIntermediate
- Initialization and bounded stateIntermediate
- Protocols and throwing operationsAdvanced
- Generic algorithms and constraintsAdvanced
- Reference ownership and closure cyclesAdvanced
Readable scripts with useful blocks.
Track difficulty: Beginner
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Start with the values chapter. Basic programming experience is helpful for the later blocks, methods, and collection transformations; review the linked foundations whenever needed.
- Values and expressionsBeginner
- String mutation and precise matchingIntermediate
- Methods, arguments, and blocksBeginner
- Keyword arguments and explicit optionsIntermediate
- Array copies and nested stateIntermediate
- Enumerable transformationsIntermediate
- Hash defaults and mutationIntermediate
- Sorting and deterministic tie rulesIntermediate
- Objects with small behavior contractsAdvanced
- Inheritance, super, and substitutionAdvanced
- Recursive decomposition and terminationAdvanced
- Lazy sequences and controlled failureAdvanced
- Contract-focused tests and boundariesAdvanced
Turn structured data into text.
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Start with values and comparisons. These lessons use small PHP scripts; prior web-server knowledge is not required. Review variables and functions if those ideas are unfamiliar.
- Values and explicit comparisonBeginner
- String offsets and exact parsingIntermediate
- Functions and typed boundariesBeginner
- Arrays as ordered mapsIntermediate
- Copies, object handles, and referencesIntermediate
- Sorting keys, records, and tiesIntermediate
- Closures and capture policiesAdvanced
- Classes and invariant-preserving operationsIntermediate
- Interfaces and replaceable collaboratorsAdvanced
- Parsing and exception contractsIntermediate
- Prepared statements and database boundariesAdvanced
- Generators and bounded memoryAdvanced
- Boundary tests and exact outcomesAdvanced
Ask precise questions of data.
Track difficulty: Beginner
14 chapters · Checkpoints & final
Chapters & prerequisites
Before you start No SQL experience needed. Begin by reading a table and selecting columns. Later chapters introduce joins, grouping, windows, and recursive queries using SQLite.
- Read a table and choose columnsBeginner
- Select rows with a clear orderBeginner
- Missing values and three-valued logicBeginner
- Keys, constraints, and valid rowsIntermediate
- Join tables without losing the questionIntermediate
- Existence tests and correlated questionsIntermediate
- Aggregate at the right grainIntermediate
- Set operations and duplicate meaningIntermediate
- CTEs and windowed analysisAdvanced
- Dates, ranges, and deterministic periodsIntermediate
- Recursive CTEs and terminationAdvanced
- Updates, upserts, and affected rowsAdvanced
- Transactions, constraints, and query plansAdvanced
- Indexes and evidence-based query tuningAdvanced
Make the shell work predictably.
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Assumes you can open a terminal and run a simple command with arguments. The course then explains quoting, exit status, variables, and shell control flow.
- Words, quotes, and argumentsBeginner
- Parameter expansion and missing-value policyIntermediate
- Exit status and conditional workBeginner
- Integer arithmetic and command statusIntermediate
- Arrays, functions, and exact argument listsIntermediate
- Patterns and filename-safe iterationIntermediate
- Read records without corrupting themIntermediate
- Redirections and separate output channelsIntermediate
- Pipelines, subshells, and failure propagationAdvanced
- Options and positional argument contractsIntermediate
- Background jobs and explicit completionAdvanced
- Build predictable command-line toolsAdvanced
- Testing exact arguments and failure behaviorAdvanced
Discover patterns in small datasets
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic arithmetic and an interest in tabular data are useful. Start with vectors before missing values, data frames, and grouped calculations.
- Vectors and elementwise arithmeticBeginner
- Coercion and recycling contractsBeginner
- Indexing and missing valuesBeginner
- Categories and level semanticsIntermediate
- Data frames and column structureIntermediate
- Matrix shape and margin operationsIntermediate
- Functions and controlled iterationIntermediate
- Lists and predictable transformationsAdvanced
- Keyed alignment and join cardinalityIntermediate
- Grouped summaries and validationAdvanced
- Lexical scope and forced configurationAdvanced
- Conditions and reliable cleanupAdvanced
- Reproducible sampling and simulationAdvanced
Build clear, null-safe app logic
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic variables and functions are helpful. The early chapters introduce Dart types and control flow before records, collections, classes, and asynchronous results.
- Types, bindings, and null safetyBeginner
- Functions and control flowBeginner
- Records and structural patternsIntermediate
- Lists, maps, and transformationsIntermediate
- Generic contracts and runtime element checksIntermediate
- Lazy iterables and generator demandIntermediate
- Classes and validated stateIntermediate
- Value equality and stable hash keysAdvanced
- Interfaces and substitutionAdvanced
- Sealed results and exhaustive branchingAdvanced
- Futures and failure boundariesAdvanced
- Streams, ordering, and cancellationAdvanced
- Isolates and message-owned workAdvanced
Shape small scripts with tables
Track difficulty: Beginner
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Start with values and truth, then scope and functions. Lua-specific rules such as one-based sequence indexes are introduced in the lessons.
- Values, types, and truthBeginner
- Lexical scope and accidental globalsBeginner
- Functions, locals, and return valuesBeginner
- Multiple results and exact argument packsIntermediate
- Tables and sequencesIntermediate
- Iteration and string processingIntermediate
- Captures and literal-safe substitutionsIntermediate
- Bytes, code points, and text boundariesIntermediate
- Closures and module boundariesAdvanced
- Custom iterators and termination contractsAdvanced
- Metatables and protected callsAdvanced
- Intercepting writes and raw operationsAdvanced
- Coroutine suspension and result channelsAdvanced
Extract text and organize records
Track difficulty: Advanced
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Assumes experience with variables, loops, arrays, and key-value data. This focused Perl course introduces sigils and context before regular expressions and deeper text processing.
- Scalars and explicit comparisonIntermediate
- Arrays, hashes, and contextIntermediate
- Iteration and function boundariesIntermediate
- Context-sensitive interfacesIntermediate
- References and nested structuresAdvanced
- Lexical closures and private stateIntermediate
- Anchored parsing and capturesAdvanced
- Global matching and parser progressAdvanced
- Filtering, mapping, and numeric orderAdvanced
- Lexical filehandles and explicit text decodingIntermediate
- Packages and explicit public interfacesAdvanced
- Blessed references and method receiversAdvanced
- Exception capture and honest success signalsAdvanced
Think in functions and patterns
Track difficulty: Master
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Assumes basic function and list experience. The course introduces Haskell expressions and type signatures, then develops pattern matching and immutable transformations.
- Expressions, types, and applicationIntermediate
- Higher-order functions and compositionIntermediate
- Patterns and guardsIntermediate
- Algebraic data types and recursive modelsIntermediate
- Structural recursion and base casesIntermediate
- List transformations and lazinessAdvanced
- Fold direction, demand, and strictnessAdvanced
- Maybe and total interfacesAdvanced
- Either and explanatory failuresIntermediate
- Traverse collections of checked resultsAdvanced
- Type classes, newtypes, and lawsAdvanced
- Persistent maps and explicit lookup failureAdvanced
- Pure computation and IO sequencingAdvanced
Transform data with expressive pipes
Track difficulty: Advanced
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic function and collection experience is helpful. Start with immutable values and pattern matching before processes and concurrent programs.
- Immutable values and pattern matchingIntermediate
- Lists, maps, and data shapeIntermediate
- Binary text and Unicode boundariesIntermediate
- Function clauses and guardsIntermediate
- Composing tagged results with withIntermediate
- Structs and explicit domain shapeIntermediate
- Enum pipelines and reductionsAdvanced
- Lazy enumeration and bounded demandAdvanced
- Recursive list processingAdvanced
- Processes and explicit messagesAdvanced
- Task results, links, and time budgetsAdvanced
- Serialized state with GenServerAdvanced
- Supervision and recovery boundariesAdvanced
Explore arrays with concise math
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Basic arithmetic and programming experience are useful. The early chapters introduce Julia values and loops before arrays, broadcasting, and numerical work.
- Values, types, and functionsBeginner
- Conditions, loops, and local calculationsBeginner
- Arrays, indexing, and broadcastingIntermediate
- Views, copies, and array ownershipIntermediate
- Dictionaries, tuples, and named valuesIntermediate
- Generators and deliberate materializationIntermediate
- Composite types and multiple dispatchAdvanced
- Parametric storage and flexible interfacesAdvanced
- Dispatch intersections and method ambiguityAdvanced
- Missing data and recoverable failuresAdvanced
- Numeric representation and error budgetsAdvanced
- Type stability and measured optimizationAdvanced
- Tasks, channels, and producer lifecyclesAdvanced
Transform objects through pipelines
Track difficulty: Intermediate
13 chapters · Checkpoints & final
Chapters & prerequisites
Before you start Assumes you can open a terminal and run a command. The course develops PowerShell values and object pipelines before functions, errors, and automation patterns.
- Values, interpolation, and expressionsBeginner
- Hashtables, keys, and deterministic orderIntermediate
- Work with object pipelinesBeginner
- Collections, comparisons, and nullIntermediate
- Regex captures with explicit success checksIntermediate
- Functions and clean output contractsIntermediate
- Splatting and mutually exclusive parametersAdvanced
- Literal paths and provider boundariesIntermediate
- JSON and CSV as data contractsIntermediate
- Scope, shared objects, and module boundariesAdvanced
- Handle failures at the right boundaryAdvanced
- Build reusable pipeline commandsAdvanced
- Background jobs and isolated resultsAdvanced