The course objective is to develop core programming skills through the use of Java as the core language. The purpose is to prepare students for subsequent courses in both computer science and other science areas. Students will learn program design, control structures, data types, arrays, algorithms, documentation, testing, debugging; and principles of object-oriented design, including encapsulation, polymorphism, and abstraction.