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) and data visualization. Throughout the course, the emphasis is on creating programs that function using the concepts learned with a goal of producing elegant and thoughtfully designed code. This course is open to all Upper School students.
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 Exam in May. Students who intend to meet this prerequisite through the Global Online Academy should consult with the department chair before enrolling in the GOA class and expect to take a GOA Computer Science II level class.
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 interests. Examples of typical topics include artificial intelligence (machine learning, game playing, automated reasoning), public key cryptography, digital logic circuits, computer networking, and 3-D computer graphics. Student projects might include implementing a neural network for image classification, designing, and building a simple programmable computer on breadboards, or a program that can play two-player games.
Honors Computer Science Independent Research
In this class, students develop yearlong independent projects focusing on topics of individual interest. Students are expected to exercise considerable initiative and resourcefulness as they plan and execute a long-term project. Students will give regular presentations to their classmates on describing their work. Prerequisite: Consent of instructor. This course can be taken more than once for credit.
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 can run review and extra-help sessions. As the semester progresses, TAs may plan and teach full lessons.