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.


Designed as introductory survey course in computer science, this semester class explores the basic design of a modern computer, the respective roles of hardware and software in computing system, and emphasized the students’ development of the computational thinking skills and techniques used by computer scientists. 

In this course, students may:

  • Explore concepts of algorithms and computational thinking through a variety of platforms
  • Gain an appreciation for the complexity of software and develop skills in recognizing patterns among different kinds of problems

This course builds upon concepts learned from Computer Science I. Students continue studies in Python and are introduced to object-oriented concepts and design with the Java programming language. 

In this course, students may:

  • Develop problem-solving skills that can be applied to multiple disciplines
  • Supplement instruction with a wide range of tools, programming languages, activities, and contests

This course is both for potential computer science majors and a foundational course for students planning to study in other technical fields such as engineering, physics, chemistry, geology, and biology. The course emphasizes object-oriented program design and implantation using the Java programming language, procedural abstraction, and in-depth study of algorithms, data structures, and data abstractions. The course explores issues of real-world software development practices, as well as the social, ethical, and legal issues of computing  systems. Instruction includes preparation for the AP Computer Science A exam, as well as exploration of industry topics such as collaboration on projects of scale and distribution of software. Access to, and regulate practice with computing resources outside of the classroom, is expected, as substantial time may be required to complete larger assignments. 

This course explores the design and application of topics in Computer Science beyond the AP Java Curriculum that would permit students to create scalable software solutions to real world problems. Of particular interest are those problems within communities that may include topics of equity, access, and fairness. While encouraging students to create, explore and build solutions to make their world better, (that may take them down paths of entrepreneurship and startup topics) the course is designed to ensure students consider all the corners of their world, and how their design choices may impact others. Topics will include software development and distribution, AI and ML (artificial intelligence and machine learning), computer vision, public policy (healthcare, predictive policing, etc.) and cybersecurity, and include implications of universal access, privacy, freedom of speech and movement. Drawing from works of computer scientists, academics, and several startups (both successful and not), we will combine programming coursework with case-study analysis to “hack for good.”

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.