Skip to content
AtomicReps
Atomic Campus · for computer science departments

Let students use AI.
Keep the learning visible.

After their coding agent finishes, the student answers a question about that code from memory. What they retrieve, they strengthen.

The syllabus, the agent, the code and the student feeding Atomic Reps, and the tutor and the classroom reading what comes outThe syllabusThe agentThe codeThe studentThe tutorThe classroomThe question a person wrote, where the student already works

The student's terminal

the reminders list shows other users' reminders after the first request. fix

Read(app/reminders.py)

Read 61 lines

Grep(pattern: "reminders=", path: app)

2 matches

Update(app/reminders.py)

Updated 1 file, +3 -1

Fixed it in app/reminders.py. Want me to check the other handlers for the same thing?

Atomic Reps · PythonREP 01

Your fix changed the default to reminders=None. What did the old signature do the second time it was called without a list?

def add_reminder(text, reminders=[]):
    reminders.append(text)
    return reminders

Your student's terminal, week six. Pick a letter.

01The gap

The lab is assisted.
The exam is not.

Working code used to be evidence that a student had worked through the problem. With coding agents, those two things have come apart. What happens between the lab and the hall exam has been measured. Atomic Reps watches no screen and runs no detector. It asks the student a question from memory, and the answer is the evidence.

  • 17
    points lower on a comprehension test

    After the task, roughly 50 against 67. The AI group was slightly faster, but not significantly so. Fifty-two developers whose coding AI assisted, pre-registered trial.

  • 9 of 10
    struggling students finished anyway

    Reaching a working solution with AI and, in the authors' words, “an illusion of competence”. In the same lab's pre-AI study, 11 of 31 could not finish, and every one of them knew it.

  • 27 of 32
    Swedish institutions changed how they examine

    In 2025. One response has been more invigilated hall exams: an unassisted signal, but one that arrives at the end of the term.

“GenAI is not cognitive offloading. It’s outsourcing.”
Mark Guzdial, on Paul Kirschner's distinction · Professor of Computer Science and Engineering, University of Michigan
02What the tutor sees

The class first.
A student one click down.

Which concepts the class missed this week, with the question beside each one, so the next lecture starts from what the class got wrong rather than what the slides assumed.

Programming 1 · Python · Autumn 2026
Example data

Week 6 · Functions and mutability

38 of 41 answered. 3 students paused themselves.

Most missed this weekMissed
Default argument evaluated once, at def timeRep 06.2 · Level 250% here · 41% across all classes
19OF 38
What the class pickedPicked by
def add_reminder(text, reminders=[]):
    reminders.append(text)
    return reminders
AStarted from a fresh empty list, exactly as on the first call8
BReused the same list, so it already held the first reminder19
CRaised a TypeError, since a list cannot be a default value3
DCopied the first call's list, leaving the original one untouched8

Half the class missed it. Start with A and D.

Assignment aliases a list; slicing copies itRep 06.4 · Level 137% here · 33% across all classes
14OF 38
sort() returns None; sorted() returns a new listRep 06.1 · Level 129% here · 29% across all classes
11OF 38
is compares identity, == compares valueRep 06.3 · Level 224% here · 24% across all classes · week 2: 15/37
9OF 38
A tuple is immutable; the list inside it is notRep 06.5 · Level 216% here · 18% across all classes
6OF 38

Ranked by how many of the 38 answers got it wrong, against the same rep everywhere else it has been served.

The Tuesday sheet5 concepts · 1 page
01
Default argument evaluated once

What did reminders=[] do the second time the function ran?

A default is built once, when def runs, and it belongs to the function. Every later call without a list appends to that same one.

Source · Python docs · Default Argument Values
02
Assignment aliases, slicing copies

After b = a and b.append(4), what does a hold?

b = a binds a second name to the same list. a[:] builds a new one.

Source · Python docs · More on Lists
03
sort() returns None

You wrote names = names.sort(). What is in names now?

list.sort() orders the list in place and hands back nothing. sorted() leaves the original alone and returns the new list.

Source · Python docs · Sorting Techniques
04
is compares identity, == compares value

Two lists hold the same numbers. What does is say about them?

is asks whether the two names point at one object. == asks whether the two objects hold the same thing.

Source · Python docs · Comparisons
05
A tuple is immutable; the list inside it is not

You have t = (1, [2, 3]). Does t[1].append(4) raise?

The tuple fixes which objects it holds, not what those objects contain. The list inside it can still grow.

Source · Python docs · Tuples and Sequences

Each one prints with its reason and its source.

41 students, one switch
Ask only what you have taughtFollows the syllabus you pasted
On
AI-free weekWeek 8. Unassisted recall, web or Slack
On
Exam pauseSilent from 12 Dec until you lift it
Off
Returning questionsA share of the day from what the class missed in an earlier week
On
In class this week
01
Open with rep 06.2.

Sixteen of the nineteen wrong answers say the default is rebuilt on each call.

02
Put it on the projector and ask again.

The room answers, then the split lands on screen with no names, then the reason.

03
Aliasing returns on Thursday.

To the fourteen who missed it, nine days after they first met it.

Coverage
Recursion stands on 2 reps.

Thin against the rest of your term. We write the missing ones from your own syllabus, in your licence year.

Answers stay in the EUClasses 3
The Tuesday sheet
The five concepts the class missed this week, each with the question, the reason and the source: one page to open the next lecture with.
Read next week's reps. Skip what you haven't taught.
Every rep for next week is fixed and readable now. Skip one and it is never served.
Syllabus import and coverage
Paste the course plan. Each week maps to its topics and shows how many reps stand behind them, and where a custom set would fill a gap.
Interview prompts
For any student, three follow-up questions on the concepts they missed, for the lab or the office hour.
The lecture view
The most missed rep on the projector: the question, how the class split, then the reason. No names. Teach from what the class actually thought.
Evidence, not risk scores
Atomic Reps never labels a student weak, at risk or behind, and no model assigns a score or a rank. The tutor sees answers a student gave; the student sees what their school sees. That commitment is in Schedule A of the order form.
03The questions

You can read every question
before your class does.

Every question is reviewed by a person and fixed weeks before your term starts, so nothing is invented while a student is answering. A class of forty meets the same question the same way, and you veto anything you have not taught.

Not a chapter test.

The questions are about the code the student just shipped: the default argument they left mutable, the list they aliased, the exception they swallowed. A few seconds with their own work, each time.

No model writes it or grades it.

Fixed rules choose each next question: the week's topics, the level band, nothing seen recently. Every question is fixed before it is served, and no model grades a student. What you read on the class screen is arithmetic over answers.

Your syllabus, your phrasing.

Questions written against your course plan, in your words, reviewed by people and folded into the corpus. Included in your licence year. Write to us.

Built from official product documentation and from openly licensed university and interview preparation material, adapted for retrieval practice.

04The evidence

The problem is new.
The learning science isn't.

Being asked to recall beats reading it again, and the lead widens with every day between the lesson and the exam. So the student is asked, not shown. One question about the code they just shipped, answered from memory.

Recalled one week later · equal time on task

Read once, then recalled it three times
61%
Read it four times
40%

Five minutes after studying, the rereaders were ahead. A week later the recallers were, and an exam is weeks away. Lab study, prose passages.

13
points higher on classroom exams

For the material that brief low-stakes questions had covered, 94% against 81%.

222
classroom studies

48,478 students, pooled effect g = 0.499, and five publication-bias checks left it near-clean.

“I’m all about adding friction to force reflection.”
Kristin Stephens-Martinez · Duke University, on generative AI in the CS classroom

Every number links to the page that grades it. The full reading is on the retrieval practice page and the cognitive debt page.

05The term

You set the week.
The product keeps to it.

Atomic Reps follows the course. The course never has to follow Atomic Reps. It is built to sit inside a department's year, its exam calendar and its procurement rules, and nothing is asked before it has been taught.

Before
Paste the syllabus
W01
The first rep, in the lab
W02
Control flow
W03
Functions
W04
Lists, dicts
W05
Files, errors
W06
The Tuesday sheet
W07
Classes
W08
AI-free week
W09
Testing
W10
Exam pause
W11
Missed concepts return
W12
The hall exam

A twelve-week term as the console plans it. Example plan; the marked weeks are the product's.

Topic plan by week
What is asked follows your syllabus, week by week. By default, nothing is asked before it has been taught.
Exam pause
One switch, and the class goes quiet until the exam is over.
AI-free weeks
The week's topics served as unassisted recall on the web or in Slack, for the weeks the agent is off.
Missed concepts come back
Switch it on and the questions the class got wrong come back later in the term, as unassisted recall in the ordinary reps. You choose how often.
The student's own view
Every student can read what their school sees about them, and a log of every time a tutor looked.
06How buying works

One licence year.
Use the seats wherever you need them.

One invoice, nothing above it to buy. The department knows the figure before it opens a procurement file.

Seats belong to the school rather than to a student or a course, so a department that finishes one class moves the same seats into the next one.

Excluding VAT · invoiced by Atomic Reps AB · SEK with 25 percent moms in Sweden · reverse charge for other EU institutions · no auto-renew · price rises capped at 3 percent a year.

Everything on this page
The tutor console, syllabus mapping, the reviewed question corpus, the class and student views, the exam pause, AI-free weeks and revision. Questions written against your own course plan are part of it, not a line item. There is no tier above this one.
Seats move
A seat belongs to the school, not to a student or a course. Move one to another class, term or cohort at any point in the licence year.
Tutors and administrators
Unlimited, and never counted as learner seats.
The figure
Tell us the class size and the term, and a figure comes back with the order form and the compliance pack behind it.

Easy for the department. Boring for procurement.

Peppol and purchase order
E-invoice through Peppol for Swedish public buyers, 30-day terms, no card and no subscription.
Under the direct-award limit
One school, one licence year, well inside direktupphandlingsgränsen. Your institution's own purchasing rules and existing agreements still apply.
The compliance pack
A completed DPIA template, the DPA schedule, a per-student data dictionary and a FRIA draft, delivered before your dataskyddsombud asks for them. See the whole pack, no account needed.
Data stays in the EU
Hosted in EU West. No student answer is sold or used to train a model. Processing and subprocessors are listed in the DPA, in the same words.
07Start with one class

Let them use the tools. See what they learn.

Start in one computer science course. One licence year, invoiced once, and you have the class screen from the first rep.

Your students keep the agent. You get the week the class actually had.

or write to hello@atomicreps.com

Excluding VAT. Invoiced by Atomic Reps AB, 30-day terms. No auto-renew. Price rises capped at 3 percent a year.

AtomicReps

The code can come from anywhere. The understanding still has to belong to the student.

Your students keep the agent and the tools they will use outside school. You get the one thing the exam cannot give you until it is too late: what the class can still explain without them.

One school, one invoice.