The course focuses on programming fundamentals with advanced topics being presented in the second semester. Students will learn the basis of Java, data structures, algorithms and object oriented programming. Students will use programming as a problem-solving tool as they subdivide programs into manageable parts and search for creative and logical solutions to programming problems. This course will cover the curriculum tested on the AP Computer Test which students may opt to take at the end of year 1 or at the end of year 2. In years 2 and 3 students will advance their programming skills by working on advanced programming projects with multiple programmer.