Skip to main content

Upper School Computer Science

In an ever more interconnected world, our students emerge ahead of the curve, prepared as future-ready leaders.

Real-World Technology

Because computer science and the technologies it enables rest at the heart of our economy and way of life, we give students the opportunity to gain a clear understanding of its principles and practices, through hands-on, authentic, and relevant projects that test their ability to apply specific skills and knowledge to real-world problems.


This course introduces students to computer science and computational thinking through the Python programming language and real-world examples. Through a variety of supplemental tools, programming languages, activities, and contests, students gain a broad range of experiences intended to prepare them for additional areas of study in this field.

In this introduction to object-oriented concepts and designs, students build on the skills obtained in Programming 1 and use the Java language to reinforce programming practices and explore object modeling and interactions. This course promotes the development of problem-solving skills that can be applied to multiple disciplines beyond computers.

Students in this course explore more advanced topics in Java and object-oriented design, including inheritance, polymorphism, recursion, and searching and sorting algorithms, while also examining the issues of real-world software development practices and the social, ethical, and legal questions of computing systems.

This course exposes students to the hardware side of digital electronics and computing hardware. Students have opportunities for hands-on time to experiment with electrical and electronic components and devices, as well as computer engineering tools such meters, oscilloscopes, power supplies, soldering irons, and small hand tools. The course allows students to experiment with basic electrical and electronics circuits, basic digital circuits, microprocessors and microcontrollers, and work on microcontroller-based (Arduino) projects of varying complexity involving sensors, indicators, and actuators.