This course introduces the fundamental concepts of programming and problem solving. It focuses on simple data types, control structures, and introduction to array and string data structures and algorithms, as well as debugging techniques and the social implications of computing. It emphasizes good software engineering principles and developing fundamental programming skills in the context of a language that sports the object-oriented paradigm. The lab component provides hand-on programming experience that is vital for beginning programmers and computer science students. 3/2/0