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.
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.
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.
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.
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.
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.
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.
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.
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
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.
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.
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.
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.
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.
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.
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.
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.
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.