This course 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. It is proposed that Java will be used for object-oriented programming.