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.

Accordion

Designed as an 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 a computing system, and emphasizes the students’ development of the computational thinking skills and techniques used by computer scientists. Students explore concepts of algorithms and computational thinking through a variety of platforms and languages like SCRATCH and Python, with additional attention given to topics such as game design, big data, cyber security, and real-world software development practices and lessons. Through a sequence of increasingly more challenging assignments, students 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 the Computer Science 1 (CS1) course. Students continue studies in Program Development in languages such as C and Python.  Programming concepts are expanded and studied deeper, with increasing complexity of projects.  Though this course provides a solid foundation for the topics covered in AP Computer Science A, students will also develop problem-solving skills that can be applied to multiple disciplines beyond computers. A variety of supplemental tools, programming languages, activities, and contests provide a broad range of experiences intended to prepare students for additional areas of study in this field.

AP Computer Science is both a course for potential computer science majors and a foundation 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 implementation 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 regular practice with computing resources outside of the classroom is expected, as substantial time may be required to complete many of the 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.

The Computer Engineering course exposes students to the hardware side of digital electronics and computing hardware, while providing a number of opportunities to continue with skills developed in CS1. Students will 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 will allow students to experiment with basic electrical and electronics circuits, basic digital circuits, robotics and microcontrollers, and work on microcontroller-based (Arduino) projects of varying complexity involving sensors, indicators, and actuators.

This course provides an introduction to cybersecurity with a focus on networking fundamentals. Students will explore essential concepts, protocols, and technologies crucial for securing modern computer networks. Through a combination of lectures, hands-on labs, and practical exercises, students will gain a solid understanding of network security principles and techniques applicable to both personal and enterprise environments.  Throughout the course, students will delve into topics such as IPv4 addressing, routing, subnetting, and network troubleshooting. Additionally, they will learn about various security controls including firewalls, network segmentation, and monitoring tools. By the end of the course, students will be equipped with the knowledge and skills necessary to secure both small office/home office (SOHO) and enterprise networks, and to implement defense-in-depth strategies to protect against cyber threats.