An introduction to the fundamental concepts and practices of object-oriented programming. The object-oriented programming paradigm
is introduced, with a focus on the definition and use of classes as a basis for fundamental object-oriented program design. Other topics
include an overview of programming language principles, simple analysis of algorithms, basic searching and sorting techniques, and an
introduction to software engineering issues.