Technology & Computer Science

The goal of the computer science program is to empower our students to not only be consumers of technology, but to also be creators of technology. We also strive to educate our students to
recognize the importance of understanding the ethical and moral implications of creating and using technology. Therefore, we offer an array of courses to achieve these goals.
In the Middle School, students are assigned by grade to technology classes that use class-based and cross-curricular technology projects to hone their skills in Google applications, graphic and website design. They are also introduced to computer programming in JavaScript, HTML, CSS and Python.
In the Upper School, students learn and employ new software programs and applications as needed for individual class assignments. They also complete the Introduction to Computer Science course and have the opportunity to take both an Engineering and Design course and higher level computer science courses, such as Software Engineering and AP Computer Science A.
Coding opens up a part of our brain that we don't usually use. Even if we do not end up going into computer science, it broadens our horizons. We can apply this way of thinking to our lives, and become more successful. O. Winchenbaugh '21
Middle School
Technology 5
This semester-long course is a project based curriculum that introduces coding and computer science. The students will learn how to write code for devices, such as micro:bit microcontroller boards, Sphero Bolt robots and, if time permits, a brief exposure to Arduino Lego robots. The students will begin by working with micro:bits using Microsoft’s MakeCode block-based coding environment that provides an easy and fun introduction to programming. A micro:bit is a handheld, programmable micro-computer with a 5x5 display of 25 LEDs, Bluetooth, and sensors. Next the students will work with Sphero Bolt robots. These are sphere shaped robots that are fully programmable and have a suite of sensors. The block based coding environment used for both of these devices is a great way for students to start learning about coding concepts without having to worry about syntax. For each type of device, the course will work through multiple units, each unit focusing on specific computer science concepts and programming skills. Many units will include lessons that combine unplugged activities to introduce the concepts, guided activities to gain hands-on coding experience and self-directed independent projects to apply their new skills in creative ways. When students complete this course, they will have a good understanding of many key computer science concepts that can serve as a foundation for future study. They will develop powerful design skills that they can use in future courses and projects of all types, whether that be further study in robotics with Arduino Lego robots, designing 3D-printed prototypes or creating apps that serve a real-world purpose.
Overview of Topics
- Algorithms
- Conditionals
- Variables
- Looping
Signature Activities
- Creating a micro:pet and a fidget cube using micro:bits
- Coding a board game with a timer using micro:bits
- Completing multiple coding challenges with Sphero Bolt Robots
Texts and Other Resource Materials
- Micro:bits
- Sphero Bolt Robots
Technology 6
This semester-long course is a project based curriculum that introduces coding and computer science. The students will learn how to write code for devices, such as micro:bit microcontroller boards, Sphero Bolt robots and, if time permits, a brief exposure to Arduino Lego robots. The students will begin by working with micro:bits using Microsoft’s MakeCode block-based coding environment that provides an easy and fun introduction to programming. A micro:bit is a handheld, programmable micro-computer with a 5x5 display of 25 LEDs, Bluetooth, and sensors. Next the students will work with Sphero Bolt robots. These are sphere shaped robots that are fully programmable and have a suite of sensors. The block based coding environment used for both of these devices is a great way for students to start learning about coding concepts without having to worry about syntax. For each type of device, the course will work through multiple units, each unit focusing on specific computer science concepts and programming skills. Many units will include lessons that combine unplugged activities to introduce the concepts, guided activities to gain hands-on coding experience and self-directed independent projects to apply their new skills in creative ways. When students complete this course, they will have a good understanding of many key computer science concepts that can serve as a foundation for future study. They will develop powerful design skills that they can use in future courses and projects of all types, whether that be further study in robotics with Arduino Lego robots, designing 3D-printed prototypes or creating apps that serve a real-world purpose.
Overview of Topics
- Algorithms
- Conditionals
- Variables
- Looping
Signature Activities
- Creating a micro:pet and a fidget cube using micro:bits
- Coding a board game with a timer using micro:bits
- Completing multiple coding challenges with Sphero Bolt Robots
Texts and Other Resource Materials
- Micro:bits
- Sphero Bolt Robots
Technology 7
This semester-long course provides students with an introduction to digital fabrication and design using laser cutting and 3D printing technologies. Meeting once per week, students will gain experience in both 2D and 3D design software, develop an understanding of materials and fabrication processes, and apply design thinking strategies to bring their ideas from concept to completion. The course emphasizes safe and effective use of equipment, iterative problem-solving, and the ability to communicate design choices. The semester culminates in a student showcase, where students present original products that demonstrate both technical skills and creative innovation.
Overview of Topics
- Overview of digital fabrication and maker-centered learning
- Equipment safety, setup, and maintenance (laser cutter and 3D printers)
- 2D design for laser cutting (vector-based design software)
- 3D modeling for additive manufacturing (entry-level CAD tools)
- Materials and their properties (wood, acrylic, PLA filament, etc.)
- Iterative prototyping and troubleshooting
- Design thinking and the creative process
- Product presentation and exhibition preparation
Signature Activities
- Design and fabrication of an introductory laser-cut object (e.g., keychain, bookmark)
- Development of a functional 3D printed prototype (e.g., organizer, stand, or tool)
- Collaborative project integrating both laser-cut and 3D printed components
- Iterative redesign challenge informed by peer and teacher feedback
- Public presentation of a final product at the semester showcase
Skills Emphasized
- Digital literacy in 2D and 3D design platforms
- Safe and effective use of fabrication tools
- Creative and critical problem-solving
- Iteration, reflection, and continuous improvement
- Collaboration and teamwork in design projects
- Communication of design processes and outcomes
Technology 8
This one-semester course provides students with an opportunity to further their exploration of computer science. In earlier courses, the students were exposed to a number of coding concepts by working with block-based languages. In this course, the students work with the text-based language, Python Turtle Graphics. Students use a series of tutorials, example programs, quizzes, programming exercises, and challenge problems to get familiar with the syntax of the Python language. This includes variables, loops, and user input. The unit culminates with a Python Turtle Graphics project. Topics including online safety and digital citizenship are also discussed throughout the year.
Overview of Topics
- Algorithms
- Conditionals
- Variables
- Loops
- User Input
Signature Activities
- Python Turtle Graphics project
- Texts and Other Resource Materials
- CodeHS Python Turtle Graphics web-based platform
Upper School
The Upper School technology and computer science curriculum emphasizes the development of coding skills, critical thinking, and an understanding of the ethical and social implications of technology.
Students are introduced to foundational concepts in programming through courses like Introduction to Computer Science, where they learn coding languages such as Scratch and Python, and explore issues related to diversity and the moral dimensions of technology. Building on these skills, Software Engineering and Introduction to Data Science takes students deeper into Python programming, data science, and visual programming with Processing, while also honing their ability to write efficient, elegant code. The curriculum culminates in AP Computer Science A, which follows a rigorous college-level syllabus, introducing students to Java and advanced programming concepts such as object-oriented design, recursion, and arrays. Throughout the courses, students not only strengthen their technical abilities but also engage in ongoing reflections about current trends in computer science, including artificial intelligence, ethical computing and gender issues, preparing them to be both skilled coders and thoughtful creators in an increasingly digital world.
The Upper School technology and computer science curriculum offers several signature experiences that combine technical learning with creative and ethical considerations, preparing students not only to be skilled programmers but also thoughtful and responsible contributors to the technology field. These experiences include:
Project-Based Learning: Throughout courses like Introduction to Computer Science and Software Engineering and Introduction to Data Science, students engage in hands-on coding projects that allow them to apply programming concepts to real-world challenges. For example, creating a car rental program or working on data science projects provides a tangible application of coding skills and problem-solving.
Exploration of Data Science: Students dive into data science by learning how to collect, clean, analyze, and visualize data. In Introduction to Computer Science, they explore this field by working on small projects with real data sets, while in Software Engineering and Introduction to Data Science, they expand on this knowledge, further developing skills in data manipulation and visualization.
Creative Coding with Visual Programming: In courses like Software Engineering and Introduction to Data Science, after finishing their study of Python, students use Processing (a Java-based visual programming language) to create dynamic, creative projects that combine coding with artistic expression. This fosters both technical skills and creativity, allowing students to see the intersection of programming and visual design.
Advanced Programming and Algorithm Design: In AP Computer Science A, students tackle advanced programming concepts such as recursion, inheritance, and object-oriented design. The emphasis on writing efficient, modular code, and analyzing algorithms helps students refine their coding expertise in preparation for college-level work.
Ethical and Social Discussions: Across all courses, students reflect on the broader implications of technology, including issues of diversity, equity, and the ethical use of technology. Discussions surrounding underrepresentation in computer science, artificial intelligence, and the social impact of programming foster critical thinking and a sense of responsibility in future technologists.
Collaboration and Problem-Solving: Throughout the curriculum, students work collaboratively on coding projects, troubleshoot together, and present their work to peers. This helps them develop teamwork and communication skills, essential for success in both academic and professional environments.
To tackle complex technical problems, create innovative solutions, and navigate the ethical dimensions of technology in a rapidly evolving digital world, the essential skills emphasized in the Upper School technology and computer science curriculum include:
Coding and Programming: Mastery of multiple programming languages, including Scratch, Python, Java, and Processing, and the ability to write, test, and debug code.
Problem-Solving and Algorithmic Thinking: Developing the ability to break down complex problems, design algorithms, and implement efficient solutions.
Data Analysis and Visualization: Skills in collecting, cleaning, organizing, and analyzing data, as well as presenting findings through visual representations.
Software Development: Understanding software engineering principles, including writing modular, efficient, and maintainable code, and applying object-oriented design.
Critical Thinking and Reflection: Analyzing current issues in computer science, such as ethics, artificial intelligence, and diversity in tech, and considering the social implications of technology.
Collaboration and Communication: Working effectively in teams, discussing programming challenges, and presenting ideas and projects clearly through written code and verbal explanations.
Independent Learning: Developing self-reliance and time management skills by completing coding projects and assignments both in and outside of class.
- Introduction to Computer Science
- Software Engineering and Introduction to Data Science
- Advanced Placement Computer Science A
- Competitive Computing (Introduction to Robotics & Ethical Hacking)
Introduction to Computer Science
This course provides students exposure to current day computer science issues, along with a variety of programming concepts and tools, in an effort to excite students about learning how to code. This course is a project-based course coupled with opportunities for students to learn, reflect, and discuss current day issues surrounding computer programming, including issues relating to recent studies on underrepresented people in the field of computer science as well as understanding the ethical and moral implications of creating and using technology. The course starts with a brief overview of computational thinking and binary numbers. Then students work towards gaining a mastery of higher-level Scratch concepts. Completing coding projects with Scratch provides a way to learn a variety of computer programming concepts, such as conditional statements and looping, without being bogged down with the syntax required by other languages. Next, students begin the study of Python. This is often a student's first pure text language. Students learn about data types, input statements, conditional statements, and looping by using CodeHS, an interactive online learning platform. They will practice and demonstrate their understanding of the concepts by completing several programming projects. The year ends with exploring the growing field of data science. If time permits, students complete a small project looking at a data set of their choice and learn how to clean and organize their data as well as evaluate and visually represent this data. This course is a graduation requirement.
Software Engineering and Introduction to Data Science
In this course, students continue to develop their coding skills and reflect about current day computer science issues. While this course is predominantly filled with completing programming skill checks and projects, students in this course also take three to four assessments, one per term. The goal is to prepare students to take AP Computer Science A in a future academic year. The course begins with continuing our study of the programming language of Python. Students review knowledge of variables, conditionals, and loops by completing a complex coding project where they create a car rental program, followed by the study of functions and strings. Then students begin the study of Processing, a Java-based language. This pure-text language produces visual output, which provides the opportunity for endless creativity for students. The course covers many standard concepts common to most languages including variables, conditionals, loops, functions, objects, classes, and arrays. If time permits, students finish the year with a unit on data science, where students look at data collection, cleanup, transformation, analysis, and visualization. Throughout this course there is a greater emphasis on writing efficient and elegant code. In the previous course, students were simply asked that their code worked. To begin their development in recognizing better programming techniques, students take their code from their previous CSI projects and rework some of them to make them more efficient and reader-friendly. Students continue to spend some time on current issues surrounding AI and computer programming, specifically those relating to recent studies about girls, women, and computer science.
Prerequisite: Introduction to Computer Science
Advanced Placement Computer Science A
This course follows the College Board’s AP curriculum, which is described as “an introductory college-level computer science course. Students cultivate their understanding of coding through analyzing, writing, and testing code as they explore concepts like modularity, variables, and control structures.” The course builds off of students’ knowledge of Python and Processing and uses Java, an object-oriented programming language. While the course meets three to four class days per week, students are also responsible for spending time completing online learning and coding outside of class. Topics covered include: primitive types, using objects, boolean expressions and if statements, iteration, writing classes, arrays, arrayLists, 2D arrays, inheritance, and recursion. Students are expected to take the AP Computer Science A exam in May.
Open to students in Grades 11 & 12. Prerequisites: Software Engineering and Introduction to Data Science
Competitive Computing (Introduction to Robotics & Ethical Hacking)
Cybersecurity, AI, and robotics are fields in which computer scientists are in greatest demand. The Bureau of Labor Statistics is projecting significant job growth for information security analysts due to the increasing frequency of cyberattacks and the need to protect critical data and systems across businesses. Computer scientists in the field of robotics are crucial for developing the software and algorithms that power robots, making them a vital part of the design and operation of robotic systems; this demand is expected to continue growing with advancements in artificial intelligence and automation. Upper School is a critical time to expose students to these fields.
This course provides students an opportunity to deepen their understanding of and practice with the skills needed in the fields of cybersecurity and robotics. Students will have the opportunity to apply their coding skills to competitive environments. They will learn about ethical hacking and develop their techniques by completing a variety of CTF (Capture The Flag) challenges. Students work in groups to learn and practice strategies for solving these challenges. As they hone their skills, they will complete increasingly more difficult CTF challenges. Students will also explore the world of robotics with the goal of eventually competing in a First Robotics competition in future years. Initially, students will compete in hackathons and robotics competitions in class against each other. Other possible sources of competition would be hackathons hosted by schools, colleges and organizations as well as the Zero Robotics high school tournament once it resumes. This course allows students the chance to continue their study of CS even if they do not have room to take on the challenge of AP Computer Science A or if they would like to continue their work in computer science after taking AP CS A.
Open to students in Grades 10-12. Prerequisite: Software Engineering and Introduction to Data Science