A cognitive model for structuring an introductory programming curriculum | Synapse