CS101O. Introduction to Object-Oriented Programming

Introduces the fundamental concepts of programming from an object-oriented perspective. Topics include simple data types, control structures, an introduction to array and string data structures and algorithms, as well as debugging techniques and the social implications of computing. The course emphasizes good software engineering principles and developing fundamental programming skills in the context of a language that supports the object-oriented paradigm.

Prerequisites: No programming or computer science experience is required. Students should have sufficient facility with high-school mathematics to solve simple linear equations and to appreciate the use of mathematical notation and formalism.

Syllabus:

Units covered:
PF1 Fundamental programming constructs   9 core hours
PF2 Algorithms and problem-solving   3 core hours (of 6)
PF3 Fundamental data structures   3 core hours (of 14)
AL3 Fundamental computing algorithms   1 core hour (of 12)
AL5 Basic computability   1 core hour (of 6)
AR2 Machine level representation of data   2 core hours (of 3)
PL1 Overview of programming languages   2 core hours
PL4 Declarations and types   2 core hours (of 3)
PL6 Object-oriented programming   7 core hours (of 10)
PL8 Language translation systems   1 hour
SP1 History of computing   1 core hour
SP4 Professional and ethical responsibilities   1 core hour (of 3)
SP5 Risks and liabilities of computer-based systems   1 core hour (of 2)
SE3 Software tools and environments   1 core hour (of 3)
SE6 Software validation   1 core hour (of 3)
  Elective topics   4 hours

Notes:
This course is part of an alternative implementation of the objects-first introductory track that covers the fundamental programming concepts in three semesters rather than two. In terms of the curriculum, students should be able to move on to more advanced courses after taking either the sequence CS101O-102O-103O or the two-semester sequence sequence CS111O-112O, which covers the same material in a more concentrated fashion. Although covering programming fundamentals in two semesters has long been standard in computer science education, more and more programming topics can legitimately be identified as fundamental, making it more difficult to provide a complete introduction to this material in a single year. The CC2001 Task Force anticipates that three-semester introductory sequences will become increasingly common over the next decade and encourages departments and individual faculty to experiment with models along these lines.

What differentiates this course from the imperative-first implementation in CS101I-102I-103I is the early emphasis on objects. In this course, the discussion of classes, subclasses, and inheritance typically precedes even such basic concepts as conditional and iterative control statements.

Online resources for CS101O


 
CC2001 Report
December 15, 2001