03 / The logic of possibility

Computer
Science

Think it through. Build what’s next.

Turn curiosity into working code. Learn to reason, debug, and build with an engineer’s perspective, whether you’re starting from zero, studying CS, or changing careers.

Try the algorithm lab Find your starting point

School · University · Adult learners Let’s talk about your goals

session.py

Python

# 1. predict on paper. 2. run. 3. compare. def average(nums): return sum(nums) / len(nums)   print(average([90, 72, 84])) $ python session.py 82.0 # ✓ matches the prediction on paper
Session.java

Java

// 1. predict on paper. 2. run. 3. compare. static double average(int[] nums) { int sum = 0; for (int n : nums) sum += n; return (double) sum / nums.length; } System.out.println(average(new int[]{90, 72, 84})); $ java Session.java 82.0 // ✓ matches the prediction on paper
session.js

JavaScript

// 1. predict on paper. 2. run. 3. compare. const average = nums => nums.reduce((a, b) => a + b, 0) / nums.length;   console.log(average([90, 72, 84])); $ node session.js 82 // ✓ 82, not 82.0 — predict that on paper too

7 stages, from unplugged coding in grade school to college projects

6 languages & tools: Python, Java, JavaScript, HTML & CSS, C++, SQL

55 minutes per session

Try it

The algorithm lab. Predict it first. Then watch it think.

Programmers who can run code in their heads debug in minutes instead of hours. These two exercises train exactly that.

Interactive

Sorting, one step at a time

Pick an algorithm and step through it. Watch which line of code runs, and count the comparisons — that count is what “efficiency” really means.

visualizer
  • comparing
  • swapping
  • in final place
sort.py

Turn on JavaScript to run the visualizer.

Pencil check: in sessions we do this with numbered index cards on the table first. Sort eight cards by hand using bubble sort and count your comparisons — then predict how many it takes for sixteen.

Pencil first

Predict the output

Don't run it — read it. Work out on paper what this program prints, commit to an answer, then check the line-by-line trace.

predict.py
total = 0
for n in range(1, 5):
    if n % 2 == 0:
        total += n
print(total)

nn % 2 == 0 ?total afterwards
1no — skip0
2yes — add 22
3no — skip2
4yes — add 46
loop ends (range stops before 5) → print(total)6

Where AI fits: once you can trace it yourself, ask an AI to “write five tricky variations of this loop” — and predict each one on paper before running it.

Personal plan

Built around one student. Their pace, their projects.

No two beginners get stuck in the same place. The first session is a diagnostic that finds the exact gap — then we write a plan for the student that changes as they do.

  • A diagnostic, then a written plan

    In the first session we trace a few small programs together and find the one idea that's actually missing. You get the plan in writing, and we rewrite it as the student grows.

  • Their interests become the examples

    Pace, examples and practice are chosen for this student: a stats tracker for their team, a quiz about the music they love, a mod for the game they actually play.

  • Flexible around real life

    Online or in person, evenings and weekends, weekly sessions or exam-season sprints. Free rescheduling up to 12 hours before, and a short session note afterward.

  • One-on-one by default, always the same tutor

    One-on-one by default (small groups or siblings only if you ask for one), and no rotating cast. The person who found the gap is the person who closes it — and who knows the student's code line by line.

Example plans

Grade 6 — first code

Goal
A working guessing game in Python by the end of term — and every line explained out loud.
Cadence
Once a week, 55 minutes
Format
In person; mostly paper and index cards, the laptop for the last part of the session

First three sessions

  1. Unplugged: write step-by-step instructions for a “robot” and debug them together
  2. Scratch: a sprite that guesses your number, with the loop drawn on paper first
  3. First Python: the same game in text, predicted line by line before it runs

Grade 11 — AP CS A

Goal
A confident AP Computer Science A exam, with free-response code written right the first time — no compiler to lean on.
Cadence
Weekly through the year, twice a week in the final weeks
Format
Online with a shared whiteboard; FRQs drafted on paper first, then timed in exam conditions and marked together

First three sessions

  1. Diagnostic: one past free-response question, timed, on paper — find where the points go
  2. ArrayList and 2D arrays, traced by hand until the indexes are boring
  3. A second timed FRQ, marked against the scoring guidelines, then rewritten

College — data structures & intro ML

Goal
Pass CS2 with real understanding — lists, trees, Big-O — then a first honest machine-learning project.
Cadence
Weekly through the semester, extra sessions before each exam
Format
Online, evenings; whiteboard first, then code in their own editor

First three sessions

  1. Draw the linked list: every pointer on paper before any code
  2. Trees by hand — insert and traverse — then implement and test them
  3. A small scikit-learn model, checked against a simple baseline

Illustrative examples — every real plan starts from the student's own diagnostic.

Real-world CS

Taught by professionals who use this every day.

Lessons are taught by trained professionals with in-industry experience, so the examples are the real ones: how software is actually built, tested and shipped — and how industry checks whether AI can be trusted.

  • Testing

    Tests before trust.

    Real teams don't ship code because it looks right. Students write the test first, watch it fail, then make it pass — the habit behind every app that works on a Monday morning.

  • Debugging

    Debugging is a method, not luck.

    Read the trace, form one hypothesis, change one thing, run it again. It's the same loop engineers use on real production bugs, so it's the one we practise.

  • Git, APIs & code review

    Working with other people's code.

    Commit messages that explain why, branches that keep experiments safe, reading someone else's code before changing it, and pulling real data from an API — then handling the day it comes back broken.

  • Evaluating AI

    Checking AI the way industry does.

    Before a team trusts a model or an AI assistant, they test it: baselines, data it has never seen, deliberate attempts to make it fail. Students learn to ask the same questions.

Taught by Mohammed Arafat — a senior software engineer with 10+ years in industry, who evaluates and red-teams AI systems as part of the job. Meet your tutor

The track

Find your starting point.

Computer science moves fast at the start and then stacks: every concept here assumes the ones before it. Here's the full track, from a grade-schooler's first unplugged puzzle to college-level work.

  1. Stage 1

    Unplugged & block coding

    Grades 3–6 · at their own pace

    Where grade-schoolers meet computer science without a screen in sight: algorithms written on paper, loops acted out with cards, “robots” made of people following exact instructions — then Scratch, once the ideas are theirs.

    • Algorithms on paper
    • Sequencing with cards
    • Loops & repeats
    • Robots made of people
    • Scratch projects
    • Logic puzzles
  2. Stage 2

    First steps: what code even is

    Grades 6–8 · usually 4–8 weeks

    The on-ramp for older beginners, and the one that decides whether the student thinks coding is "for them". If Stage 1 was skipped, we start unplugged — instructions on paper, robots made of people — then block-based tools, then text as soon as they're ready.

    • What a program is
    • Unplugged algorithms
    • Sequencing & logic
    • Block-based → text-based
    • Problem decomposition
    • First text program
  3. Stage 3

    A first language

    Grades 8–10 · usually a term

    Python for most beginners — its syntax reads like English and the feedback loop is instant. JavaScript if the student wants to build websites; Java if AP CS A is coming. Whichever we pick, the concepts transfer.

    • Variables & types
    • Conditionals
    • Loops
    • Functions
    • Lists & dictionaries
    • Strings
    • Reading error messages
  4. Stage 4

    Object-oriented programming

    Grades 9–12 · usually 8–12 weeks

    The mental leap that trips up most students: thinking in objects with responsibilities rather than lists of instructions. We sketch class diagrams on paper first — a deck of cards, a bank account, a game entity — until the design questions feel natural.

    • Classes & objects
    • Methods & fields
    • Constructors
    • Encapsulation
    • Inheritance & polymorphism
    • Static vs instance
    • UML (intro)
  5. Stage 5

    AP Computer Science A & CSP

    Grades 10–12 · exam-timed

    Exam-focused preparation for both AP tracks. The AP CS A free-response questions are typed in the exam app with no compiler, autocomplete or syntax checking to catch mistakes — so we draft them by hand first, then practise them under exam timing until it's boring. For CSP, the Create task and its written responses.

    • AP CS A (Java)
    • 2D arrays & ArrayList
    • Recursion
    • FRQs with no compiler
    • AP CSP Create task
    • Exam timing & strategy
  6. Stage 6

    Data structures & algorithms

    Grades 11+ / college · usually a term

    The course every CS major's later work stands on. We make each structure concrete — draw the array, walk the tree on a whiteboard — instead of memorising definitions, and practise reading running time intuitively.

    • Arrays & linked lists
    • Stacks & queues
    • Maps / hash tables
    • Trees & graphs (intro)
    • Sorting & searching
    • Big-O analysis
    • Recursion & divide-and-conquer
  7. Stage 7

    Projects, git & working with AI

    Grade 12 / college CS1–CS2 · ongoing

    The practical layer: version control without fear, debugging as a method rather than luck, and using AI coding assistants the way professionals do — reviewing every suggestion, writing tests, and owning every line that ships.

    • Git & GitHub
    • Debugging technique
    • Testing basics
    • Project architecture
    • Command line
    • AI pair-programming
    • Code review practice

Project rescue

Half-finished game, broken app, assignment due Friday and nothing compiles? Bring it. We triage what's salvageable, decide what to cut, and build back only what the deadline actually needs — with the student at the keyboard.

Languages & tools

Python, Java, JavaScript, HTML & CSS, C++ (intro), and SQL basics. We work in the real environment — VS Code or IntelliJ, the terminal, git, and the debugger — so a first job or college course feels familiar.

Specialised track

AI & Machine Learning, taught honestly.

A separate, specialised track for advanced high-school and college students. They build small models themselves — and learn the checks that stop people fooling themselves with those models.

  • For: advanced high school & college
  • Prerequisite: comfortable with Python and basic statistics
evaluate.py

Training setTest set · held out

Coin-flip baseline~50%

Fight-outcome model67%

# the number only means something next to the baseline

Model versus baseline: a fight-outcome prediction model was right 67% of the time, against about 50% for a coin-flip baseline. The train/test bar above shows the general rule of a fair test: a model is scored on data held out from training.
  1. How models learn from data

    Features, labels, and why the training set and the test set must never mix.

  2. Beat the baseline first

    Why a model has to beat a simple baseline before it means anything — and how leakage and overfitting make a bad model look brilliant.

  3. Build and evaluate small models

    In Python with scikit-learn, then PyTorch intuition for how neural networks learn — small enough to understand every step.

  4. Read results honestly

    Accuracy against a baseline, never in a vacuum: a 67% fight-outcome model matters only because a coin flip gets about 50%.

  5. AI safety & responsible use

    How AI assistants fail, why guardrails matter, and what bias and privacy mean when real people's data is involved.

Our rule on AI

We never use AI to help students cheat or to complete assignments for them. We teach AI as a holistic learning partner — to explain, to quiz, to critique work the student wrote — always toward the shared goal of real learning, and always within the school's rules.

The track is taught by an engineer who designs AI evaluation and AI-security test suites and red-teams AI assistants professionally — so students learn exactly where AI helps and where it fails.

Test prep

Test prep, without the panic.

Exam-specific practice for the tests CS students actually sit, rehearsed the way they're graded. For AP CS A, that means writing correct Java with no compiler to catch you — so we draft it by hand first, then time it under exam rules.

  • High school

    AP Computer Science A

    Java free-response questions written with no compiler or autocomplete, 2D arrays, ArrayList and recursion — timed until the clock stops being scary.

  • High school

    AP Computer Science Principles

    The multiple-choice exam and the Create task with its written responses — planned early and written in the student's own words.

  • College

    CS1 & CS2 exams

    Tracing, recursion, Big-O and data structures on paper — the format most university CS exams still use.

  • Internships

    Technical-interview fundamentals

    Arrays, hash maps and recursion, solved at a whiteboard while explaining the approach out loud.

How we prepare, for every exam

  1. Diagnostic practice test

    A real past paper under real time, so we see exactly where the points are lost.

  2. Target the gaps

    We rebuild only what the diagnostic exposed, one topic at a time — not the whole course again.

  3. Timed practice, real conditions

    Full timed practice under exam rules — on paper, by hand, wherever the exam is on paper.

Paper & AI in CS

Learn to think like the computer — then let AI type faster.

AI assistants can write a lot of code. They can't tell you whether it's the right code. That judgement comes from tracing, drawing, and debugging by hand — so that's where we start, and AI is where we finish.

In the session

  • Trace code on paper, variable by variable, before running it
  • Whiteboard the algorithm before a single line is typed
  • Live debugging: the student narrates each hypothesis out loud
  • “Explain this line” — every line, including ones AI suggested

How we teach AI for coding

  • Ask AI to explain an error message — not to fix the code
  • Have AI generate test cases, then make your code pass them
  • Compare your solution with AI's and find where AI's is worse
  • Prompting precisely is a programming skill — we practise it

We never use AI to help students cheat or to complete assignments for them. AI is a learning partner here: it explains, it quizzes, it critiques code the student wrote — always toward real learning, and always within the school's rules.

More on our pencil-first, AI-aware approach →

Inside a session

How a coding session runs. Predict, read, change, explain.

The student drives the keyboard — always. We ask questions, point at lines, and think out loud alongside them, but the typing is theirs, because the muscle memory is half of what we're building.

We debug by reading the error message together and forming a hypothesis, the way working programmers do. No "just change it and see", no copy-paste answers. Every line in their code is a line they can explain.

Start with a free intro call

session.py
A debugging session on session.py. The function average(nums) returns sum(nums) / len(nums), and the program prints average([]). Step 1, predict: the student writes a prediction on a slip of paper, "0? or a crash?". Step 2, read the error: running it shows a traceback — line 3 in the module calls average, line 2 divides, ZeroDivisionError: division by zero — while the call stack shows the module frame and the average frame. Step 3, change one thing: the student adds one guard line, "if not nums: return 0", and the stack unwinds. Step 4, explain it back: running again prints 0, and the student explains that len([]) is 0, so an empty list needs its own answer. Only then does AI add a comment suggesting edge cases to test: an empty list, [5], and [-1, 1].
  1. Predict

    Before running anything, we write down what we expect to happen. That's the hypothesis.

  2. Read the error

    Error messages are the compiler helping. We learn to read the first line, then the first line that matters.

  3. Change one thing

    One change at a time, with a prediction first. This is the habit that separates stuck from working.

  4. Explain it back

    The student tells us what the fix did. If they can say it, they'll remember it; if not, we draw it out.

Skip the animation

Questions

Computer science tutoring, asked plainly.

My child has never coded before. Where do they start?

Anywhere they're comfortable. We usually start with a tiny program that does something visible within twenty minutes — a guessing game, a calculator, a drawing — because early wins matter. Then we grow it together.

If AI can write code, is learning to program still worth it?

More than ever. AI writes plausible code quickly — and plausible isn't the same as correct. The people who get the most from AI are the ones who can read, test, and fix what it produces. That's exactly the skill we teach.

Do you allow ChatGPT or Copilot in sessions?

For beginners, mostly not — fundamentals come first, like learning arithmetic before using a calculator. As students advance, we bring AI in deliberately: explaining errors, generating tests, reviewing suggestions line by line. Always within your school's rules.

Which language should my child learn first?

Python, usually — forgiving syntax, used everywhere. But the right first language is the one that keeps the student typing: JavaScript for websites, Java if AP CS A is on the horizon. The concepts transfer.

Is Roblox or Minecraft coding actually useful?

Yes. Game scripting uses real languages and real concepts: variables, functions, events, state. If a game gets the student writing code, it's a great on-ramp, and we steer it toward general skills as we go.

Does my child need a good computer?

Almost certainly not. Any laptop from the last decade handles introductory programming fine — and plenty of our best work happens on paper anyway. We'll set up the free tools together in the first session.

Next step

Your next chapter starts here.

A link to the project, a pasted error message, or just "they want to learn to code" — any of these is enough. We'll reply within one business day.

Ask about CS tutoring