Computer Science
Electives
Introduction to Computer Science
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 (2D and 3D) 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.
Advanced Computer Science (honors level)
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: Introduction to Computer Science.
Advanced Topics in Computer Science (honors level)
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 3D renderer without using a 3D library.
Online Electives
Computer Programming (Global Online Academy, Fall 2013 or Spring 2014)
This course teaches students how to write programs in the Java programming language. Students will develop problem solving and computational thinking skills framed by the questions: How do computers store information? How do they make intelligent decisions? How can they efficiently process large tasks? Students will learn the major syntactical elements of the Java language, objected oriented design and programming, several variants of the software development lifecycle, how to utilize a software development environment, and how to test and debug programs. The emphasis in the course will be on writing actual working programs through short lab assignments and more extended projects. No previous computer programming knowledge is necessary.
iOS App Development (Global Online Academy, Spring 2014)
Learn how to build apps for the iPod, iPhone, and iPad in Objective-C and publish them in the App Store. Students will work much like a small startup: collaborating as a team, sharing code, and learning to communicate with each other throughout the course. Individual projects will differ, but there is an emphasis on collaboration. When students finish this course, they will have had the experience of being integrally involved in a project team. Students will understand the fundamentals of object-oriented programming, which is transferable to any modern programming language. Students will learn the valuable skills of creativity, collaboration, and communication in the service of creating something incredibly cool, challenging, and worthwhile. Note: For this course, it is required that students have access to a computer running the most current version of Mac OS X. An iOS device that can run apps (iPod Touch, iPhone, or iPad) is also highly recommended.