Evaluating programming ability in an introductory computer science course | Synapse