This course takes a deep-dive into object oriented programming, a modern programming paradigm for large-scale software design. Students will work on meaningful projects as they explore topics such as inheritance, classes, interfaces, and composition. Computation is ubiquitous, and as such, students will get a chance to work on an open-ended project in an interdisciplinary field of their choosing. Some projects in the past have included 2-D games and simulations, fractal and Mandelbrot-Set generators, melody and music creation, maze generation and solving, and mapping disease transmission on a world map. Students in this course will focus on learning object-oriented design principles, testing and debugging, and best coding practices. The language used in the course is Java, which is well known for being a platform-independent language that is highly portable from machine to machine. Expect spirited discussions as we compare and contrast Java with C++ and other languages. In the process, students will come away with a better understanding of programming language design and theory.
Course Number
OCS20
Level
High School
Semester
Year-long
Credit per Semester
5.00
Subject
Prerequisites
Completion of or enrollment in Precalculus with Trigonometry (OM013). A placement assessment will be required for students who have not previously taken Stanford OHS computer science courses.