Computer Programming Electives

As a classical school, we teach foundations, not fads.

Consequently, our Upper School students can learn Unix and the command line —  technologies that have stood the test of time and give a deep understanding of what underlies today’s complex computer systems.

Students must be in Algebra 2 or above to take these elective classes which are offered on a rotating schedule that varies by school year.

Introduction to Functional Programming

Originally, computers were just that: machines that assisted us in computation. This course will introduce students to the idea that computers are powerful mathematical tools. In particular we will examine the idea that good, true, and beautiful ideas can be represented in a precise and formal way. We will take as our starting point Ableson and Sussman’s idea that computer programs are written primarily for human beings to read, and only incidentally for computers to execute. With that in mind, we will read and write many computer programs representing important mathematical calculations encountered in high school and beyond.

Data Structures and Algorithms

Indirection and abstraction are two of the most important mathematical ideas of the twentieth century. This course will introduce students to the fundamental rigor of the C programming language, which has stood the test of time. Focusing on analytical precision, this course will encourage in students the virtues of patience and diligence as they come to understand the inner workings of a modern computing system.

Control Systems

Computer programs can interact with and control physical systems. This course introduces students to different types of control system and affords them the opportunity to build physical systems controlled by programmatic logic. Progressing from systems with simple finite state machines to systems with multiple PID loops, the course is a gradual progression. While developing their programming skills, students will also have the opportunity to experiment with electrical engineering, designing and testing circuits to give life to their programs. The course includes both significant breadboard work and an introduction to custom PCB design and fabrication.

Leave a Comment