This course is designed to be a full year college-level computer science course for the advanced student in preparation for the Computer Science A Advanced Placement Examination. This course is intended for potential computer science majors or any student interested in a more technical field. Topics covered include programming with Java including basic program elements, control statements, defining and using classes, ways to improve the user interface, arrays and their manipulation, recursion, complexity, and searching and sorting. We will examine working with linear and unordered collections, trees and priority queues. Additionally, we will study object-oriented design and programming and develop software following the software development life cycle through various case projects. At the conclusion of the course, the students will take the AP Computer Science A exam administered by the College Board.