An introduction to problem solving, task decomposition, and algorithm development in the context of object-oriented and structured programming techniques. Taught in Java, topics include primitive data types, control structures, simple classes, strings and arrays. The course also introduces object-oriented design and the use of API's to develop applications from existing classes.