Computer programming courses present unique challenges with regard to assessment. This is primarily due to the fact that students in such courses must be able to demonstrate competence in two distinct areas, two separate modes of functioning: they must be able to understand and verbalize the concepts involved in computers and programming, and they must also be able to produce well written, well
... [Show full abstract] structured and understandable applications in the language involved. Although the two are complementary, it is nonetheless required that two separate skill sets be evaluated. We have developed a schedule of evaluations for programming courses that allows instructors to gauge the progress of students in both of these areas as the course proceeds. By the end of the course both instructor and students have a very good idea of how well students have developed a mental construct of computers and programming, and how well students have developed programming skills and techniques that allow them to write functioning applications.