Andrew Merrill describes the high school’s computer science offerings. Project work and experiential learning are emphasized, Advanced Placement examinations deemphasized.
1) A yearlong introduction to computer programming. I’m currently using Python as the language. The projects cover a wide range of topics, including a recommendation engine for movies, 2D and 3D graphics, the iterated prisoners dilemma, etc.
2) A yearlong advanced computer science course, which used to be comparable to the AB level AP class. I’m currently using Java, left over from AP days, but the focus of the class is on algorithms and data structures. Most of my students in the class used to take the AB level AP exam, but now that that isn’t offered any more, I’m not sure what they’ll do. I don’t see much point in the A level AP exam, other than as a college admission item (as distinct from a college preparation or placement item). That is, the exam might help students get into college, but I doubt it will be of much value when they get there.
3) A yearlong post-AP level class that varies in content and approach depending on student interest. Some years it is an advanced topics course, where student students explore and write programs in a series of more advanced comp sci topics (such as artificial intelligence, cryptography, 3D rendering, digital logic circuits, socket-based networking, threading, etc.). Other years it turns into an independent research class, where each student designs and carries out an independent project (such as writing a physics engine, writing a compiler, writing an operating system, writing a iOS apps, autonomous robot navigation, automatic music transcription, automatic parallelization, CUDA programming, etc.) The topics courses are intended as a sampler of the kind of work done in upper level college computer science courses, while the research class often results in science fair projects and occasionally publishable papers.