Curriculum Guide
STEM and Computer Science
Computer Science Electives
These 0.25-credit computer science electives are minor courses that meet two periods per cycle and are meant to be taken in addition to a full course load of five major courses. Students who would like to take two minor courses in the same semester must submit a petition for an additional minor course (see appendix for petition process).
Algorithmic Thinking (0.25 credits, minor, fall)
This course concentrates on the production and analysis of step-by-step algorithms for performing complex computational tasks. Basic topics that will be included are: flow control using loops and conditionals; planning projects using flow charts; and complex standard data types such as lists and dictionaries. Students will work both independently and collaboratively on projects which provide context for the more abstract programming skills. This course is intended for students with some experience in programming but not necessarily familiarity with any particular programming language. Open to students in Classes VI–VIII.
Data Structures (0.25 credits, minor, fall)
This course provides students with the tools to handle large amounts of varying data within a programming project. Importance will be placed on choosing the appropriate programming language and data structure for a given problem. Topics may include understanding computer memory, pointers and memory addressing, databases, and web API’s. Students should expect to drive much of the direction of this course based on their collective interests as they pertain to the vast space of data. Students will work collaboratively on projects and communicate their work using GitHub. Prerequisites: Algorithmic Thinking and Object-Oriented Design or permission of the instructor, based on programming background. Open to students in Classes VII–VIII.
Introduction to Computer Programming in Python (0.25 credits, minor, spring, pass/fail)
This course provides students with a strong foundation in the basics of computer programming and algorithmic thinking. Through a series of exercise sets, activities, and programming projects (both group and individual), students will learn the fundamentals of mathematical operations, boolean logic, binary and hexadecimal number systems, data types, variables, functions, conditionals, iterations, objects, user input, graphics, and other programming constructs. Students will also consider the role of computer science in society and be exposed to various applied domains of computer science, as their interests dictate. Time permitting, a brief module on web development may also be included. This course is intended for students with no background in programming or students with a little experience who wish to learn the basics of programming syntax through the Python language. Open to students in Classes V–VII.
Object-Oriented Design (0.25 credits, minor, spring)
This course introduces students to the organizing principles behind large-scale programming endeavors. Emphasis will be placed on the relationships and coordination between individual components of a more substantial project. Topics will include objects, classes, inheritance, interfaces, and polymorphism. Students will work both independently and collaboratively on projects which provide context for the more abstract programming skills as well as contribute to a larger collaborative final project. Context for projects is largely driven by students’ interest. This course is intended for students with some experience in programming but not necessarily familiarity with any particular programming language. Algorithmic Thinking is not a prerequisite for this class. Open to students in Classes VI–VIII.
STEM Electives
Coding For Interaction (uncredited, minor, fall, pass/fail)
“Interactive Computing” means coding the programs that you want to use, so you can do things better—in your daily life, for your research, in your career, to make your art, and in almost any pursuit. Students will learn to write code to process inputs ranging from the text of the book they’re reading to the data spreadsheets from a science project, from the images on a camera to the clicks of a customer. Then, students will gain experience in analyzing and manipulating (or creating) such sources, with the power and speed of a computer. Students will learn to write code for GUIs (the interfaces which a user sees and uses), media, visualization/experience, web connectivity, etcetera so that they are prepared to write the applications that help them do more. This class will follow the interests of the students and work with real-world parameters, according to the needs of a researcher, gamer, patient, accountant, student, traveler, artist, etcetera—any person who could benefit from having a computational tool in their life. This course meets one period per cycle and is uncredited. Open to students in Class V.
Engineering Design I (0.5 credits, major, spring)
Students will collaborate to engage the principles and methods of engineering design through a variety of projects that emphasize rapid prototyping with embedded systems, electronics, CAD, programming, and mechanical actuation. They will also learn methods of fabrication—including 3D printing, laser cutting, and machining—and explore design thinking. Tasks involve constructing and optimizing special-purpose machines or devices in a cycle of prototyping, construction, and evaluation. Course projects revolve around a new central topic each year. Class VII students will be given priority for enrollment in this course; however, Class VIII students may enroll, pending its ability to be scheduled. This course meets at the same time as Engineering Design II.
Engineering Design II (0.5 credits, major, spring)
An extension of Engineering Design I, this course emphasizes the integration of hardware and software to further student experience with programming, microcontrollers, electronic circuitry, sensors, motors, and methods of prototype fabrication in a systems context, while engaging more deeply in the process of design thinking. Engineering II students also take on greater responsibilities in project management and coordinating team logistics. Assignments result in the construction of intelligent machines to address practical, scientific, and social challenges. Each year, the course revolves around a new central topic. The world is subtly teeming with such machines, and it is the goal of this course to empower students with the methods for understanding and shaping such a world. Prerequisite: Engineering Design I. This course meets at the same time as Engineering Design I.
Information Science: Data, Computation, and (Artificial) Intelligence (0.5 credits, major, fall)
With the advent of modern AI, we are witnessing the receding boundary between human imagination and computation. Information science is the lens through which we can understand “thought” and “meaning” in relation to algorithms and data, tackling that which comprises the fabric of our experiences, enabling us with the tools to model observations and to generate new insights, and reframing other sciences as the physically manifested interplay of information systems. The course begins with topics like Turing machines, entropy, signals, logic, statistics, and boolean networks; it continues to model dynamic systems in biology, chemistry, and physics; and then it culminates with neural networks, machine learning, and artificial intelligence. Along the way, a lab component gives students a chance to apply concepts and produce a final product in machine learning or artificial intelligence. Class VII students will be given priority for enrollment in this course; however, Class VIII students may enroll, pending its ability to be scheduled.
STEM and Society in the 21st Century (0.25 credits, minor, fall, pass/fail)
This course will engage students in the exploration of major STEM topics that they will encounter in everyday life: Is there a scientific basis for race? How is sex biologically determined (or not)? What are vaccines, and why do some of us fear them? Is our climate really changing? How do robots help humans, and do we anticipate a robot apocalypse? Can drones save lives? How secure is social media? Questions will be addressed through the use of discussions, laboratory activities, case studies, data analysis, scientific literature, and guest speakers. Students will develop a nuanced understanding of the ways STEM is viewed by society, specific examples of STEM issues that have provoked societal misunderstanding, and the role and limitations of STEM in their lives. Open to students in Classes VII and VIII.