Make hand-written code a habit in the age of AI.
25 minutes a day, no AI in the room, graded after you submit.
- Two checksTwo checks, not one: is it correct, and is it fast. An order of magnitude slower does not pass.
- Show upJust show up. Misses come back on their own, and the difficulty follows you.
- DecidedThe hard part of a habit is deciding what to do each day. That part is done for you.
25-minute clock · no hints · leaving the window or pasting a large block is recorded, not blocked
Python
SQL
Pandas
PySpark
One payment opens all four, for good. Java is not part of this — it will be sold separately when it ships.
The code is correct, but the approach is an order slower than optimal (measured O(n), optimal here O(log n))
- Test cases
- 20 passed / 0 failed (of 20)
- Time taken
- 11.4 min
- How fast the approach is
- Measured O(n) · optimal O(log n) · an order slower
- Session record
- Never left the window, no large pastes detected
Every test passed — and it still did not pass. That is the second check.
Pattern
Filter, aggregate duplicate visits, left-join member totals, then apply a two-key sort. Your graded approach matches the required pattern.
Where it went sideways
Scratch cell 2 grouped only observed kept rows and did not visibly account for missing fees or members with no qualifying rows. Re-running that exploratory expression four times did not expose those edge cases; the final cell corrected them with numeric coercion, default totals, and the required output ordering.
Go look at
Outer-join aggregation exercises involving null values, empty inputs, unmatched entities, and deterministic multi-column sorting.
A real review, word for word. It reads the whole notebook — including the cell you ran four times — not just the answer. It never hands you the answer, and it never changes the verdict: optional, one credit, after the fact.