Rethinking computer science education from a test-first perspective | Synapse