AP CS Principles

UTeach AP Computer Science CS Principles

UTeach CS Principles

AP Computer Science Principles is an engaging course designed for all students to explore programming, computational thinking, and the impacts of computing in our lives.

UTeach AP CS Principles Course Overview

"I am so glad I chose your curriculum to start AP CSP in our school. It has been a rich learning for my students who are all seniors and many of whom have never taken an AP class before."

—Rebecca L., CS Principles teacher

In this engaging, project-based curriculum, students develop computational thinking and programming skills through collaborative, open-ended projects that are personally meaningful to students’ lives.

Students examine how computing shapes our society by investigating and debating issues such as cybersecurity, data privacy, and digital literacy.

Assignments grow in complexity as students explore programming concepts first through block-based, drag-and-drop coding in Scratch, followed by text-based coding in Python. This innovative curriculum is designed to engage all students, while also providing rigorous preparation for the AP Computer Science Principles exam. 

Request free sample lessons.

Included with Your License

  • Comprehensive teacher materials
  • Complete student-facing curriculum
  • Unlimited teacher support
  • Codio platform access, with student accounts

CS Principles Unit Descriptions

Jump to:

Unit 1: Algorithmic Thinking (Password Generator Project) 

In Unit 1, students apply the principles of algorithmic thinking (including sequencing, selection, and repetition) to generate secure, unique passwords that are easy to remember but difficult to guess.

After mastering how to encode and decode messages using cryptographic techniques such as Vigenère and Caesar ciphers, students represent their “unplugged” password algorithms using AP®-style pseudocode.

The unit culminates with a challenge for students to try to “hack” their classmates’ password algorithms. 

Screenshot from a video in the CS Principles course curriculum

 

Unit 2: Programming (Scratch Programming Project)

In Unit 2, students dive into block-based programming to code a personally meaningful Scratch program, game, or movie that incorporates both user interaction and multimedia elements.

Through an iterative development process, students construct blocks of executable code, explore debugging techniques, and ensure that their program functions properly. They experiment with basic programming concepts, including variables, user input, conditionals, and iteration statements.

By the end of this unit, students gain confidence in their problem-solving and coding abilities, as well as familiarity with the cyclical nature of program development.An illustration from the CS Principles unit 2 curriculum

 

Unit 3: Data Representation (Unintend'o Controller Project)

In Unit 3, students delve deeper into computational abstraction while programming the interface to a classic video game controller using Scratch.

Students discover how all digital information is ultimately represented by “bits” (short for binary digits) of 0 or 1. They apply their understanding of bits to map patterns of button presses on their game controllers to different game actions. Students also examine characteristics and common use-cases for higher-order data structures, specifically linear, ordered collections. Students use common algorithms to process lists, such as searching and sorting elements in a list.

By the end of the unit, students hone their coding skills and master the concept of abstraction in programming. 

An illustration of a gamer holding an older Nintendo controller in their hands while looking at an illustration of a Mario Bros game

 

Unit 4: Digital Media Processing (Image Filter Project)

In Unit 4, students create Instagram-like photo filters after exploring how the RGB color model is used to encode digital images and represent images on computer displays.

Students develop a series of algorithmic filters, digitally modifying images at the level of individual pixels to achieve various visual effects. This unit also marks the transition from block-based to text-based programming using Python, a popular language for software developers.

Students gain familiarity with programming environments that more closely reflect the tools used in industry, preparing them for continuing studies in computer science beyond the scope of this course. 

An illustration of photo editing software

 

Unit 5: Big Data (TEDxKinda Project)

In Unit 5, students discover how data analytics can uncover hidden patterns and drive decision-making in fields as disparate as business, science, and government.

Students gain real-world experience with collecting and analyzing data using data science techniques, such as mining and extrapolation. Students identify questions that are best answered using “big data” and explore the usability versus the usefulness of various large data sets. After generating visual representations, students communicate insights they have gleaned from examining open-source databases through short, “TED talk”-style presentations. 

An illustration from the CS Principles unit 5 curriculum on the TedxKinda presentations

 

Unit 6: Innovative Technologies (Prototyping the Future Project)

In Unit 6, students become visionaries of “future technologies” as they prototype new products and services that could be realized within their lifetimes.

During the development process, students explore the effects of ever-evolving technologies on individuals and societies and examine the computing inventions they rely on every day, including the global infrastructure of the internet. After designing a computing innovation, each team gives an “elevator pitch” highlighting how features of their prototype will enhance everyday life.

This unit encourages students to think about the entrepreneurial process behind the creation of new technologies, as well as their own role in shaping the future.

An illustration of a bar graph on a tablet

Return to Top