Exploring computer science is designed to introduce students to the breadth of the field of computer science. Rather than focusing the entire course on learning particular software tools or programming languages, the course is designed to focus on the conceptual ideas of computing. The goal of this course is to develop in students the computational thinking practices of algorithm development, problem solving and programming within the context of problems that are relevant in their day-to-day life. The course content includes an overview of computer hardware, as well as an introduction to computer programming, web development, and physical computing.
This full-year course provides a foundation in Object-Oriented Programming (OOP) using Java. This course is primarily a programming course, but the focus is on the problem solving techniques common in computer science. Students are expected to know the foundations of computing taught in Exploring Computer Science (ECS). It is recommended that students take ECS prior to taking this course to build solid foundations in computational thinking. This course is no different than learning a new language (ex. Spanish, Italian, French, etc.) and in order to "speak" it fluently, students must practice it every day on the online student portal. This course covers half of the AP computer science curriculum.
This is not an introductory course in programming. This is a fast-paced college level course in computer science. Student must demonstrate understanding of the fundamentals of Java programming covered in Introduction to Java Programming in order to be successful in this course. This course continues where introduction to Java Programming ends. Students will be given a diagnostic test at the start of the course to check their proficiency in Java programming. The programs written in this course will be understandable, adaptable, and, when appropriate, reusable. This course covers other important aspects of computer science, including the development and analysis of algorithms, the development and use of fundamental data structures, the study of standard algorithms and typical applications, and the use of logic and formal methods.