A systematic approach to active and cooperative learning in CS1 and its effects on CS2 | Synapse