All topics

Loading full-text search…

1.02 Variables and Data Types

Declare and initialize variables with Java's primitive types, and pick the right type so values like averages keep their decimals.

1.03 Expressions and Output

Print with print, println, and printf, use escape sequences, and predict results using operator precedence and integer division.

1.04 Assignment Statements and Input

Tell the assignment operator = apart from ==, trace how assignment statements change variables, and read keyboard input with Scanner.

1.05 Casting and Range of Variables

Convert between int and double with casts, predict integer division and truncation, round with (int)(x + 0.5), and recognize integer overflow.

1.06 Compound Assignment Operators

Use +=, -=, *=, /=, and %= to update a variable in place, use x++ and x-- as statements, and trace the value after each step.

1.08 Documentation with Comments

Write //, /* */, and Javadoc comments, state a method's preconditions and postconditions, and decide when code needs documentation.

1.09 Method Signatures

Identify return types, method names, and parameters from method signatures to understand what a method does and what it needs.

1.11 Math Class

Use Math.abs(), Math.pow(), Math.sqrt(), and Math.random() for calculations.

1.12 Classes & Objects

Understand that objects are instances of classes with data and methods.

1.13 Object Creation and Storage (Instantiation)

Create objects with new and constructors, store their references in variables, and predict what happens when two variables or a method share the same object.

1.14 Calling Instance Methods

Call instance methods on objects with the dot operator, use the values non-void methods return, and predict when a call fails to compile or throws a NullPointerException.

1.15 String Manipulation

Create strings, concatenate them, and use length(), substring(), indexOf(), equals(), and compareTo(), remembering that String methods never change the original.

2.02 Boolean Expressions

Write yes or no questions in Java with the relational operators ==, !=, <, >, <=, and >=.

2.03 if Statements

Make one way and two way decisions with if and if-else, and see exactly which lines run.

2.04 Nested `if` Statements

Chain decisions with else if and put an if inside another if to handle three or more cases.

2.05 Compound Boolean Expressions

Combine conditions with &&, ||, and !, follow the precedence rules, and use short circuit evaluation safely.

2.06 Comparing Boolean Expressions

Prove two Boolean expressions are equivalent with truth tables and De Morgan's Laws, and compare objects correctly.

2.07 while Loops

Repeat code while a condition is true, trace loop control variables, and avoid infinite and off by one loops.

2.08 for Loops

Use the three part for loop header, convert between for and while, and count iterations exactly.

2.11 Nested Iteration

Put a loop inside a loop to build grids and patterns, and count exactly how many times the inner body runs.

2.12 Informal Run-Time Analysis

Count statement executions from loop headers, multiply nested counts, and compare which version of a loop does less work.

3.01 Abstraction and Program Design

Use data and procedural abstraction and break big behaviors into smaller methods to keep programs simple.

3.01 Variables and Assignments

Model a UESL game maker with variables, types and assignments in Python and College Board pseudocode.

3.02 Data Abstractions

Model a UESL game maker with lists, indices and data abstraction in Python and College Board pseudocode.

3.02 Impact of Program Design

Design reliable programs that guard against bad input, and weigh their social, ethical, and intellectual property impacts.

3.03 Anatomy of a Class

Break a class into instance variables, constructors, and methods, and choose public or private access for each.

3.03 Math Expressions

Store values in variables and calculate with Python's arithmetic operators, then answer AP CSP style questions about math expressions.

3.04 Constructors

Learn what Java constructors are, why they exist, and how to write one to initialize objects.

3.04 Strings

An in-depth, three-cycle lesson on Python strings — indexing, slicing, methods, and formatting — framed as a signal-interception mission.

3.05 Boolean Expressions

Learn, trace, and apply Boolean expressions in Python through SFI backend validation.

3.05 Method Writing

Read method headers, write void and returning methods, and call them to check their results.

3.06 Conditionals

Build a condition out of a comparison, give every condition both answers, and order an elif chain so no branch is unreachable.

3.07 Class Variables and Methods

Tell instance variables from static class variables, share one value across all objects, write class methods, and make constants with final.

3.07 Nested Conditionals

Learn nested conditionals through student accounts, homework, meals, and sports.

3.08 Iterations

Use Python for loops, while loops, continue, and break to process repeated data.

3.08 Scope and Access

Know where a variable is visible, spot a shadowed instance variable, and use private fields with public accessors and mutators.

3.09 Developing Algorithms

Compare, trace, and build algorithms in Python and College Board pseudocode, using problems from our capstone nonprofit, Safe Passage Heals.

3.09 this Keyword

Use this to refer to the current object, fix parameter shadowing in constructors, call other instance methods, and see why static methods cannot use this.

3.10 Lists

Store data in Python lists, then sum, average, count, and filter it, comparing each pattern with AP CSP pseudocode.

3.12 Calling Procedures

Call procedures with arguments that fill their parameters, and break a program into smaller helper procedures through decomposition.

3.13 Developing Procedures

Write procedures that each do one task, give them clear names, and compare the same procedure as a Python function and a Java method.

3.14 Libraries

Learn how to import and use Python libraries (modules).

3.15 Random Values

Generate, trace, and apply random values in JavaScript through SFI backend QA testing.

3.17 Algorithmic Efficiency

Compare ways to find books and see how algorithmic work grows with a library catalog.

4.01 Data Collection

Explore how data is collected, evaluate ethical tradeoffs, and consider privacy, consent, bias, and responsible data use.

4.03 Array Creation and Access

Create one-dimensional arrays, initialize values, access elements by index, and avoid invalid array positions.

4.04 Array Traversals

Learn to traverse arrays with for, while, and enhanced for loops while avoiding off-by-one bounds errors.

4.06 Using Text Files

Read and process text files with Java, handle lines of input, and close file resources safely.

4.07 Wrapper Classes

Use wrapper classes to convert between primitive values and objects, parse data, and work with useful constants and methods.

4.08 ArrayList Methods

Use ArrayList methods to add, remove, replace, access, and measure elements in a resizable collection.

4.09 Transversing ArrayLists

Traverse ArrayLists with index-based and enhanced for loops while safely accessing and updating collection elements.

4.13 Implementing 2D Algorithms

Implement 2D array algorithms — traverse a grid in row-major order, search for a value and its location, accumulate sums/counts/averages, and track a running maximum while walking the array.

4.14 Linear Search Algorithms

Implement linear search algorithms on arrays and ArrayLists — return the index of a match, search by condition instead of equality, respect a partially-filled array's true size, and reason about best/worst case.

4.15 Sorting Algorithms

Trace and implement sorting algorithms that arrange array values into ascending or descending order.

4.16 Recursion

Learn recursion through a mission countdown, call-stack tracing, factorial fuel calculations, and launch-code checksums.

4.17 Recursive Searching and Sorting

Apply recursion to searching and sorting problems by defining base cases, smaller subproblems, and results that combine while unwinding.

Abstract Collectables & Dynamic Registries

Extending abstract base classes and the Comparable interface to build dynamic registries, multi-field ordering, and data-driven student survey profiles.

Account Creation

Learn how to create and manage course-required accounts, including a Portfolio Website, GitHub, Slack, and LinkedIn, while protecting your Personal Identifiable Information (PII).

Account Creation

Learn how to create and manage course-required accounts, including a Portfolio Website, GitHub, Slack, and LinkedIn, while protecting your Personal Identifiable Information (PII).

Agile Methodologies Practitioner

Working with Teams and practicing Scrum Agile Metodlogies in a classroom environment.

Agile Teams

Establishing Scrum Teams and programming habits in the classroom.

Anatomy of a Spring Boot Project

Find your way around a Spring Boot project, from where entities, repositories, controllers, and security settings live to how Main.java starts the app.

Anatomy of GitHub Pages

Learn the Files and development work flow of GitHub Pages. This includes working with you home page, theme, markdown, and more.

Anatomy of Python Flask

Get a Flask backend running locally by learning its key files, starting the server, testing it from the terminal, and reading and adding data from JavaScript. includes preparing a project for deployment.

API Controller

A short reference for Spring REST controllers and API endpoints.

Arrays

Learn about arrays in JavaScript, including how to create, access, and manipulate them.

Awareness

First line of defense from foreign invaders

Backend UI

Build admin pages for a Flask app with Jinja2 templates and Bootstrap, starting from a shared base template and a table of users.

Bias Detector

Second line of defense from foregin invaders

Bias Sort

Final line of defense from foregin invaders

Big Six — Interactive World

An interactive game world covering all six Big Six lessons with NPC interactions and quizzes.

Classes and Methods

Build a game character with a JavaScript class by writing a constructor, properties, and your own methods, and use built-in methods like push.

Collectables Assignment - OCS Mentor Dashboard

Collect mentor records from a database into AbstractCollectable classes, then use a Registry to find which capstones still need mentors. Created by CSA Admin - Shayan, Jim, Lucas, Jacob, Harrish, Arnav, Rudra, and Dhyan.

Collectables Homework - AP Aligned Practice

Homework for Abstract Collectables built from past AP CSA free-response patterns, covering ArrayList removal, averaging, sorting, pairing, class design, and Registry analytics.

Conditionals

Practice simple JavaScript conditionals with players and coins.

Cookie Clicker Lesson

Choose what you want to learn about the workings of the Cookie Clicker game - how the local storage works, the OOP strucutre, or collaborative programming with your team.

Crash Course into Python Flask

Install dependencies and create a Python Flask server, explore it from the Linux terminal, then fetch and add data to it from JavaScript. includes preparing a project for deployment and interaction with a frontend.

Crash Course on Building a Flask Server

Turn a frontend demo into a full-stack app with a live Flask backend that saves data, handles user login, and shows dynamic content. backend and full stack application.

D292 Task 4: Test Plan for an E-Learning Solution

Plagiarism lesson. Students will develop a comprehensive test plan to evaluate the effectiveness and usability of their e-learning solution, ensuring it meets learning objectives and user needs.

Data Abstraction!

Hide complexity behind functions, objects, and classes so the rest of a program can use data without knowing how it is stored.

Deploy on AWS

This notebook will guide you step-by-step on how to configure your AWS instance and run Docker container in order to deploy your backend.

Easy API - Jokes

Read a small Flask API, send REST Client requests, and follow its file-backed data calls.

Flask, REST Client, and Backend UIs

Learn how Flask routes turn Python into API endpoints, test them with the VS Code REST Client, and see how backend UIs let people manage data.

Friends of the Poway Library 2026–27

CSP 2026–27 capstone continuing the Friends of the Poway Library prototype with a searchable bookstore catalog, events, newsletters, volunteer and donation pathways, community history, and library-themed games.

Frontend UI

A short reference for connecting a frontend to Spring Boot.

Functions

Write and call JavaScript functions, see how scope decides which variables a function can reach, compare global and local variables, and try recursion.

GitHub

This guide will assists as we work through the class together — this is not comprehensive as we will evolve on GitHub collaboration together!

GitHub Pages

This page will teach you how to set up GitHub Pages using the VSCode online editor.

GitHub Pages Hacks

Objective is to be able to work fully with Notebooks, Submenus, and Anatomy to create your own personal interest blog.

Hints

Submodule 2 of Hints Mini-Quest

Hints

Submodule 2 of Hints Mini-Quest

HTML, CSS, and JS Kernels

This page will teach you how to use HTML, CSS, and JavaScript kernels in Jupyter Notebooks.

Introduction Java Spring Framework

See how Spring turns a Java data object into a web app through an entity, a JPA repository, a controller, and endpoints a UI can call.

Iterations

An intro to iterations using Code Runner

Java Kernel

This page will teach you how to set up your Java kernel in Jupyter Notebooks.

Java Spring Hacks - Sprint 1 Final

Full-stack project using Spring Boot API, JPA, and POJO backed by your OCS system ideation. Individual project, team integration.

Jekyll Themes - Deep Dive

Builds upon the first lesson of Jekyll Themes to ensure understanding, and has questions to test your knowledge,. Jekyll Themes willbe crucial, so it is important to understand it.

JSON and Javascript Objects

Build JavaScript objects, read and change them with dot and bracket notation, and convert them to and from JSON with JSON.stringify and JSON.parse.

Learning Habits

Establishing pair/trio learning habits in the classroom. This will extend to other forms of collaboration, such as group work and team projects.

Lesson Planning

Review this outline as a guide to assist in planning and teaching JavaScript lessons.

Live Review (Pair/Trio/Group)

Anytime during a Sprint is an opportunity to showcase accomplishments to the teacher. Each week there is a formative Checkpoint meeting, the last week of the Sprint includes a summative live review meeting.

Los Angeles

Submodule 2 of Backend Development Mini-Quest

Mathematical Expressions in JavaScript

Read, write, and evaluate JavaScript mathematical expressions with operators, variables, precedence, and comparisons. Created By Adeeb, Rithvik, Ahmad, and Joseph.

MCQ1 - Unit 1 Quiz

Check Unit 1 basics with questions on valid variable names, integer division, primitive and reference types, each paired with a short coding hack.

Media Literacy Vault

Enter the vault code with numbers gathered through the mission to get your Media Literacy certificate

Microblog API

Read authenticated microblog handlers, filtering, validation, permissions, and their model calls.

Nested Conditionals

Put if statements inside other if statements to make decisions that depend on more than one condition.

Object Literals

Learn about Object Literals and how they can be used in games.

OCS Assignments System

Students are making OCS grading faster and more reliable. The work includes AI grading with a key each user supplies, out of 1 point per assignment, student grades that sit alongside AI grades instead of overwriting them, and admin tools to correct bad submission records. Other pieces are lessons standardized through CRUD operations, data collection for a reworked self-assessment, and teacher and grader screens on the Pages frontend so teachers never need to use the Spring admin views.

OCS Grid Grammar

Lay out lab data with the OCS grid grammar so it is responsive and theme aware, without writing any CSS.

OCS SASS Containers Grammar

Structure a page with the OCS container, cards, grids, and tables so content lines up and adapts to the screen without writing CSS.

Oncology and Kids

Capstone project creating an interactive and educational website for cancer patients and families, with community support, learning modules, and games.

Operating System and Tools Setup

Significant setup is required for development tools to support the Operating System, JavaScript, Python, Java, Jupyter Notebooks, and more. This is the first step in the development process.

Plagiarism TDD plan and ceremony (Sample)

In the Plagiarism Prevention Quest we will use Test-Driven Development (TDD) and enable a Feedback Plan, Ceremony to introduce a "Quest sytle" project. Student will have similar Test ceremony at N@tM for their projects.

Poway Veterans Organization 2026–27

CSP 2026–27 capstone continuing the Poway Veterans Organization redesign with guided assistance, volunteer onboarding, an AI support chatbot, and accessibility-first improvements for veterans and community members.

Python Kernels

This page will teach you how to use Python kernels in Jupyter Notebooks.

San Diego

Stop 1: San Diego — “Connecting to the Data Field”

San Francisco

Submodule 3 of Backend Development Mini-Quest

SASS Buttons Grammar

Explore the Open Coding Society button grammar through living examples.

SASS Inputs

Learn the OCS SASS input grammar and refactor hardcoded input styles into reusable classes.

SASS Toggles

Build on and off switches from the OCS toggle classes, make them do something with JavaScript, and customize their colors.

Seattle

City Four of Food - Seattle

Seattle

Submodule 4 of Backend Development Mini-Quest

Setting up utterances

Learn how to set up utterances for your blog. Utterances is a tool that allows you to have comments on your blog posts.

SFI Foundation 2026–27

The SFI Foundation writes and administers safety specifications for racing equipment. This CSP 2026–27 capstone makes those standards easier to search, understand, and track.

Spline Barriers

Learn how spline barriers use control points to create smooth game boundaries.

Submodule 1

Key 1 of AI Usage Mini-Quest about AI functionality

Submodule 2

Submodule 2 of AI Usage Mini-Quest

Submodule 3

Submodule 3 of AI Usage Mini-Quest about Prompt Engineering

Submodule 4

Submodule 4 of AI Usage Mini-Quest

Submodule 4

Submodule 4 of AI Usage Mini-Quest of Generating the Itinerary

Threat Modeling

A brief introduction to threat modeling PII.

Tools and Equipment Setup

Tech has reshaped our lives, from the internet to the smartphone in your pocket, or the advent of AI. This course is opening new technology possibilities by equipping you with the developer tools that are the keys to boundless technology possibilities.

Tools and Equipment Setup

Tech has reshaped our lives, from the internet to the smartphone in your pocket, or the advent of AI. This course is opening new technology possibilities by equipping you with the developer tools that are the keys to boundless technology possibilities.

Tools and Equipment Setup

Tech has reshaped our lives, from the internet to the smartphone in your pocket, or the advent of AI. This course is opening new technology possibilities by equipping you with the developer tools that are the keys to boundless technology possibilities.

Tools and Equipment Setup

Tech has reshaped our lives, from the internet to the smartphone in your pocket, or the advent of AI. This course is opening new technology possibilities by equipping you with the developer tools that are the keys to boundless technology possibilities.

Truth Scanner

Third line of defense from foregin invaders

Unit 2 FRQ Practice

Write AP style methods that use selection and iteration, check them against built in tests, and learn what the FRQ rubric rewards.

Unit 2 Quiz

Sixteen multiple choice questions covering Boolean expressions, selection, iteration, String algorithms, nested loops, and run-time analysis, plus two coding challenges.

Unit 3 Quiz

Test your Unit 3 knowledge of class design, constructors, methods, object references, and scope.

User API

Trace authentication, user requests, validation, and calls from Flask handlers into the user model.

Variables

Store data with let and const, work with numbers, strings, booleans, arrays, and objects, and use variables to change a page through the HTML DOM.

VSCode Setup

A key to learning in this class is understanding how to make a GitHub Pages project. This guide will setup and run the project. At the end, you will have a portfolio Website that can be used for blogging classroom learnings and progress.

Work Submission & Grading System

An AI-graded pipeline (Gemini API) for MC, FRQ, and GitHub Issue submissions, storing every score and feedback the way the existing game-submission spreadsheet does today, in a database admins can browse.