On this page:
Commonwealth School CS2
Introduction to Class-based Program Design
8.6

Commonwealth School CS2
Introduction to Class-based Program Design

2023-2024

Welcome to CS2! In CS1, you mastered the foundations of functional programming in the student languages provided by Dr. Racket.

This year, we will take those foundations and shift the paradigm by which we apply them. CS2 studies the class-based program design, which is ubiquitous in modern programming practices. We will also begin to lay the foundations for designing abstractions that support the creation and maintenance of reusable software and libraries.

CS2 covers the principles of object oriented program design, how code is evaluated in the context of objects, and begins to examine the relationship between algorithms and data structures. The class is intended for students who have taken or tested out of CS1, and as such assumes that students have either been introduced to the basic principles of program design and computation, or will be able to quickly intuit what few gaps may exist using prior knowledge.

Remember, when it comes to problem solving, even a few minutes spent upfront planning can save hours of tinkering down the road. To put it snazzily:

“Think first, experiment later.”

This course inherits much of its contents from Northeastern University’s Fundamentals of Computer Science II, with much credit belonging to professors Benjamin Lerner, Leena Razzaq, and Matthias Felleisen. The material presented is adapted to be suitable to Commonwealth’s class structure and students, and will also prepare students take the AP Computer Science A exam.

In the table of conents, you will find general course information, assignments, and documentation for the libraries we will use.