Introductory programming, criterion-referencing, and bloom | Synapse