What do you want to learn this week?
Learn anything, with the time you have. If it's not in the catalog, describe it and your course is ready in minutes.
Free to start · no card needed
How a course goes
By the end, you can do it without the tutor.
marks each module's capstone lesson.
01Language Essentials3 lessons
This module refreshes the C++ language foundations needed for later work: declaring and reasoning about values, evaluating expressions, and tracing control flow through functions.
Types, Variables, and Scope
Review fundamental and user-defined type distinctions, declarations, initialization, constness, and the relationship between variables and their scopes. Practice predicting which declarations are visible and how type choices affect valid operations.
Expressions and Operators
Refresh arithmetic, comparison, logical, assignment, increment, and conditional operators, with attention to the types and values they produce. Trace nontrivial expressions without confusing evaluation order, implicit conversion, and precedence.
Control Flow and Functions
Synthesize the language essentials by reasoning through conditional and iterative control flow alongside function declarations, calls, parameters, and returns. Assessment focuses on predicting execution, identifying scope and type effects, and explaining how expressions determine control decisions.
02Memory and Indirection4 lessons
Refresh how C++ names, accesses, allocates, and releases objects in memory. Learners progress from references and pointers through array addressing and dynamic lifetime, then synthesize these ideas to diagnose memory-safety problems.
References and Pointers
Review references as aliases and pointers as objects that store addresses, including initialization, null pointers, dereferencing, and the address-of operator. Use short code traces to determine which object an expression accesses.
Arrays and Pointer Arithmetic
Connect built-in arrays, indexing, and pointers through the equivalence between a[i] and *(a + i) in valid expressions. Determine how pointer increments and differences relate to element positions, and identify when an address falls outside the array's valid access range.
Dynamic Memory and Lifetime
Examine how new creates dynamically allocated objects or arrays and how delete or delete[] ends their lifetimes. Reason about the difference between an address stored in a pointer and the lifetime of the object at that address.
Memory Safety Reasoning
Synthesize references, pointers, pointer arithmetic, and dynamic lifetime to trace memory states and classify failures such as null dereferences, out-of-bounds access, use-after-delete, and mismatched deallocation. Justify whether each access is valid and explain the reasoning from object lifetime and bounds.
03Object-Oriented Design4 lessons
This module refreshes how C++ models objects through classes, controls object state, manages construction and copying, and preserves interface guarantees with constness and parameter passing. Learners then trace inheritance and dynamic dispatch while synthesizing object lifetime, copying, and polymorphic behavior.
Classes and Encapsulation
Review class definitions, data members, member functions, and the distinction between an object's interface and its representation. Trace how public, private, and protected access affect which code can inspect or modify an object's state.
Constructors, Destructors, and Copying
Reason about when constructors and destructors run and how copying creates or assigns object state. Distinguish copy construction from copy assignment and connect each operation to the lifetime of the objects involved.
Constness and Parameter Passing
Analyze const objects, const member functions, and const references as guarantees about permitted modification. Compare pass-by-value, pass-by-reference, and pass-by-pointer by tracing aliasing, copying, and whether a function can change the caller's object.
Inheritance and Dynamic Dispatch
Synthesize class interfaces, object construction and copying, constness, and parameter passing with inheritance and dynamic dispatch. Analyze base and derived objects through references or pointers, including the role of virtual functions and virtual destructors in safe polymorphic use.
04Generic STL Reasoning4 lessons
This module refreshes generic programming and the Standard Template Library through focused reasoning about function templates, container capabilities, iterator-based algorithms, and performance trade-offs. Learners progress from reading template code to selecting and evaluating STL data structures in unfamiliar C++ code.
Function Templates
Function templates define type-independent operations that the compiler specializes for particular arguments. Learners reason about template parameters, deduction, explicit type arguments, and how the resulting types affect overload behavior and expressions.
STL Container Selection
STL containers provide different guarantees for storage, access, insertion, removal, ordering, and key lookup. Learners compare those guarantees to determine which container fits a stated set of operations.
Iterators and Algorithms
Iterators provide a common way to traverse ranges, while STL algorithms operate on those ranges without depending on a particular container. Learners reason about half-open ranges, iterator categories, algorithm preconditions, return iterators, and element mutation.
STL Performance and Data-Structure Choices
This synthesis assessment combines template reasoning, container selection, iterator-based algorithms, and complexity analysis. Learners diagnose mismatches between required behavior and chosen STL components, then compare alternatives by access, update, lookup, traversal, and invalidation costs.
2 more modules in the full syllabus.
The obvious question
Why not just ask ChatGPT?
For a one-off question, go and do that. The difference shows up over weeks, when you need to finish something and still be able to do it yourself afterwards.
| A general chatbot | codeset | |
|---|---|---|
| Structure | Whatever you think to ask | A full syllabus, in order |
| Before you start | You find out as you go | You read the whole plan first |
| What it sees | Text you paste in | The work you actually did |
| Progress means | The conversation continued | You worked through the syllabus |
| When you're stuck | It hands you the answer | It finds the gap, then teaches it |
| Checks | Nothing you have to pass | Checks along the way, then an assessment |
| Tomorrow | Starts over, remembers nothing | Picks up where you left off in this course |
| What you end up with | A transcript you'll never reread | The thing you built, and the syllabus behind it |
- Structure
A general chatbot
Whatever you think to ask
codeset
A full syllabus, in order
- Before you start
A general chatbot
You find out as you go
codeset
You read the whole plan first
- What it sees
A general chatbot
Text you paste in
codeset
The work you actually did
- Progress means
A general chatbot
The conversation continued
codeset
You worked through the syllabus
- When you're stuck
A general chatbot
It hands you the answer
codeset
It finds the gap, then teaches it
- Checks
A general chatbot
Nothing you have to pass
codeset
Checks along the way, then an assessment
- Tomorrow
A general chatbot
Starts over, remembers nothing
codeset
Picks up where you left off in this course
- What you end up with
A general chatbot
A transcript you'll never reread
codeset
The thing you built, and the syllabus behind it
The things you'd ask before signing up.
- What does it cost?
- Nothing to start. Every account gets 2,000 free credits, worth about forty lessons or a course you generate yourself with plenty left over, with no card and no trial clock. Past that, plans start at $14 a month, and the pricing page shows what a credit buys before you spend one.
- Which languages can I learn?
- The catalog covers programming languages and software engineering topics. If the language or topic you need isn't there, describe it and the tutor can generate a complete syllabus for you.
- What if my language or topic isn't in the catalog?
- Describe it and the tutor writes the syllabus, module by module, before you commit to any of it. Generating a course costs credits from the same free balance every account starts with, and what comes out is a course like the others: readable in full, and yours to start or discard.
- Will it just hand me the answer?
- It's built not to. When you get stuck it looks for the thing you've misunderstood and teaches that instead of pasting in a fix. It isn't flawless at this, but it's what the whole tutor is tuned around.
- Do I have to install anything?
- No. Lessons run in the browser. The editor, terminal, and files open when a lesson needs you to write code. A refresher does not open an editor.
- How much time does it take?
- One lesson at a time, and it holds your place exactly. Come back a week later and the tutor picks up mid-thought instead of asking you to explain your project again.
- What's still rough?
- It's early. Some courses go deeper than others, the tutor gets things wrong now and then, and the coding workspace still needs a laptop, though lessons and the tutor work on a phone. You'd be an early user, with everything that means.
Early access
What do you want to learn?
Say it, and you get a syllabus to read before anything is written. Or open a course that already exists and start from that plan.