Skip to content

Telemetry · Education

What did the prototype record?

A 20-minute data exercise for student builders. Eight toy trials and all 18 event rows are fictional. Once you have the printable materials or CSV, the exercise needs no account, student data, or internet connection.

Count recorded trials, not rows

Imagine a practice-question app that records a start, a question opening, and an answer submission. Count distinct trial IDs at each step. Why do seven question-opening rows represent only six trials? Which transition loses more recorded trials? Does a missing submission prove a person gave up?

A 20-minute route through the data

  1. 0–5 min: Find each event type in the table. A trial ID is one fictional attempt, not a person.
  2. 5–12 min: Tally distinct trial IDs for each event. Compare the start-to-open and open-to-submit gaps.
  3. 12–20 min: Give two possible reasons for a missing submit event, then name one extra event that could help test one reason. Check your counts with the SQL if time allows.
Your tally
eventDistinct trial IDs
flow_started________
question_opened________
answer_submitted________

The event rows

trial_idevent
toy-01flow_started
toy-01question_opened
toy-01answer_submitted
toy-02flow_started
toy-02question_opened
toy-02question_opened
toy-02answer_submitted
toy-03flow_started
toy-03question_opened
toy-04flow_started
toy-04question_opened
toy-04answer_submitted
toy-05flow_started
toy-05question_opened
toy-06flow_started
toy-07flow_started
toy-07question_opened
toy-08flow_started

Check with SQL

Import the CSV as a table named prototype_events in SQLite, or count the IDs by hand. This query does not send data anywhere.

SELECT
  COUNT(DISTINCT CASE WHEN event = 'flow_started' THEN trial_id END) AS started,
  COUNT(DISTINCT CASE WHEN event = 'question_opened' THEN trial_id END) AS opened,
  COUNT(DISTINCT CASE WHEN event = 'answer_submitted' THEN trial_id END) AS submitted
FROM prototype_events;
Organizer and teacher key

Eight trials have a start event, six have a question-open event, and three have a submission event. toy-02 has two question-opening rows but is one trial. The recorded count falls by two, then by three. The CSV does not explain why: someone could stop, the app could fail, or an event could fail to arrive. There is no randomized comparison, so the rows cannot prove a design change helped. An explicit_exit event would be evidence of an explicit exit if recorded as intended; its absence would still leave the outcome unknown.

What if the log misses a submission?

In this separate thought experiment, three submissions happen. Choose how many browser submission events fail to arrive. The underlying actions stay fixed.

Submissions visible in the log3

Submissions in this thought experiment3

The recorded count changes even though the actions do not. A server-side acceptance record could help check what happened; a missing browser event alone cannot.

Read the longer explanation (English)

Optional software extension

Run the same fictional rows in Telemetry’s browser SQL playground without an account. Telemetry stores structured software events and lets developers query them with SQL, but the exercise works without the hosted service. If an organizer later wants to send synthetic events, the public $0 plan includes 1 GB of storage and needs no credit card. Never send real student identities, answers, or learning records.

Telemetry’s current terms require account creators to be over 18. Younger students can use the printable activity without creating an account. Terms of Service

Run this query in the browserFirst-event guide

I’m JR, the founder of Telemetry. I prepared this exercise with AI help; it has not been tested in a classroom or event. Review it before use. No hackathon or school has endorsed it.

Found an error? Tell me without sending student data.