Computer Science

computer science class faculty

Electives

Computer Science I: Programming

This class focuses on designing and writing computer programs. No prior experience with computer programming is assumed. Students are taught to analyze a problem, describe a solution, and implement their solution in a computer-programming language. Currently, the class uses the Python programming language. Students use functions and classes to organize their programs. Programming projects include graphics (2-D and 3-D) in addition to data processing. Throughout the course, the emphasis is on the careful, elegant design of a computer program. Before taking the course, students are expected to be comfortable using a computer and to be familiar with variables from algebra. This course is open to all Upper School Students. (Full year course)

Honors Computer Science II: Data Structures

The advanced course is similar in content to a first-year college-level computer science course. The focus is on data structures and algorithms: how to organize and manipulate information using a computer. Students implement and analyze alternative methods for structuring data, including arrays, linked lists, and binary trees. A variety of alternative algorithms for searching and sorting data are covered, including binary search, hash tables, mergesort, and quicksort. Students are taught standard notation for categorizing the expected efficiency of an algorithm. Object-oriented programming is stressed, and students are responsible for writing programs with multiple well-designed classes. The programming language Java is taught and used for all assignments. Students have the option of taking the Advanced Placement Computer Science Exam in May. Prerequisite: CSI or Consent of Instructor. Please note: Global Online Academy CSI classes are not the equivalent of our year-long CSI course and do not fulfill the prerequisite. (Full year course, Honors)

Honors Computer Science III: Advanced Topics

The Advanced Topics course exposes students to several of the subfields of computer science that a student would encounter as a college major in the field. Assignments are more open-ended and require a greater degree of initiative from the students. The topics covered vary somewhat from year to year, in response to student and teacher interest. Examples of typical topics include digital-logic circuits (including basic logic gates, designing combinatorial and sequential circuits, and basic computer architecture), three-dimensional computer graphics (including mathematical fundamentals, transformations, perspective, and rendering techniques), networking (TCP/IP concepts and socket programming), and artificial intelligence (philosophy, logic, search, heuristics, and neural networks). Student projects include designing and building a simple programmable computer on breadboards and implementing a 3-D renderer without using a 3-D library. Prerequisite: Honors Computer Science II: Data Structures or Consent of Instructor. This course can be taken more than once for credit. (Full year course, Honors)

Honors Computer Science Independent Research

In this independent study, students develop year-long projects focusing on topics of interest. Prerequisite: Consent of Instructor. This course can be taken more than once for credit. (Full year course, Honors)

Computer Science Teaching Assistant

Teaching assistants are vital contributors to our classes. TAs attend class each day, help students with practice problems and resolve homework difficulties, answer questions, and grade homework. In addition, they run review and extra-help sessions. As the year progresses, TAs plan and teach full lessons. Prerequisite: CSI and Consent of Instructor.

Global Online Academy (GOA)

CS I: Computational Thinking

This Computational Thinking Course focuses on solving problems, designing systems, and understanding human behavior. It has applications not only in computer science, but also a myriad other fields of study. This introductory level course centers on thinking like a computer scientist, especially when it comes to understanding how computer scientists define and solve problems. Prerequisite: While this course would be beneficial for any student without formal training as a programmer or computer scientist, it is intended for those with no programming experience. (Fall or spring semester)

CS II: Analyzing Data with Python

In this course, students utilize the Python programming language to read, analyze, and visualize data. The course emphasizes using real world datasets, which are often large, messy, and inconsistent. Because of the powerful data structures and clear syntax of Python, it is one of the most widely used programming languages in scientific computing. Students explore the multitude of practical applications of Python in fields like biology, engineering, and statistics. Prerequisite: Completion of Computer Science I: Computational Thinking or its equivalent. (Spring semester)

CS II: Game Design & Development

In this course, students design and develop games through hands-on practice. Comprised of a series of “game jams,” the course asks students to solve problems and create content, developing the design and technical skills necessary to build their own games. The first month of the course is dedicated to understanding game design through game designer Jesse Schell’s “lenses”: different ways of looking at the same problem and answering questions that provide direction and refinement of a game’s theme and structure. During this time, students also learn how to use Unity, the professional game development tool they use throughout the class. They become familiar with the methodologies of constructing a game using such assets as graphics, sounds, and effects, and controlling events and behavior within the game using the C# programming language. Throughout the remainder of the course, students will work in teams to brainstorm and develop new games in response to a theme or challenge. Students will develop their skills in communication, project- and time- management, and creative problem-solving while focusing on different aspects of asset creation, design, and coding. Prerequisite: Computer Science I: Computational Thinking or its equivalent. (Spring semester)

CS II: Java

This high school Java training course teaches students how to write programs in the Java programming language. Java is the backbone of many web applications, especially eCommerce and government sites. It is also the foundational code of the Android operating system and many tools of the financial sector. Students learn the major syntactical elements of the Java language though object-oriented design. The emphasis in the course will be on creating intelligent systems though the fundamentals of Computer Science. Students will use Java basic programs to write working programs through short lab assignments and more extended projects that incorporate graphics and animation. Prerequisite: Computer Science I: Computational Thinking or its equivalent. (Spring semester)

iOS APP Design

Learn how to design and build apps for the iPhone and iPad and prepare to publish them in the App Store. Students will work much like a small startup: collaborating as a team, sharing designs, and learning to communicate with each other throughout the course. Students will learn the valuable skills of creativity, collaboration, and communication as they create something amazing, challenging, and worthwhile. Coding experience is NOT required and does not play a significant role in this course. Prerequisite: For this course, it is required that students have access to a computer running the most current Mac or Windows operating system. An iOS device that can run apps (iPod Touch, iPhone, or iPad) is also highly recommended. (Fall or spring semester)