Computer Science Discoveries ('24-'25)

Computer Science Discoveries (CS Discoveries) is an introductory computer science course that empowers you to create authentic artifacts and engage with computer science as a medium for creativity, communication, problem solving, and fun.

Unit 1 - Problem Solving and Computing ('24-'25)

Problem Solving and Computing is a highly interactive and collaborative introduction to the field of computer science, as framed within the broader pursuit of solving problems. You’ll practice using a problem solving process to address a series of puzzles, challenges, and real world scenarios. Next, you’ll learn how computers input, output, store, and process information to help humans solve problems. The unit concludes with a project in which you design an application that helps solve a problem of your choosing.

Description: This chapter guides students to develop and adopt a more formal structured problem solving process by reflecting on problems they have problems they have encountered, both in the classroom and everyday life. By working through a diverse set of problems, such as logic puzzles, engineering challenges, and planning a trip, students learn to identify different classes of problems, decompose large problems, and develop their personal problem solving skills.

Goals:

  • Learn how to use a structured problem solving process and apply it to address various problems.
  • Create a collaborative classroom environment where students view computer science as relevant, fun, and empowering.

Big Questions:

  • What strategies and processes can I use to become a more effective problem solver?

Description: This chapter presents computers as machines that solve information problems. Students begin by building a common definition for a computer that focuses on functionality instead of specific hardware. They then explore the ways that computers approach problems. For their final project, students propose an app that could be used to solve a problem of their choosing.

Goals:

  • Identify the defined characteristics of a computer and how it is used to solve information problems.
  • Use a structured problem solving process to design solutions that use computing technology.
  • Create a collaborative classroom environment where students view computer science as relevant, fun, and empowering.

Big Questions:

  • How do computers help people to solve problems?
  • How do people and computers approach problems differently?
  • What does a computer need from people in order to solve problems effectively?
  • The first chapter of this unit should be completed before any other unit in CS Discoveries
  • Alternate lessons are provided for some lessons in this unit, depending on your classroom context
  • Additional resources are available within the Teacher Resources dropdown of the unit

If you are interested in teaching this course, we recommend completing the free Problem Solving and Computing Self-Paced Professional Development Module. The module is designed to take 2 hours to complete. No previous experience with coding is required.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 2 - Web Development ('24-'25)

In Web Development, students are put in the shoes of a web developer and empowered to design and create a web page to meet a user’s needs. As students develop the pages and begin to see themselves as web developers and designers, they are encouraged to think critically about the impact of sharing information online and how to be more critical consumers of content. They are also introduced to problem-solving related to programming while learning valuable skills such as debugging, using resources, and teamwork. At the conclusion of chapter one, students will design and create a web page for a user. After chapter two, students will have worked with a team to create a multi-page website they can publish and share.

Description: Students work as web developers to design and develop web pages to meet users' needs. Focusing on the tags, keywords, and syntax used to communicate instructions to the computer, students use HTML to structure the content of a web page and CSS to design and organize the content. They also explore the privacy and intellectual property implications of publishing web pages online.

Goals:

  • Create digital artifacts that use multiple computer languages to control the structure and style of their content.
  • Create a web page to meet a user's needs.
  • Use different programming languages to solve different problems.
  • Examine their role and responsibilities as creators and consumers of digital media.

Big Questions:

  • How do web developers create web pages for users?
  • How can text communicate a web page's content, structure, and style?
  • How do I safely and appropriately create content for the Internet?
  • What strategies can I use when coding to find and fix issues?

Description: Students expand their ideas of websites beyond personal expression and begin to see them as a way to solve problems. Students build on their collaborative skills and work in teams to create multi-page websites that solve a problem.

Goals:

  • Create digital artifacts that use multiple computer languages to control the structure and style of their content.
  • Create a website that solves a problem.
  • Use different programming languages to solve different problems.
  • Examine their role and responsibilities as both creators and consumers of digital media.

Big Questions:

  • How can websites be used to address problems in the world?
  • What strategies can teams use to work better together?
  • How do I know what information can be trusted online?

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 3 - Interactive Animations and Games ('24-'25)

In the Interactive Animations and Games unit, students create programmatic images, animations, interactive art, and games. Starting off with simple, primitive shapes and building up to more sophisticated sprite-based games, students become familiar with the programming concepts and the design process computer scientists use daily. They then learn how these simpler constructs can be combined to create more complex programs. In the final project, students develop a personalized, interactive program.

Description: Students build up toward programming interactive animations in the Game Lab environment. They begin with simple shapes and sprite objects, then use loops to create flipbook style animations. Next, they learn to use booleans and conditionals to respond to user input. At the end of the chapter, students design and create an interactive animation that they can share with the world.

Goals:

  • Create an interactive animation that includes basic programming concepts such as control structures, variables, user input, and randomness.
  • Give and respond constructively to peer feedback, and work with their teammates to complete a project.
  • View yourself as a computer programmer, and see programming as a fun and creative form of expression.

Big Questions:

  • What is a computer program?
  • What are the core features of most programming languages?
  • How does programming enable creativity and individual expression?
  • What practices and strategies will help me as I write programs?

Description: In this chapter students combine the constructs that they learned in the first chapter to program more complex movement and collisions in their sprites. As they create more complex programs, they begin to use functions to organize their code. In the end, students use a design process to create an original game.

Goals:

  • Create an interactive game that includes basic programming concepts such as control structures, variables, user input, and randomness.
  • Give and respond constructively to peer feedback, and work with their teammates to complete a project.
  • Work with others to break down programming projects using sprites and functions.

Big Questions:

  • How do software developers manage complexity and scale?
  • How can programs be organized so that common problems only need to be solved once?
  • How can I build on previous solutions to create even more complex behavior?

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 4 - The Design Process ('24-'25)

The Design Process unit transitions students from thinking about computer science as a tool to solve their own problems towards considering the broader social impacts of computing. Through a series of design challenges, students are asked to consider and understand the needs of others while developing a solution to a problem. The second half of the unit consists of an iterative team project, during which students have the opportunity to identify a need that they care about, prototype solutions both on paper and in App Lab, and test their solutions with real users to get feedback and drive further iteration.

Description: This chapter introduces the design process as a specific version of the problem solving process in which empathy for a user's needs is consistently integrated. Students learn strategies for identifying user needs and assessing how well different designs address them. In particular they learn how to develop a paper prototype, how to gather and respond to feedback about a prototype, and consider ways different user interfaces do or do not affect the usability of their apps.

Goals:

  • See the design process as a form of problem solving that prioritizes the needs of a user.
  • Identify user needs and assess how well different designs address them.
  • Develop paper prototypes, gather and respond to feedback about a prototype, and consider ways different user interfaces do or do not affect the usability of their apps.

Big Questions:

  • How do designers identify the needs of their user?
  • How can we ensure that a user's needs are met by our designs?
  • What processes will best allow us to efficiently create, test, and iterate upon our designs?

Description: This chapter is focused on a long running group project that allows students to apply all they've learned about User-Centered Design to develop an app prototype. Working in teams, students identify a social issue that they care about and design and prototype an app to address that issue. This is an opportunity for students to explore other roles in software development, such as product management, marketing, design, and testing.

Goals:

  • Develop digital prototypes, gather and respond to feedback about a prototype, and consider ways different user interfaces do or do not affect the usability of their apps.
  • Understand other roles in software development, such as product management, marketing, design, and testing, and how to use what they have learned about computer science as a tool for social impact.

Big Questions:

  • How do teams effectively work together to develop software?
  • What roles beyond programming are necessary to design and develop software?
  • How do designers incorporate feedback into multiple iterations of a product?

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 5 - Data and Society ('24-'25)

The Data and Society unit is about the importance of using data to solve problems and it highlights how computers can help in this process. The first chapter explores different systems used to represent information in a computer and the challenges and tradeoffs posed by using them. In the second chapter, students learn how collections of data are used to solve problems, and how computers help to automate the steps of this process. In the final project, students gather their own data and use it to develop an automated solution to a problem.

Description: This chapter focuses on data representation and its role in solving information problems. Students learn what a representation system needs to be useful, and how computers are able to represent different types of information using binary systems. For the chapter project, students represent their perfect day in a binary punch card and trade with classmates to decipher.

Goals:

  • Understand the role of data and data representation in solving information problems.
  • Explain the necessary components of any data representation scheme, as well as the particulars of binary and the common ways that various types of simple and complex data are represented in binary code.

Big Questions:

  • Why is representation important in problem solving?
  • What features does a representation system need to be useful?
  • What is necessary to create usable binary representation systems?
  • How can we combine systems together to get more complex information?

Description: Students explore how data can be used to answer interesting questions and solve problems. Using a modified version of the general Problem Solving Process, students look at how computers and humans use data differently and the pros and cons of automating problem solving. After learning ways that computers use data in the real world, students choose their own problem and use data to address it.

Goals:

  • Investigate and understand how humans and computers use data differently.
  • Design and implement a data-based solution to a given problem and determine how the different aspects of the problem solving process could be automated.

Big Questions:

  • How does data help us to solve problems?
  • How do computers and humans use data differently?
  • What parts of the data problem solving process can be automated?
  • What kinds of problems do computers use data to solve in the real world?

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 6A - (Option A) Creating Apps with Devices - Circuit Playground ('24-'25)

In the Creating Apps for Devices unit, students explore the role of physical devices in computing. Using App Lab and Adafruit’s Circuit Playground, students develop programs that utilize the same hardware inputs and outputs that you see in the smart devices, looking at how a simple rough prototype can lead to a finished product. Then, students explore how physical devices can be used to react to the world around them using a “maker” mindset to create prototypes with everyday materials.

⚠️ This unit uses the Circuit Playground to introduce physical computing and the "maker" mindset. You can also teach this content using micro:bit devices by assigning the (Option B) Creating Apps with Devices unit. Both units teach the same content and are equivalent - you do not need to buy both sets of devices or teach both units.

Description: This unit emphasizes the interactions between inputs and outputs on the circuit playground and an app screen. On their circuit playground, students learn to control inputs like buttons or toggle switches and outputs like the buzzer or LED. Students also interact with inputs and outputs in App Lab, such as buttons and text inputs and dropdowns. By the end of the chapter, students will be able to create an app that controls a device, similar to many "smart" hardware they may experience in their day-to-day lives.

Goals:

  • Design and build a physical computing device that integrates physical inputs and outputs with digital apps.
  • Create app prototypes that use a physical device to control a digital app.

Big Questions:

  • What inputs and outputs are available on a physical device?
  • What inputs and outputs are available on an app?
  • How can we create apps that use a physical device to control a digital app?

Description: In this chapter, students focus on how their physical device can interact with the outside world. They learn how to use sensors and the accelerometer to react to the physical environment. They learn to attach external LEDs and buttons that extend the types of devices they can make. Throughout the unit, students use physical materials like paper or cardboard to extend the functionality of their devices. By the end of the unit, students will have created an interactive art project and developed a prototype for a physical device that solves a problem.

Goals:

  • Design and build a physical computing device that integrates sensors with digital apps.
  • Create app prototypes that use a physical device to solve real-world problems.
  • Use physical computing to solve problems in fun and innovative ways.

Big Questions:

  • How can a physical device use sensors to react to a physical environment?
  • How can simple hardware be used to develop innovative new products?
  • This unit requires students to have access to Circuit Playground's - click here for more information about using Circuit Playground's in your classroom
  • Guidance for how to support students in programming levels and differentiate tasks are available in the Programming Levels Guide and Differentiation Guide
  • You can view the Implementation Guide for more information about this unit

If you are interested in teaching this course, we recommend completing the free Creating Apps for Devices Self-Paced Professional Development Module. The module is designed to take 2 hours to complete. No previous experience with coding or devices is assumed.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 6B - (Option B) Creating Apps with Devices (micro:bit) ('24-'25)

In the Creating Apps with Devices unit, students explore the role of physical devices in computing. Using App Lab and BBC micro:bit, students develop programs that utilize the same hardware inputs and outputs that you see in the smart devices, looking at how a simple rough prototype can lead to a finished product. Then, students explore how physical devices can be used to react to the world around them using a “maker” mindset to create prototypes with everyday materials.

⚠️ This unit uses the micro:bit to introduce physical computing and the "maker" mindset. You can also teach this content using circuit playground devices by assigning the Creating Apps with Devices (Circuit Playground) unit. Both units teach the same content and are equivalent - you do not need to buy both sets of devices or teach both units.

Description: This unit emphasizes the interactions between inputs and outputs on the micro:bit and an app screen. On their micro:bit, students learn to control inputs like buttons and outputs like the LED Screen. Students also interact with inputs and outputs in App Lab, such as buttons and text inputs and dropdowns. By the end of the chapter, students will be able to create an app that controls a device, similar to many "smart" hardware they may experience in their day-to-day lives.

Goals:

  • Design and build a physical computing device that integrates physical inputs and outputs with digital apps.
  • Create app prototypes that use a physical device to control a digital app.

Big Questions:

  • What inputs and outputs are available on a physical device?
  • What inputs and outputs are available on an app?
  • How can we create apps that use a physical device to control a digital app?

Description: In this chapter, students focus on how their physical device can interact with the outside world. They learn how to use sensors and the accelerometer to react to the physical environment. They learn to attach external LEDs and buttons that extend the types of devices they can make. Throughout the unit, students use physical materials like paper or cardboard to extend the functionality of their devices. By the end of the unit, students will have created an interactive art project and developed a prototype for a physical device that solves a problem.

Goals:

  • Design and build a physical computing device that integrates sensors with digital apps.
  • Create app prototypes that use a physical device to solve real-world problems.
  • Use physical computing to solve problems in fun and innovative ways.

Big Questions:

  • How can a physical device use sensors to react to a physical environment?
  • How can simple hardware be used to develop innovative new products?

If you are interested in teaching this course, we recommend completing the free Creating Apps for Devices (micro:bit) Self-Paced Professional Development Module. The module is designed to take 2 hours to complete. No previous experience with coding or devices is assumed.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Unit 7 - AI and Machine Learning ('24-'25)

This unit is a hands-on introduction to developing a machine learning model with tabular data. Students explore how computers learn from data to make decisions, then develop machine learning projects around real-world data. The unit culminates in designing a machine learning app to solve a personally relevant problem.

Description: Students learn the basics of machine learning and use a tool called AI Lab to create machine learning models that can be used in App Lab. The unit starts with an overview of machine learning and how computers can use patterns in data to make decisions and predictions. Then, students learn how to use AI Lab to train models from tabular data while exploring issues of bias. Lessons follow a repeating "unplugged - AI Lab - App Lab" pattern so students are continually exposed to the concepts and tools of machine learning. The chapter culminates in a project where students select from a set of real-world datasets to train a machine learning model and create an app.

Goals:

  • Create a machine learning model in AI Lab to solve a problem, and use App Lab to create an app that uses their model.
  • Understand how machine learning models make decisions from data

Big Questions:

  • How does machine learning find patterns in data to make decisions?
  • How can we avoid bias when training a machine learning model?

Description: This chapter prepares students to be machine learning scientists to create an app that addresses an issue in their community. Students follow along with a fictional group of students as they define an issue, develop a survey to collect data, analyze their data in AI Lab, create a model card, and create an app to solve their problem. Then, in the final project, students repeat these same steps with an issue they care about in their community.

Goals:

  • Create machine learning models in AI Lab from their own data and use App Lab to create an app that uses their model to solve problems in their community.

Big Questions:

  • How can machine learning be used to solve problems in our community?

If you are interested in teaching this course, we recommend completing the free AI/ML Self-Paced Professional Development Module. The module is designed to take 2 hours to complete. No previous experience with coding or AI is assumed.

Finished Teaching This Unit?

Answer this short survey to let the Code.org curriculum team know how the unit went.

Go to Unit
Post-Course Survey

This unit contains the Post-Course Survey. This unit can be assigned after students complete their final unit in this course.

Go to Unit