Upper School Curriculum

Select a Department

Computer Science

Programming electives are open to all students, with the exception of Exploring Computer Science, which is a requirement for 9th-grade students. Courses are subject to change and variation.
  • Exploring Computer Science

    Grade 9 Students are introduced to Computer Science through an exploration of relevant topics. In addition to familiarizing them with JavaScript and Scratch programming, this course covers the broader conceptual ideas of computer technology, media literacy, and how this technology affects our everyday lives. The first-ever personal computer was introduced in 1975 and the Internet wasn’t widely used until the 1990s. The history of computers as the everyday consumer knows is one that spans fewer than 50 years, yet 3.5 billion people around the world (44 percent of the entire population!) now have smartphones. The ubiquitous and rapidly evolving nature of computer technology makes this course an urgent, foundational element of the 9th-grade curriculum.
  • Programming Fundamentals Part 1

    Ninth graders who choose Programming Fundamentals are not enrolled in Exploring Computer Science. This course, offered in Grades 9 through 12, focuses on the study of programming techniques using the Java language. Topics covered include numeric, character, string, and logical data types, simple and complex operators, the structure and format of a Java program, issues of style and logic in computer programming, looping and branching, and use of classes and methods. Students are expected to complete a programming project of their own design at the end of each semester. This is part one of a two-semester course of study.
  • Programming Fundamentals Part 2

    This course, offered in Grades 9 through 12, continues the study of programming techniques using the Java language, building on concepts learned in Programming Fundamentals Part 1. Students apply their knowledge to programming projects in order to solve problems—both provided by the teacher and of their own creation. Students complete a programming project of their own design at the end of each semester.
  • Intermediate Computer Programming

    Prerequisites: Successful completion of both Programming Fundamentals 1 & 2.

    Building on the ideas and techniques learned in Programming Fundamentals, this course moves students deeper into the world of object-oriented programming, using the Python language. The class covers the concepts needed to design, analyze, code, debug, and maintain modern-day programs. Students are also introduced to advanced programming topics (such as cryptography, geocoding, video game design, data analysis, and digital image manipulation) and compound data structures (such as classes, strings, lists, tuples, and dictionaries). Most of the programming skills are learned by engaging in activities, and class time is primarily spent working on programming assignments. During the last part of the year, students work on a large project of their own creation as a further means of mastering the development process.
  • Advanced Programmer’s Workshop

    Prerequisites: Completion of Intermediate Computer Programming.

    The Advanced Programmer’s Workshop (APW) provides an opportunity for students to apply skills learned in previous years. APW members have freedom to choose projects in which they are interested, and are expected to explore topics, methods, languages, devices, and concepts that are new to them (and, perhaps, new to everyone in the class). In the beginning of the year APW members will collaborate on a GitHub website and explore JavaScript. As part of this mini project, APW students will include a description of their first semester project. (Collaborative projects are encouraged). Project ideas must be approved by the instructors. In addition to the term project, each APW member will choose a topic to teach to the rest of the class. The second semester requirements are similar to the first semester. Students choose another project (with approval, this can be a continuation of the first-term project) and another Teach Back. APW members present one of their projects at the year-end Programming Final. In addition to classwork, students are expected to work on developing projects on their own time.
  • Advanced Coding: Artificial Intelligence

    Prerequisites: Satisfactory completion of Intermediate Computer Programming and approval of the department.

    Artificial intelligence (AI) is the branch of computer science that uses computer programs to simulate human intelligence. The ultimate goal of AI is to make a computer that can learn, plan, and solve problems autonomously.

    Although AI has been a field for over half a century, we still cannot make a computer that is as intelligent as a human in all aspects. However, in some cases, the computer equipped with AI technology can seem more intelligent than us. An example of which many are familiar is the IBM Deep Blue system, which defeated the world chess champion.

    The main research topics in AI include problem solving, reasoning, planning, natural language understanding, computer vision, automatic programming, machine learning, and more. These topics are interrelated and impact one another. In this course, we study the fundamental knowledge for understanding AI. We introduce some basic search algorithms for problem solving; knowledge representation and reasoning; pattern recognition; fuzzy logic; and neural networks. We investigate applications of AI, including robotics. This course meets for the full year.
  • Advanced Computer Science - Digital Logic & Boolean Algebra

    This is a course for students who have completed both Programming Fundamentals and Intermediate Computer Programming.

    These are some of the questions we address: What’s under the cover of a computer? How does it work? Want to write really fast code? Why is it so complicated to make computers think like humans? Topics covered include the parts of a computer, how to use high-performance computing for computationally expensive activities such as AI, the binary number system, how to build simple digital circuits through hands-on experience, the relationship between digital circuits and logic (the laws of thought), understanding the basics of CPU architecture, and comparing computer architecture with the brain.
    Depending upon student interest, we may also cover one or more of the following topics: learning how to better control your computer; writing fast code in high-level languages with vectorization for data science and AI; writing fast code in low-level languages, writing even faster code using the graphics chip (GPU) on your computer; or making custom circuits from off-the-shelf parts (FPGA’s), which run even faster.
  • Advanced Social Computing

    This is a course for students who have completed both Programming Fundamentals and Intermediate Computer Programming. We take deep dives into selected topics of current importance. The course covers four–six topics that vary based on student interest and current trends. Examples of possible topics include cryptocurrency, artificial intelligence, social media platforms, and how the internet works. We investigate the technology that is behind each topic as well as the societal and ethical implications.

Faculty

  • Photo of Eric Lindow
    Eric Lindow
    Upper School Computer Science Teacher and Mathematics Teacher, Senior Technology Advisor
    (212) 426-3360
    Bio
  • Photo of Stanley Golanka
    Stanley Golanka
    Director of Academic and Infrastructure Technology
    Bio
  • Photo of Alyssa Gorelick
    Alyssa Gorelick
    Middle and Upper School Computer Science & Digital Design Teacher and Advisor
    (212) 426-3360
    Bio
  • Photo of Shruthy Lakshminarasimhan
    Shruthy Lakshminarasimhan
    Upper School Computer Science Teacher
    Bio