Defining the Competencies, Programming Languages, and Assessments for an Introductory Computer Science Course