Upper School Computer Science

Department:  Upper School

The Computer Science Department provides students with knowledge of basic computer hardware, software applications, on-line resources and programming languages. Students' knowledge will be sufficiently deep to affect the ways in which they collect, organize, manipulate and ultimately understand information.

Computer Science: Introduction to Java
The primary aim of this course is to give students a meaningful, substantial programming experience. The material covered in this course is the same as that covered in the first term of AP Computer Science A. Students learn Java syntax, develop algorithms, and learn the major concepts of program design in an object-oriented environment. They also explore issues and events from the broader world of technology. There is no prerequisite for this course.

Computer Science: AP Computer Science A
This course teaches concepts and principles of computer science with emphasis on object-oriented programming. The course uses the Java programming language. Students enrolled in this class should take the AP Computer Science A Exam in the spring.  There is no prerequisite for this course but prior programming experience with an object-oriented language is desirable.

Computer Science: HTML
This course will teach fundamentals of web page creation using Hyper-text Markup Language (HTML) and Cascading Style Sheets (CSS). We will create our pages the "old-fashioned way" using an html-oriented development environment (Brackets from Adobe) to create the html and css files. We will start from the very beginning and move as far into HTML and HTML5 as time permits. No prior programming or HTML experience is required of students who register in this course.

Computer Science: Swift
Swift is Apple's language for creating apps for its mobile devices (iPhone or iPad). This course introduces students to the Swift language and also to Apple's protocols for vetting and accepting apps for sale in the Apple App Store. Students who enroll in this course should have had substantial programming experience with a modern language such as Python or Java.

Computer Science: Unity
Unity is a game development platform that offers great power and flexibility. Students in this course will learn to create game objects that exist in "three-dimensional space." Working with a 3-D graphics editor is also essential in creating Unity games. This course is offered as student interest warrants. It is one to three terms in length, depending on students' interests and availability.

Computer Science: Python
This course is an introduction to object-oriented programming using the Python programming language. It is similar in scope to the first term of the AP Computer Science A course. No prior programming experience is required.

Computer Science: Lisp
Lisp is, historically, an important programming language. It's unique syntax and structure allow students to explore programming concepts in a way that differs significantly from other modern languages such as Python or Java. This course is offered occasionally as students' interest demands.

Computer Science: Arduino​
The Arduino is an open-source electronics platform built on easy-to-use hardware and software. The Arduino is able to read inputs from a wide variety of devices such as a button, an ultrasound distance sensor, and or a joystick. It also sends outputs to devices such as a motor, a speaker or an LED array. Using a version of the C programming language, students program the electronic devices they create. This course is excellent preparation for the Upper School robotics program. It is an introductory course and has no prerequisites.

Computer Science: Hacking
This course is new to the Computer Science curriculum, offered for the first time in Winter Term 2017. The curriculum for the course covers a wide variety of topics including cryptography, computer networks, and programming. The course is offered in the best tradition of hacking which promotes a deep understanding of computer operation and an ability to solve problems across a wide variety of topics. Prior programming experience is desirable.