Why Teach Introductory Computer Science? Reconciling Diverse Goals and Expectations
Introductory computing courses emerged during the sixties, under a variety of designations such as “programming” or “automatic computing”, offered to university students in a broad range of disciplines. Whereas the concept of a “first course in computer science” survived four decades, and even moved to the high school level, its goals and contents have been changing excessively, and have not as yet reached a stable state. We review the historical development of typical introductory CS courses and analyze the forces that shaped them. Inspired by more mature sciences, and the way their introductory courses evolved over centuries to simultaneously meet distinct expectations, we argue that an introductory CS course should address three goals: the development of skills in programming some simple system, appreciation of intellectual achievements, and the role of information technology in society. Although this requirement may be considered overly ambitious, we aim to show that it can be achieved if issues are presented in terms of well-chosen examples rather than in a general, abstract manner.