Skip to content

What does a student learn in ?

This is the year computer science shifts from following directions to building real software. Students design their own programs, break big problems into smaller parts, and work in teams using the same tools professional developers use. They also weigh the harder questions behind the code: who owns it, who it leaves out, and what happens to the data it collects. By spring, students can plan, write, test, and explain a working program they built with classmates.

Illustration of what students learn in High School Computer Science & Digital Fluency
  • Programming
  • Algorithms
  • Working with data
  • Internet and security
  • Ethics of technology
  • Teamwork with code
Source: California Content Standards for California Public Schools
Year at a glance
How the year usually goes. Every school and district set their own curriculum, so treat this as a guide, not official pacing.
  1. 1

    How computers and the internet work

    Students look under the hood of the devices they use every day. They learn how hardware, software, and networks fit together, and how data moves across the internet from one device to another.

  2. 2

    Writing real programs

    Students move past short snippets and write full programs that solve a problem. They learn to break a big task into smaller pieces, reuse code, and pick the right loop or list for the job.

  3. 3

    Working with data

    Students collect, organize, and chart real data. They build simple visualizations that help someone else see a pattern, and they think about how the same information can be stored in different ways.

  4. 4

    Privacy, security, and AI

    Students study how passwords, encryption, and basic security keep information safe, and how artificial intelligence already shapes apps they use. They weigh what companies collect and what that means for everyday users.

  5. 5

    Team project and code review

    Students build a finished project with a team, using shared tools the way real software teams do. They test their work, get feedback from users, and document the choices they made along the way.

  6. 6

    Computing and society

    Students step back and look at the bigger picture. They discuss who benefits from new technology, who gets left out, and how laws around copyright, privacy, and fairness shape what software can do.

Mastery Learning Standards
The required skills a student should display by the end of Grade 11.
Algorithms & Programming
Standard Definition Code

Combining algorithms to solve new problems

High School

Students break a complex coding problem into parts, then build a solution by writing new logic and reusing code that already works. They don't start from scratch every time.

CA-9-12.AP.12

Using lists instead of repeating variables

High School

Students learn to store and work with groups of related data (like a list of names or scores) instead of creating a separate variable for each one. This makes programs shorter, more flexible, and easier to update.

CA-9-12.AP.13

Choosing the right loop or conditional

High School

Students explain why they chose a loop or a conditional instead of another approach, weighing whether the code is easy to read, runs quickly, and solves the problem cleanly. The choice always involves tradeoffs.

CA-9-12.AP.14

Event-driven programming

High School

Students build a working program step by step, testing and improving it along the way. The program responds to real events, like a button click or a keypress, to trigger what happens next.

CA-9-12.AP.15

Breaking problems into smaller pieces

High School

Students break a big coding problem into smaller, manageable pieces, then write separate blocks of code to handle each piece. This mirrors how professional software is actually built.

CA-9-12.AP.16

Building programs with reusable parts

High School

Students break a program into smaller, reusable pieces, such as functions or procedures, so the code is easier to read, fix, and build on. Each piece handles one job.

CA-9-12.AP.17

Designing programs that work for everyone

High School

Students plan and revise programs with real input from the people who will actually use them, not just from the original designer's assumptions. Testing with a range of users shapes what the final program does and how it works.

CA-9-12.AP.18

Using code libraries with restrictions

High School

Students learn why borrowed code or software libraries come with rules about how you can use them. A license can limit what students build with that code, who can see it, or whether they can share it.

CA-9-12.AP.19

Testing and improving your program over time

High School

Students test a program they built, find what breaks or confuses users, and fix it. This cycle of testing and improving repeats until the program works better and more people can use it reliably.

CA-9-12.AP.20

Building software as a team

High School

Students work in teams to plan and build software projects, using shared tools like version control or collaborative editors to divide the work and keep everyone's changes in sync.

CA-9-12.AP.21

Documenting your design choices in code projects

High School

Students record their design choices as a program takes shape, using notes, diagrams, or walkthroughs that explain why the code works the way it does.

CA-9-12.AP.22

How AI controls software and machines

High School

Students explain how AI is built into everyday products, from spam filters that sort email to self-driving cars that read the road. The goal is to see AI as a set of programmed decisions, not a mystery.

CA-9-12S.AP.10

Build an AI that solves a simple problem

High School

Students write code that uses AI techniques, like training a model on sample data, to solve a straightforward problem. The focus is on understanding how the algorithm works, not just running a tool someone else built.

CA-9-12S.AP.11

Searching and sorting algorithms

High School

Students write code that searches through data to find a specific value and sorts lists into order. These are two of the most common building blocks in real software.

CA-9-12S.AP.12

Algorithm efficiency and trade-offs

High School

Students compare two or more ways to solve the same problem and decide which one does it faster or with less work. Think sorting a list of 1,000 names versus 1,000,000: the choice of method starts to matter a lot.

CA-9-12S.AP.13

Choosing the right data structure

High School

Students learn when to use a list, a table, or a key-value pair to store information, and why the choice matters. Picking the right structure makes a program faster and easier to update.

CA-9-12S.AP.14

How recursive algorithms run, step by step

High School

Students trace how a recursive function calls itself repeatedly, each time with a smaller version of the problem, until it hits a stopping condition and works its way back to a final answer.

CA-9-12S.AP.15

Breaking big problems into reusable parts

High School

Students break a big, messy problem into smaller pieces, then spot patterns those pieces share. Recognizing that pattern lets them write one reusable solution instead of solving the same thing over and over.

CA-9-12S.AP.16

Build solutions from your own reusable code

High School

Students break a complex problem into smaller, reusable pieces of code, like a custom function that handles one job, then combine those pieces into a working solution.

CA-9-12S.AP.17

Using libraries and APIs in code

High School

Students learn to use pre-built code libraries and APIs, collections of ready-made tools other programmers wrote, so they can solve bigger problems without building every piece from scratch.

CA-9-12S.AP.18

Planning software for real users

High School

Students plan, build, and test programs with a real-world development process, thinking about how different people will actually use what they make.

CA-9-12S.AP.19

Programs that run on multiple platforms

High School

Students write and test programs that run on more than one type of device or operating system, such as a phone, a browser, or a desktop computer.

CA-9-12S.AP.20

Finding and fixing security bugs

High School

Students find weak spots in a program where someone could break in, steal data, or crash the system, then fix the code to close those gaps.

CA-9-12S.AP.21

Testing your code before it ships

High School

Students write a set of test cases before or after coding to confirm the program does what it was designed to do. Each test feeds the program a specific input and checks whether the output matches what was expected.

CA-9-12S.AP.22

Changing code and seeing what breaks

High School

Students take a working program and add new features to it, then think through what those changes might break or improve elsewhere in the code.

CA-9-12S.AP.23

Reading code to catch problems

High School

Students read through a finished program and judge whether the code is clear, correct, and easy to maintain. This is the same process professional developers use before releasing software.

CA-9-12S.AP.24

Group coding tools: version control and IDEs

High School

Students learn to write code as part of a team, using shared tools that track every change, catch errors, and keep the whole group's work organized in one place.

CA-9-12S.AP.25

Choosing the right programming language for the job

High School

Students look at two or more programming languages side by side and explain why one fits a task better than another. Python might be the right pick for data analysis while another language suits building a phone app.

CA-9-12S.AP.26
Computing Systems
Standard Definition Code

How computers hide complexity from users

High School

Abstractions are the layers that hide how a computer actually works so users don't have to think about it. Students explain why clicking a button or opening an app feels simple, even though thousands of operations are running underneath.

CA-9-12.CS.1

How software and hardware work together

High School

Students examine how apps, operating systems, and physical hardware depend on each other, moving from the keys a user presses down to the electrical signals a chip reads. Each layer hides complexity so the one above it can work without knowing every detail.

CA-9-12.CS.2

How to find and fix computer errors

High School

Students create a step-by-step guide others can follow to track down and fix errors in a computer system. The focus is on building a repeatable process, not just solving one problem.

CA-9-12.CS.3

How computers turn logic into hardware

High School

Students learn how the physical parts of a computer, like circuits and chips, carry out the yes/no decisions that make software run. This connects the code on screen to the actual hardware underneath it.

CA-9-12S.CS.1

What an operating system actually does

High School

Students learn what an operating system actually does: managing memory, running programs, and connecting software to hardware like a keyboard or screen. Think of it as the layer that keeps everything on a computer working together.

CA-9-12S.CS.2
Data & Analysis
Standard Definition Code

Representing data in different formats

High School

Students practice converting the same information across different formats, reading a letter as a number, a color as a code, an image as a grid of values. The goal is seeing that all digital data is just numbers stored in different arrangements.

CA-9-12.DA.8

How you store data changes what you can do with it

High School

Students weigh the real costs of storing data in different ways, such as choosing between speed and file size, or between easy searching and simple structure.

CA-9-12.DA.9

Turning data into charts others can read

High School

Students pick a real-world topic, gather data about it, and build a chart or graph that makes the pattern clear to someone who wasn't part of the research.

CA-9-12.DA.10

Improving models to fit real data

High School

Students revise a working computer model after comparing its predictions against real data. The goal is closing the gap between what the model says should happen and what the data actually shows.

CA-9-12.DA.11

Choosing tools to collect real data

High School

Students choose the right tool for the job (a survey, a sensor, a spreadsheet) and use it to gather a real set of data they can then analyze.

CA-9-12S.DA.7

Finding patterns in complex data

High School

Students examine real datasets (think weather records, traffic patterns, or health statistics) and use software tools to spot trends or outliers that aren't obvious from a quick look. The skill is learning to read what the numbers are actually saying.

CA-9-12S.DA.8

Testing hypotheses with models and simulations

High School

Students test whether a computer model or simulation actually supports the hypothesis it was built to check, then judge what needs to change when the results don't match expectations.

CA-9-12S.DA.9
Impacts of Computing
Standard Definition Code

How computing shapes everyday life

High School

Students look at how computers and the internet shape everyday life: who gets access, who benefits, who gets left out, and what tradeoffs society accepts to keep systems running.

CA-9-12.IC.23

Spotting bias in software and design

High School

Students examine how bias in the design of apps, algorithms, and digital tools can lead to unfair outcomes, then practice spotting and questioning those problems in real examples.

CA-9-12.IC.24

Algorithms solve problems in every subject

High School

Students take one algorithm, such as a sorting method or search process, and show how the same step-by-step logic solves problems in fields like medicine, economics, or music. The algorithm doesn't change; the problem does.

CA-9-12.IC.25

How new tech reshapes society

High School

Students examine how new technologies (AI, social media, surveillance tools) shape jobs, elections, and daily life, then back up their conclusions with evidence from credible sources.

CA-9-12.IC.26

Connecting across cultures using digital tools

High School

Students practice using digital tools like video calls, shared documents, or online forums to connect and collaborate with people from different backgrounds or industries.

CA-9-12.IC.27

Copyright law and innovation: good and bad

High School

Students examine how copyright and patent laws can protect creators and reward new ideas, but also how those same laws can slow down future inventors who need to build on earlier work.

CA-9-12.IC.28

How apps collect data without you noticing

High School

Students explain what happens to personal data that apps, websites, and devices collect automatically, and why that collection raises privacy risks. Think location tracking, browsing history, or facial recognition running in the background without a clear opt-out.

CA-9-12.IC.29

Privacy, safety, and who gets your data

High School

Students look at real tradeoffs: what people give up when apps, laws, or companies collect personal data, and what they gain in safety or convenience. The goal is to form a reasoned position, not just list pros and cons.

CA-9-12.IC.30

Weigh the good and bad effects of tech

High School

Students look at apps, algorithms, or digital tools and judge what they help people do well and what harm they might cause. Then they think through changes that would make those tools more fair or less damaging.

CA-9-12S.IC.27

How technology shapes and changes culture

High School

Students look at a technology that changed daily life (social media, GPS, streaming) and think through where it might go next and what that could mean for how people live and work.

CA-9-12S.IC.28

Who controls computing access worldwide

High School

Students examine who has access to computers and the internet around the world, and consider how wealth, geography, and power shape who benefits from technology and who gets left out.

CA-9-12S.IC.29

Software laws and who gets to make them

High School

Students read real laws and argue whether they help or hurt the way software gets built and used. Think copyright rules, privacy laws, or age restrictions on apps.

CA-9-12S.IC.30
Networks & the Internet
Standard Definition Code

What breaks a network

High School

Students learn what can slow down, disrupt, or break a network, things like too much traffic, hardware failure, or a weak signal, and why those problems matter in the real world.

CA-9-12.NI.4

How the internet is designed

High School

Students explain how the internet is built to keep working even when parts of it fail. That means understanding why data travels in small packets across multiple paths instead of one fixed route.

CA-9-12.NI.5

Comparing ways to stop cyber threats

High School

Students look at real security threats like hacking or stolen passwords and compare the tools used to stop them, such as firewalls, encryption, and two-factor login. The goal is to understand why different threats need different defenses.

CA-9-12.NI.6

Keeping data safe when it travels

High School

Students compare encryption methods to understand how digital information stays private as it travels across the internet. Think passwords, online banking, and secure messages.

CA-9-12.NI.7

How the internet stays connected at scale

High School

Students learn how the internet stays reliable as it grows, tracing how routers, switches, and servers pass data from one device to another and how addresses and network layout determine which path that data takes.

CA-9-12S.NI.3

How the internet shapes what gets built on it

High School

Students explain how the internet's basic rules (like how data is broken into packets and routed across networks) shape the apps and services built on top of it. A design choice at the network level can ripple up into every website and app that relies on it.

CA-9-12S.NI.4

Fixing security threats in networks

High School

Students identify a security threat, such as a phishing attack or weak password policy, and propose or build a practical fix. The work goes beyond spotting the problem to explaining why the solution actually reduces the risk.

CA-9-12S.NI.5

Keeping data safe while sending it

High School

Students study how encryption scrambles data so only the right recipient can read it. They look at real techniques used to protect passwords, messages, and online transactions.

CA-9-12S.NI.6
Common Questions
  • What does a high school computer science year actually cover?

    Students learn to write, test, and improve programs that solve real problems. They study how computers, networks, and the internet work under the hood. They also look at how software affects people, including questions about privacy, bias, and who gets access to technology.

  • Does a student need to be good at math to do well here?

    Comfort with math helps, but careful thinking matters more. Most of the work is breaking a big problem into smaller steps and checking that each step does what it should. Students who like puzzles, building things, or finding patterns usually do well.

  • How can a parent help at home without knowing how to code?

    Ask students to explain a program out loud, step by step, like a recipe. If something is broken, ask what they expected to happen and what actually happened. That habit of slowing down and describing the gap is most of what debugging really is.

  • How should the year be sequenced for new programmers?

    Start with small programs that use variables, loops, and conditions, then move to functions and lists once students can read short code fluently. Bring in file or data work in the middle of the year, and save larger team projects for the second half once students can decompose a problem.

  • Which topics usually need the most reteaching?

    Loops with lists, function parameters and return values, and the difference between a variable inside a function and one outside it. Plan short review cycles across the year rather than one long unit. Frequent small coding checks catch confusion earlier than a single project does.

  • What should students be able to do by the end of the year?

    Students should be able to take a problem in plain English, plan an approach, write a working program with functions, and test it with a few cases. They should also be able to explain a tradeoff in their design and talk clearly about one social impact of the software they built.

  • How much screen time at home does this course require?

    Most coding work fits in school, with about two to four hours a week at home for projects and debugging. Students do better with focused sessions of 30 to 45 minutes than long marathon nights. A quiet spot and a real keyboard help more than a fancy laptop.

  • How do team projects and version control fit into planning?

    Introduce shared editing and basic version control early, even for tiny projects, so students build the habit before stakes are high. Assign clear roles on team work and ask each student to document one decision they made. Code reviews between partners catch more bugs than a teacher pass alone.

  • How is this course preparing students for college or a job?

    Students leave able to read code, work in a shared project, and reason about how a system handles data and users. Those skills transfer to a college intro course, a coding bootcamp, or an entry-level tech role. The habits of testing and documenting matter as much as the specific language.