Computer Science and Engineering
Computer Science and Engineering electives allow students to engage with these disciplines in a variety of ways. Students who have completed the Middle School computer science courses enter the Upper School prepared to take any of the electives; all other students can begin by taking the introductory course, Programming and Problem Solving. Elective computer science courses include two AP-aligned courses, numerous intermediate and advanced topic courses, and robotics. Robotics students use programming skills and engineering strategies to design and fabricate robots. Students who take this course are also members of the school’s Robotics team, which competes in international robotics competitions. The Engineering curriculum begins in Grade 10, after the completion of Physics 9, with the introductory Principles of Engineering course. Advanced engineering electives focus on a single area or type of engineering such as Aerospace. Courses in computer science and engineering are enhanced through access to design lab spaces where students can prototype projects.
- Programming and Problem Solving
- Computer Science Principles I/II (Not offered in 2019-20)
- Physical Computing
- Principles of Engineering
- Advanced Programming I/II
- Advanced Project: CSCI and Engineering Semester I/II
- Applied Programming
- Advanced Topics in Computer Science
- Advanced topics in engineering: Aerospace
This introductory course gives students a foundation in the basic skills needed to solve problems by writing computer programs. In this project-based class, students create interactive applications while learning about the basic building blocks of computer programs, such as conditionals, loops, functions, and events, and how to utilize these elements in problem solving and algorithm design. Students also learn about the techniques for writing and perfecting programs, such as modular design and debugging methods. These skills and concepts are practiced using multiple tools and languages to expose students to different programming styles, allowing them to focus on generic programming concepts and computational thinking skills.
This is a beginning-level course that introduces the foundational concepts of computer science and computational thinking. We focus on creative problem solving, real-world applications of computer science theory, and the impact of computers and technology. Topics include creative aspects of programming, abstractions, algorithms, large data sets, the Internet, cybersecurity concerns, and computing impacts. This course covers the seven Big Ideas (Creativity, Abstraction, Data and Information, Algorithms, Programming, The Internet, and Global Impact) and six Computational Thinking Practices that form the core of the AP CS Principles curriculum. Students who complete both semesters of CS Principles will be prepared to take the AP CS Principles test.
This course covers the foundations of robotics including building, electronics, and programming. Students learn how to build robots that can sense the world around them, and act to accomplish goals. The objective of this course is to introduce students to basic programming, robot design and fabrication, as well as engineering problem-solving strategies and technical communications. In this course, students think like engineers as they work to design, build, and program robots that meet the guidelines of different robotics competitions. In fall we compete in the First Technology Challenge and in the spring, other opportunities will be provided. Participation in the team and the competition, including occasional weekend participation, is a requirement for the class. This course is repeatable for credit and students participating for multiple semesters are expected to take on leadership and mentorship roles on the team.
Physical computing involves creating and using programmable objects that interact with the physical world and the people around them. Students in this class will spend the first part of the semester learning about microcontroller programming, and different sensors and output devices through a series of projects. The second part of the semester students spend on an independent project allowing them to explore a topic of interest. Potential applications of physical computing could include robotics, wearable computing, sensor networks, or interactive art displays.
This semester elective project-based course explores engineering – both what it is and how to do it. Students will use the engineering design process to apply content knowledge to a presented challenge, such as maximizing the flight distance of a glider or constructing an assistive device to help a person with limited dexterity. Students will formulate theoretical designs proposing a solution addressing the challenge, build a prototype that addresses the problem, revise the prototype, and develop criteria for evaluating the resulting solution. Each unit project will be assessed according to both process and product criteria, and projects will be drawn from the disciplines of civil, aerospace, mechanical, and biomechanical engineering to expose students to some of the many possibilities present in the field.
In Advanced Programming, students build on previous programming experience to implement interactive programs. This class briefly reviews basic programming structures including variables, branches, loops, functions and lists. Advanced topics could include data structures, the software lifecycle, use of advanced debugging techniques, and object oriented programming. Advanced programming is taught using problem-based learning, and students spend the bulk of class time engaged in hands-on problem solving. Students completing this course will be prepared to take the AP CS A exam.
Students work individually or in small groups on independent projects, potentially with the input of an external client or mentor. Eligible projects include the development of a product or prototype, or a research project with a strong technology focus. Class time is split between project work and project management. Students learn a variety of project management skills including client communication, timeline development, version control, and documentation. Each semester students present their projects to the community.
Students in this course continue to build their computational thinking and problem-solving skills while developing software applications in a targeted application domain. In addition to strengthening their programming skills, students will gain experience in version control systems, documentation standards, and interface design as they complete increasingly complex projects. Target domains and programming languages will vary depending on instructor and student interest. Students will complete several long-term projects in addition to shorter lab assignments. This course is repeatable for credit.
This course provides an in-depth exploration of an advanced topic in computer science. While assignments will require programming and students are expected to have a strong foundation in programming, this is not a programming class. Rather, this class uses hands-on projects and seminar-style discussions to explore theory and application within a focused topic in computer science. This course is repeatable for credit.
In this semester project-based elective, students will explore the fundamental principles of aerospace engineering. Beginning with an overview of the history of aerospace engineering and then practicing actual flight simulation, students will design and test 3D printed sections of wings in a wind tunnel. They will work in groups to design and build a model rocket that flies to a specific height, and they will make and test samples of fiberglass and carbon fiber composites. After taking this course, students will not only recognize how developments in aerospace engineering affect their lives today, but they will also consider future possibilities of this dynamic field by exploring current developments in the field.