NOC:Design and Pedagogy of the Introductory Programming Course