Computer Science
In Computer Science students learn the fundamental skill sets and languages necessary to design or write computer programs. All elective computer science classes are a yearlong.
The advanced computer science classes can be taken for credit more than once, and students who complete Honors Computer Science II have the option of taking the Advanced Placement Computer Science Exam in May.
See Classes
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
This 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 A 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 might 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, and answer questions. In addition, they run review and extra-help sessions. As the semester progresses, TAs plan and teach full lessons. Prerequisite: Consent of Instructor. This course is graded Pass / No Pass. (Fall- or Spring- semester course)
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 course)
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 course)
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 course)
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 course)
Cybersecurity
This course explores the fundamentals of and vulnerabilities in the design of computers, networks, and the internet. (Fall- or spring-semester course)
Data Visualization
This course trains students to collect, organize, interpret, and communicate massive amounts of information. (Fall-semester course)
Intro to Artificial Intelligence
Aspects of artificial intelligence permeate our lives and the algorithms power your favorite apps. How much do you really know about how AI works or how it is changing the world around us? This course will explore the history of research into artificial general intelligence and the subsequent focus on the subfields of narrow AI: Neural networks, Machine Learning and Expert Systems, Deep Learning, Natural Language Processing, and Machine Vision and Facial Recognition. Students will learn how AI training datasets cause bias and focus on the ethics and principles of responsible AI: fairness, transparency and explainability, human-centeredness, and privacy and security. (Spring-semester course)
Intro to Block Chain & Cryptocurrency
Much attention has been brought to the cryptocurrency space by the meteoric rise in the valuation of Bitcoin and other cryptocurrencies. More recently, meme tokens have also grabbed the spotlight. When thinking about cryptocurrency, there is much more to consider than just market capitalization or coins named after canines. Introduction to Blockchain & Cryptocurrency is an entry level course for anyone excited by the space. This course explores how we arrived at the place we are now, and what the current and possible applications of crypto are. We’ll explore how markets in crypto operate, where they’ve received practical application, and where the space may head in the future through the lenses of creators, consumers, and governments. In addition, we will take a deeper look at blockchain, the underlying technology that powers cryptocurrencies, and it’s many, far-reaching implications for the future of government, business, the arts and more.
Each lens represents a different way to view the complex and interrelated causes and outcomes of the changing crypto landscape. Using a variety of technologies and activities, students work individually and with peers to evaluate each lens. Students then analyze and explore how these technologies may shape and disrupt the future not only of the crypto space, but of many current and future industries. (Spring-semester course)
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. (Spring-semester course)