You are on page 1of 45

0

CS Fundamentals Curriculum Guide

Welcome to Computer Science Fundamentals 2


Grade-Aligned Courses 2

Code.org Values and Philosophy 3


Curriculum Values 3
Pedagogical Approach To Our Values 4

Standards Alignment 5

Assessments 5

CS Fundamentals Curriculum Overview 6


Concepts 6
Types of Lessons in CS Fundamentals 7

Course Overviews 8
Course A 8
Course B 10
Course C 12
Course D 14
Course E 16
Course F 18

Learning Tools 20

Lesson Structure 22
Unplugged and Plugged Activities 22
Components of a Lesson 22
Types of Levels 23

Teaching and Learning Strategies 24


Student Practices 27
Debugging 28

Implementation and Planning 30


Lesson Pacing 30
Scheduling The Lessons 30
Approach to Teaching in Common Classroom Scenarios 31
Tech Requirements and Required Materials 32
Getting Help 32
Thanks and Acknowledgements 33

Appendix A: Intro Workshop Model Lesson Handouts 34

Appendix B: Worksheets for Lesson Implementation 36

1
CS Fundamentals Curriculum Guide

Welcome to Computer Science Fundamentals


Welcome to Computer Science Fundamentals, the Code.org curriculum designed for students in kindergarten through fifth
grade (K-5), which includes students 5-11 years old! This guide begins with an introduction to the CS Fundamentals
curriculum, provides a look into our core values and methods, and includes a detailed overview of each course offering.

All Code.org curriculum resources are free to use under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0
International License. Our technology is developed as an open-source project. Common Sense Media lessons are
shareable under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 license. No remixing permitted. View
detailed license information at creativecommons.org. Common Sense and other associated names and logos are
trademarks of Common Sense Media, a 501(c)(3) nonprofit organization (FEIN: 41-2024986).

Who Should Use CS Fundamentals?


We built CS Fundamentals for elementary school educators and students. No prior experience is assumed. These
courses work best in a classroom setting, led by an engaged teacher. For scenarios where students will be learning
independently or asynchronously, we recommend our CS Fundamentals Express courses. Teachers do not need previous
computer science experience and are encouraged to learn along with their students.

Which course is right for my students?


Grade-Aligned Courses
There are six CS Fundamentals courses, each aligned with an elementary grade level. Each course is an entry point, and
there is no requirement to do all (or any) of the previous courses first.

CS Fundamentals Express Courses


In addition to courses A-F, CS Fundamentals also offers two express courses designed for situations where the teacher is
a less active role in engaging students. An express course might be used, for example, if a student is learning CS on her
own.

Express courses consist primarily of skill-building lessons done on the computer. These courses can be delivered with or
without an actively involved teacher, making them a good fit for self-paced classrooms, stations, or independent learning.
The table below maps courses A-F and the two express courses:

Course A Course B Course C Course D Course E Course F


Kindergarten 1st Grade 2nd Grade 3rd Grade 4th Grade 5th Grade

Pre-reader Express Course Express Course


Grades K-1 Grades 2-5
Built with lessons from Courses A - B Built with lessons from Courses C - F

2
CS Fundamentals Curriculum Guide

Code.org Values and Philosophy


Curriculum Values
While Code.org offers a wide range of curricular materials across a wide range of ages, the following values permeate and
drive the creation of every lesson we write.

Computer Science is Foundational for Every Student


We believe that computing is so fundamental to understanding and participating in society that it is valuable for every
student to learn as part of a modern education. We see computer science as a liberal art, a subject that provides students
with a critical lens for interpreting the world around them. Computer science prepares all students to be active and
informed contributors to our increasingly technological society whether they pursue careers in technology or not.
Computer science can be life-changing, not just skill training.

Teachers in Classrooms
We believe students learn best with the help of an empowered teacher. We design our materials for a classroom setting
and provide teachers robust supports that enable them to understand and perform their critical role in supporting student
learning. Because teachers know their students best, we empower them to make choices within the curriculum, even as
we recommend and support a variety of pedagogical approaches. Knowing that many of our teachers are new to
computer science themselves, our resources and strategies specifically target their needs.

Student Engagement and Learning


We believe that students learn best when they are intrinsically motivated. We prioritize learning experiences that are
active, relevant to students’ lives, and provide students authentic choice. We encourage students to be curious, solve
personally relevant problems and to express themselves through creation. Learning is an inherently social activity, so we
interweave lessons with discussions, presentations, peer feedback, and shared reflections. As students proceed through
our pathway, we increasingly shift responsibility to students to formulate their own questions, develop their own solutions,
and critique their own work.

Equity
We believe that acknowledging and shining a light on the historical inequities within the field of computer science is critical
to reaching our goal of bringing computer science to all students. We provide tools and strategies to help teachers
understand and address well-known equity gaps within the field. We recognize that some students and classrooms need
more support than others, and those with the greatest needs should be prioritized. All students can succeed in computer
science when given the right support and opportunities, regardless of prior knowledge or privilege. We actively seek to
eliminate and discredit stereotypes that plague computer science and alienate the very students we aim to reach.

Curriculum as a Service
We believe that curriculum is a service, not just a product. Along with producing high quality materials, we seek to build
and nourish communities of teachers by providing support and channels for communication and feedback. Our products
and materials are not static entities, but a living and breathing body of work that is responsive to feedback and changing
conditions. To ensure ubiquitous access to our curriculum and tools, they are web-based and cross-platform, and will
forever be free to use and openly licensed under a Creative Commons license.

3
CS Fundamentals Curriculum Guide

Pedagogical Approach To Our Values


When we design learning experiences, we draw from various teaching and learning strategies to construct an equitable
and engaging learning environment.

Role of the Teacher


We design our curriculum with the idea that the instructor will act as the lead learner. As the lead learner, the teacher’s
role shifts from being the source of knowledge to being a leader in seeking knowledge. The lead learner’s mantra is: “I
may not know the answer, but I know that together we can figure it out.” We rarely ask a teacher to lecture or offer the first
explanation of a CS concept. We want the class activity to expose the concept to students, allowing them to shape
meaning from what they have experienced. We also expect teachers to act as the curator of materials. Finally, we include
an abundance of materials and teaching strategies in our curricula - sometimes too many to use at once - with the
expectation that teachers have the professional expertise to determine how to best conduct an engaging and relevant
class for their students.

Discovery and Inquiry


Students have an active and equal stake in their learning experience. Students explore concepts and build their
understandings through various physical and online activities. The goal is to develop a common foundation upon which all
students in the class can understand computer science concepts, regardless of prior experience.

Materials and Tools


Our materials and tools are designed to support exploration and discovery by those without computer science knowledge.
Students develop an understanding of these concepts through “play” and experimentation. We often move between our
coding environments to our non-coding tools and videos; each supports our curriculum lessons and our philosophy about
student engagement and learning. Our videos provide help for students to return to when they want to refresh their
knowledge. They are packed with information and star a diverse cast of presenters and CS role models.

Creation and Personal Expression


Many of the projects, assignments, and activities in our curriculum ask students to be creative, express themselves, and
share their creations with others. While many lessons focus on learning and practicing new skills, our goal is to enable
students to transfer these skills to their creations. Everyone seeks to make their mark on society, including our students,
and we want to give them the tools they need. When computer science provides an outlet for personal expression and
creativity, students are intrinsically motivated to deepen the understandings that will allow them to express their views and
carve out their place in the world.

The Classroom Community


We value an inclusive classroom community. Off of the computer, students will collaborate and communicate during
games, discussions, and creative tasks. When programming on the computers, students are encouraged to share ideas
or work collaboratively as pair programmers.

4
CS Fundamentals Curriculum Guide

Standards Alignment
Coding helps students with problem-solving, logic, cause and effect, and computational thinking. Computer Science
Fundamentals can also reinforce concepts related to English language arts and mathematics while students learn
computer science.

CSTA Standards Mapping


We use both the K–12 Computer Science Framework (k12cs.org) and the 2017 Computer Science Teachers Association
(CSTA) standards as guidance. Across the six courses, you will find lessons that align with all CSTA standards for grades
K-2 and 3-5.

Cross-Curricular Standards Guidance


You can help students practice English language arts and mathematics standards by following our lesson plans or making
slight adaptations. Details are available in the “Teacher Resources” for each course which can be found on the course
overview pages.

Cross-Curricular Extension Activities


To build a bridge between what students are learning in CSF and what they are learning in their core curriculum, we
teamed up with classroom teachers to create cross-curricular extension activities for many of our CSF lessons. These
activities align with the Common Core State Standards for mathematics and English language arts and the Next
Generation Science Standards.

Assessments
At Code.org, we believe that you know your students best, which is why we do not attempt to automatically determine
what “grade” students should receive for any given lesson. Our tools allow you to see student progress and identify
learning evidence. Our teacher dashboard is continually evolving to highlight the work done by your class sections. Keep
an eye on Code.org Support (https://support.code.org/) for more information on changes and improvements.

5
CS Fundamentals Curriculum Guide

CS Fundamentals Curriculum Overview


Concepts
At the highest level, CS Fundamentals courses are organized into concept chunks. Concept chunks provide structure
around the big ideas in a course. Concept chunks make it easy for teachers to see at a glance what is covered in a
course.

Course A (13 lessons) Course B (13 lessons) Course C (16 lessons)

Digital Citizenship (1 lesson) Digital Citizenship (1 lesson) Digital Citizenship (1 lesson)

Sequencing (5 lessons) Sequencing (4 lessons) Sequencing (5 lessons)

Loops (4 lessons) Loops (4 lessons) Loops (4 lessons)

Events (2 lessons) Impacts of Computing (1 lesson) Events (3 lessons)

End of Course Project (1 lesson) Events (2 lessons) Data (2 lessons)

End of Course Project (1 lesson) End of Course Project (1 lesson)

Course D (17 lessons) Course E (18 lessons) Course F (20 lessons)

Digital Citizenship (2 lessons) Sprites (3 lessons) Sprites (4 lessons)

Sequencing (4 lessons) Digital Citizenship (4 lessons) Digital Citizenship (1 lesson)

Events (3 lessons) Nested Loops (3 lessons) Variables (7 lessons)

Nested Loops (3 lessons) Functions (3 lessons) For Loops (3 lessons)

Conditionals (5 lessons) Conditionals (3 lessons) Data & Simulations (4 lessons)

End of Course Project (1 lesson) Impacts of Computing (1 lesson) End of Course Project (1 lesson)

End of Course Project (1 lesson)

Each CS Fundamentals course has several concept chunks, and each chunk can have one or several lessons. In the next
section, you can find more details about the types of lessons in CS Fundamentals.

6
CS Fundamentals Curriculum Guide

Types of Lessons in CS Fundamentals


Each concept chunk consists of individual lessons, but many of these share common characteristics. Knowing the types
of lessons in this curriculum will help you understand the intent and purpose and your role in teaching.

Context-Setting Lessons Sprites


These lessons introduce students to concepts, usually in a hands-on
way and often without computers (see: Unplugged Activities).
Context-setting lessons consist of teacher-led group activities, videos, Lesson 1: Introducing Sprite Lab
discussions, and worksheets. These lessons should not be skipped as
the concepts covered will be reinforced in subsequent lessons.

Lesson 2: Making Sprites


Skill-Building Lessons
Typically involving programming on the computer, these lessons are
designed to give students structured practice with a new tool or
concept. Throughout a skill-building lesson, students will write code to Lesson 3: Sprites in Action
solve puzzles, explore sample programs, make predictions, and apply
what they’ve learned in open-ended contexts. These lessons also
include teacher-led warm-ups, wrap-ups, discussions, video, and
student reflection. Lesson 4: Mini-Project: Virtual Pet

Mini-Projects
These lessons ask students to apply what they have learned by
Example concept chunk with one
creating a more extensive program step-by-step. Mini-projects often
context-setting lesson, two skill-building
include a planning component, where students write their ideas on
lessons, and one mini-project
paper after exploring sample programs. Mini-projects provide students
with instructions and feedback to help them get started, but all choices
are up to the student by the end of the lesson.

Exploratory Lessons Impacts of Computing


These lessons introduce essential concepts to learning computer
science but may not be directly related to other lessons in the course.
These lessons are often self-contained and might even be the only Lesson 18: Designing for Accessibility
lesson in a given concept chunk.

Projects Example concept chunk with one


Projects are open-ended lessons found at the end of each course. exploratory lesson
Projects include planning guides for students.

End of Course Project

Lesson 19: End of Course Project

An end of course project

7
CS Fundamentals Curriculum Guide

Course Overviews
Course A
Course A offers a computer science curriculum for beginning readers, including Kindergarten students. Students will learn
to program using commands like loops and events. The lessons featured in this course also teach students to
meaningfully collaborate with others, investigate different problem-solving techniques, persist in the face of challenging
tasks, and learn about internet safety.

Concept # Lesson Name Overview

The power of the internet allows students to experience and visit places
1 Safety in My Online they might not be able to see in person. On this virtual field trip, kids
Neighborhood can practice staying safe on online adventures.
Digital
Citizenship This skill-building lesson will give students an idea of what to expect
when they head to the computer lab. It begins with a brief discussion
2 Learn to Drag and Drop
introducing them to computer lab manners. Then they will progress into
using a computer to complete online puzzles.

This context-setting lesson brings together teams with a simple task:


get the "flurb" to the fruit. Students will practice writing precise
3 Happy Maps
instructions as they work to translate instructions into the symbols
provided.

In this skill-building lesson, students will develop sequential


algorithms to move a squirrel character from one side of a maze to the
4 Sequencing with Scrat
acorn on the other side. To do this, they will stack code blocks together
Sequencing
in a linear sequence.

In this skill-building lesson, students will continue to develop


5 Programming with Scrat
sequential algorithms.

In this skill-building lesson, students will use their newfound


Programming with Rey
6 programming skills in more complicated ways to navigate a tricky
and BB-8
course with the Star Wars character BB-8.

This context-setting lesson revisits Happy Maps. This time, students


7 Happy Loops
will use loops to solve bigger, longer puzzles with their code.

In this skill-building lesson, students will practice loops in


8 Loops with Scrat programming puzzles where the goal is to help the squirrel reach the
Loops
acorn.

In this skill-building lesson, students continue learning the concept of


9 Loops with Laurel loops. Here, students use loops to collect treasure in open cave
spaces.

8
CS Fundamentals Curriculum Guide

In this skill-building lesson, students learn to draw images by looping


Loops
10 Ocean Scene with Loops simple sequences of instructions. Here, loops are creating patterns. At
(cont.)
the end of this lesson, students will create their own images.

In this context-setting lesson, the class will experience the concept of


11 The Big Event Jr. events through a game where they move or shout when you press
buttons on a giant remote.
Events
In this mini-project, students will use events in Play Lab and apply all
Mini-Project: On the Move
12 of the coding skills they've learned to create an animated game. It's
with Play Lab
time to get creative and make a story in the Play Lab!

In this project lesson, students apply what they have learned about
Project 13 End of Course Project
sequencing and loops with the Artist.

9
CS Fundamentals Curriculum Guide

Course B
We developed Course B with first graders in mind. While the concepts in Course B parallel those in Course A, students
learn more sophisticated unplugged activities and work through a greater variety of puzzles. Students will learn the basics
of programming, collaboration techniques, investigation and critical thinking skills, persistence in the face of difficulty, and
internet safety. At the end of this course, students create games in the Play Lab programming environment.

Concept
# Lesson Name Description
Chunk

Students learn that the information they share online leaves a digital
Digital
1 footprint or "trail." Students compare different trails and think critically
Citizenship Digital Trails
about what kinds of information they want to leave behind.

Students will program their classmates to step carefully around a


2 Move It, Move It
large grid on the floor in this context-setting lesson.

In this skill-building lesson, students will develop sequential


Sequencing with algorithms to move a bird from one side of a maze to the pig on the
3
Angry Birds other side. To do this, they will stack code blocks together in a linear
sequence.
Sequencing
Programming with In this skill-building lesson, students will continue to develop
4
Angry Birds sequential algorithms.

Students will apply the programming concepts that they have learned
Programming with to the Harvester environment in this skill-building lesson. Students
5
Harvester will continue to develop sequential algorithm skills and start using the
debugging process.

In this context-setting lesson, students will learn to use loops to


6 Getting Loopy more easily communicate instructions by looking at the repeated
patterns of a dance.

In this skill-building lesson, students will help the harvester collect


7 Loops with Harvester
crops by using loops.

Loops In this skill-building lesson, students continue learning the concept


8 Loops with Laurel of loops. Here, Laurel the Adventurer uses loops to collect treasure
in open cave spaces.

In this skill-building lesson, students learn to draw images by


Drawing Gardens with
9 looping simple sequences of instructions. Here, students use loops
Loops
to create patterns.

In this exploratory lesson, students empathize with several fictional


Impacts of
10 The Right App smartphone users to help them find the “right app” that addresses
Computing
their needs.

10
CS Fundamentals Curriculum Guide

In this context-setting lesson, the class will experience the concept


11 The Big Event Jr. of events through a game where they move or shout when you press
buttons on a giant remote.
Events
In this mini-project, students will have the opportunity to learn how
Mini-Project: A Royal
12 to use events in Play Lab and apply all of the coding skills that
Battle with Events
they've learned to create an animated game.

In this project lesson, students apply what they have learned about
Project 13 End of Course Project
sequencing and events in an open-ended project with Play Lab.

11
CS Fundamentals Curriculum Guide

Course C
We developed Course C for students in second grade. Students will create programs with sequencing, loops, and events.
They will investigate problem-solving techniques and develop strategies for building positive communities both online and
offline. By the end of the course, students will create interactive games that they can share.

Concept
# Lesson Name Description
Chunk

The internet is filled with all kinds of interesting people, but sometimes, some of
Digital them can be mean to each other. With this role play, help your students
1 Putting a STOP to
Citizenship Online Meanness
understand why it's often easier to be mean online than in person and how to
deal with online meanness when they see it.

In this context-setting lesson, students will use a set of symbols to instruct a


2 My Robotic Friends Jr. "robot" to stack cups in different patterns. Students will take turns participating
as the robot, responding only to the algorithm defined by their peers.
In this skill-building lesson, students will develop sequential algorithms to
Programming with move a bird from one side of a maze to the pig on the other side. To do this,
3
Angry Birds they will stack code blocks together in a linear sequence, making them move
straight, turn left, or turn right.
In this skill-building lesson, students will encounter pre-written code that
Sequencing 4 Debugging in Maze contains mistakes. They will need to step through the existing code to identify
errors.
In this skill-building lesson, students will continue to develop their
Collecting Treasure understanding of algorithms and debugging. With a new character, Laurel the
5
with Laurel Adventurer, students will create sequential algorithms to get Laurel to pick up
treasure as she walks along a path.
Creating Art with In this skill-building lesson, students will take control of the Artist to complete
6
Code drawings on the screen.

My Loopy Robotic This context-setting lesson builds on the initial "My Robotic Friends" activity,
7
Friends Jr. featuring larger and more complicated designs.
Loops with Rey and This skill-building lesson has students using loops to help the Star Wars
8
BB-8 character BB-8 efficiently traverse a maze.
Loops
Harvesting Crops with Students loop new actions to help the harvester collect multiple veggies
9
Loops growing in large bunches in this skill-building lesson.
Mini-Project: Sticker This mini-project lesson builds on the understanding of loops from previous
10
Art lessons. Students will create unique artwork with the Artist.

In this context-setting lesson, students will learn that events are a great way
11 The Big Event
to add flexibility to a pre-written algorithm.
This lesson combines skill-building around events with a mini-project where
Events 12 Build a Flappy Game students get to build their own Flappy Bird game. At the end of the lesson,
students will customize their game by changing the visuals or rules.
Mini-Project: Chase This lesson combines skill-building around events with a mini-project where
13
Game students get to build their own animated game.

Students will collect data from a Play Lab project and visualize it using different
Data 14 Picturing Data
graphs in this exploratory lesson.

12
CS Fundamentals Curriculum Guide

This exploratory lesson introduces the concept of binary which is how


Data (cont.) 15 Binary Bracelets
computers today store all sorts of information.

This project lesson takes students through designing, developing, and


Project 16 End of Course Project
showcasing new Play Lab projects.

13
CS Fundamentals Curriculum Guide

Course D
We created course D for students in third grade. The course begins with a review of the concepts found in earlier
courses, including loops and events. Afterward, students will develop their understanding of algorithms, nested loops,
while loops, conditionals, and more.

Concept
# Lesson Name Description
Chunk

Stronger, more secure online passwords are a good idea for everyone.
Digital
1 Use the tips in this lesson to help kids make passwords that are both
Citizenship Password Power-Up
secure and memorable.

In this context-setting lesson, students use symbols to instruct each


Graph Paper other to color squares on graph paper. By "programming" one another to
2
Programming draw pictures, students get an opportunity to experience some of the
core concepts of programming in a fun and accessible way.
Introduction to Online In this skill-building lesson, students will practice their sequencing and
3
Puzzles debugging skills in maze puzzles.
Sequencing This context-setting lesson will begin with a short lesson on debugging
and persistence, then will quickly move to a race against the clock as
4 Relay Programming
students break into teams and work together to write a program one
instruction at a time.
In this skill-building lesson, students will practice debugging in the
5 Debugging with Laurel "collector" environment. Students will get to practice reading and editing
code to fix puzzles with simple algorithms, loops, and nested loops.

In this context-setting/skill-building lesson, students will learn what


events are and how programmers use them in video games. Students
6 Events in Bounce
will build a game that they can customize with different speeds and
sounds.
Events
Build a Star Wars In this skill-building lesson, students will practice using events to build a
7
Game game that they can share.
In this skill-building lesson, students will program an interactive dance
8 Dance Party
party.

This context-setting / skill-building lesson will quickly introduce


9 Loops in Ice Age
students to loops.
This skill-building lesson builds on the understanding of loops from the
Drawing Shapes with
Loops 10 previous lesson and doubles as a debugging exercise for extra
Loops
problem-solving practice.
In this skill-building lesson, students will learn how to program a loop
11 Nested Loops in Maze
inside of another loop.

In this context-setting lesson, students will write conditional (if/else)


Conditionals 12 Conditionals with Cards
statements to state the rules of simple card games.

14
CS Fundamentals Curriculum Guide

This skill-building lesson gives students the chance to practice


Looking Ahead with
13 concepts that they have learned up to this point and get their first
Minecraft
experience with conditionals!
In this skill-building lesson, your class will continue to code with
14 If/Else with Bee conditionals, allowing them to write code that functions differently
depending on the specific conditions the program encounters.
Conditionals
(cont.) In this skill-building lesson, students will be working to fill holes and dig
dirt in Farmer, but they will not know the size of the holes or the height of
15 While Loops in Farmer
the mounds of dirt. To solve these puzzles, students will use a new kind
of loop.
In this skill-building lesson, students will learn about until loops.
16 Until Loops in Maze Students will build programs that have the main character repeat actions
until they reach their desired stopping point.

This project lesson takes students through the process of designing,


Project 17 End of Course Project
developing, and showcasing new projects!

15
CS Fundamentals Curriculum Guide

Course E
We created Course E for students in fourth grade. The course begins with an introduction to the Sprite Lab programming
tool. Students will learn to make fun, interactive projects that reinforce what they’ll learn about online safety. Following
these lessons, students will engage in more complex coding. Students will learn about nested loops, functions, and
conditionals. By the end of the course, students will combine these concepts to solve challenging puzzles. The course
ends with an open-ended project where students create a game or drawing.

Concept
# Lesson Name Description
Chunk

In this context-setting lesson, students will play a game intended to get them
1 Follow the Algorithm
thinking about sequential instructions.
Swimming Fish with Students will program a simple animated underwater scene in this
Sprites 2
Sprite Lab skill-building lesson.
Alien Dance Party with Students will use events to make sprites move around the screen based on
3
Sprite Lab user input in this skill-building lesson.
Online tools are empowering for kids, and they also come with big
4 Be a Super Digital responsibilities. Show your students appropriate ways to take action and
Citizen resolve conflicts, from being upstanders to helping others in need.
It's in our students' nature to share and connect with others. Help your
5 Private and Personal students learn the difference between what's personal and what's best left
Digital Information private.
Citizenship Students will apply their understanding of sharing personal and private
6 Mini-Project: About Me
information on the web by creating an interactive poster in this mini-project.
This exploratory lesson helps students understand the challenges and
7 Digital Sharing benefits of respecting ownership and copyright, particularly in digital
environments.
This context-setting lesson shifts the focus from Sprite Lab to the Artist, a
8 Drawing with Loops
new tool that students will explore throughout the remainder of the course.
In this skill-building lesson, students will create intricate designs using the
Fancy Shapes using
9 Artist. The lesson ends with an opportunity for students to create their own
Nested Loops Nested Loops
designs.
Mini-Project: Design a This mini-project lesson takes students through a series of exercises to
10
Snowflake create snowflake images using characters from the Frozen movies.
This context-setting lesson will help students understand why combining
11 Songwriting
chunks of code into functions can be a helpful practice.
Functions In this skill-building lesson, students will begin to understand how functions
12 Functions in Minecraft
can be helpful!
13 Functions with Artist In this skill-building lesson, students will use functions with the Artist.
In this context-setting lesson, students will get the chance to practice
Conditionals in Minecraft:
14 content that they have learned up to this point, as well as getting a sneak
Voyage Aquatic
Conditionals peek at conditionals!
Conditionals with the This skill-building lesson focuses on a new type of programming puzzle,
15
Farmer featuring a farmer who needs to prepare her fields for planting crops.

16
CS Fundamentals Curriculum Guide

Conditionals In this skill-building lesson, students will use conditionals with functions to
16 Functions with Harvester
(cont.) harvest crops in Harvester.
In this exploratory lesson, students will learn about accessibility and the
Impacts of Designing for
17 value of empathy through brainstorming and designing accessible solutions
Computing Accessibility
for hypothetical apps.
This project lesson takes students through the process of designing,
Project 18 End of Course Project
developing, and showcasing new projects!

17
CS Fundamentals Curriculum Guide

Course F
We created Course F for students in the fifth grade. The course begins by looking at how users make choices in the apps
they use. Students then learn to make a variety of Sprite Lab apps that also offer choices for the user. In the later lessons
in the course, students will learn more advanced concepts, including variables and “for” loops. Students are given greater
autonomy and more choices throughout this course. By the end of the course, students will have created interactive
projects and artwork to share with their friends and family.

Concept
# Lesson Name Description
Chunk

In this context-setting lesson, students will discuss the role of computers


and technology in their lives, focusing on how apps and tools give users
1 Introducing Sprite Lab
choices about how to use them. Students will also explore apps similar to
those they’ll create themselves later on.
In this skill-building lesson, students will work through a series of
programming levels on the computer, finishing with an open-ended “free
2 Making Sprites play” task where they can build whatever they like. Students will write
programs and learn about the two concepts at the heart of Sprite Lab: sprites
and behaviors.
Sprites
In this skill-building lesson, students will work through a series of
programming levels on the computer, finishing with an open-ended “free
3 Sprites in Action
play” task where they can build whatever they like. Students will write
programs that respond to timed events and user input.
Students will create an interactive Virtual Pet that looks and behaves how
they wish in this mini-project lesson. Students will use Sprite Lab's
4 Mini-Project: Virtual Pet "Costumes" tool to customize their pet's appearance. They will then use
events, behaviors, and other concepts they have learned to bring their
project to life.

As kids grow, they'll naturally start to communicate more online. But some of
Digital what they see could make them feel hurt, sad, angry, or even fearful. Help
5
Citizenship The Power of Words your students build empathy for others and learn strategies to use when
confronted with cyberbullying.

In this context-setting lesson, students will use fill-in-the-blank stories


6 Blank Space Stories (similar to Mad Libs®) as a context for understanding how computers take
and store input from a user, then use it later as a program runs.
In this skill-building lesson, students will get practice with variables in Sprite
7 Text and Prompts
Lab.
Students will apply their new skills with variables to one of three open-ended
Mini-Project: User Input
8 mini-projects. Students will explore sample programs, create a plan for their
Programs
Variables own project, and program it from scratch.
This skill-building lesson shifts the focus from Sprite Lab to the Artist, a new
9 Drawing with Loops
tool that students will explore throughout the remainder of the course.

In this skill-building lesson, students will explore the creation of repetitive


designs using variables in the Artist environment. Students will learn how
Using Variables with the
10 variables make code easier to write and easier to read. After guided puzzles,
Artist
students will end in a free play level to show what they have learned and
create new designs.

18
CS Fundamentals Curriculum Guide

Programming with the In this skill-building lesson, students will be encouraged to figure out how
11
Bee minor changes in loops will affect their program.
Variables
This skill-building lesson will help illustrate how variables can make
(cont.)
12 Variables with the Bee programs more dynamic by allowing values to change while the code is
running.

In this skill-building lesson, students will use loops with a powerful, new
13 For Loop Fun
structure.
This skill-building lesson focuses on “for” loops and using an incrementing
For Loops 14 For Loops with the Bee
variable to solve more complicated puzzles.
In this skill-building lesson, students practice “for” loops with Artist.
15 For Loops with Artist
Students will complete puzzles to create complex designs and unique art.

In this context-setting lesson, students will run and collect data from a
simple simulation in Sprite Lab. After running the simulation multiple times,
16 Simulating Experiments
students will have an opportunity to predict how changing a variable in the
simulation might impact the outcome and test that hypothesis.
In this skill-building lesson, students will model an outbreak simulator.
Data & 17 Outbreak Students will study the simulation to understand how a virus can spread and
Simulations how to slow it down.
In this exploratory lesson, students will train a machine learning model by
18 AI for Oceans
classifying fish and other objects.
Students will pretend to flow through the internet while learning about
19 The Internet
connections, URLs, IP Addresses, and DNS in this exploratory lesson.

This project lesson takes students through the process of designing,


Project 19 End of Course Project
developing, and showcasing new projects!

19
CS Fundamentals Curriculum Guide

Learning Tools
Maze/Collector Puzzles
Where it’s located in the curriculum: All Courses

Description
Recognizable by the 8x8 square grid, these puzzles ask students to move an on-screen character to complete a specified
goal, sometimes collecting objects or performing other actions along the way. These levels feature characters from
popular media franchises and others that are unique to Code.org.

Debugging Feature - Step Button

Most Maze and Collector puzzles include a step button, which allows you to step through a program block by block to see
what happens each step of the way. This debugging feature enables students to slow their programs down, making it
easier to spot coding mistakes.

The Artist
Where it’s located in the curriculum: All Courses

Description
Students can program the Artist character to move and turn over a blank canvas, creating drawings along the way.
Puzzles require persistence as students work to re-create an image. Free play levels allow you to draw whatever you
want. Creativity is encouraged!

Debugging Feature - Speed Slider

The Artist includes a speed slider, which controls how fast the drawing animation happens on the screen. This debugging
feature allows students to slow their programs down, making it easier to spot coding mistakes.

20
CS Fundamentals Curriculum Guide

Learning Tools
Play Lab
Where it’s located in the curriculum: Courses A, B, C

Description
Featuring a diverse cast of fun actors, Play Lab allows students to create their own stories and simple games. Actors can
speak, move and even express emotions. Play Lab projects are interactive, controlled by the user’s keyboard and mouse.

Sprite Lab
Where it’s located in the curriculum: Courses E, F

Description
Sprite Lab is the most open-ended programming tool found in CS Fundamentals. It enables students to create fun
animations in no time but is also a powerful tool for creating everything from interactive posters to games to simulations.

Other Online Tools


Where they’re located in the curriculum: Courses C, D, E, F

Description
Created as part of Code.org’s Hour of Code tutorials, more unique tools are found in various lessons across CS
Fundamentals. These tools allow students to explore everything from making games to the basics of machine learning
and artificial intelligence.

21
CS Fundamentals Curriculum Guide

Lesson Structure
Unplugged and Plugged Activities
We refer to activities where students are not working on a computer as “unplugged,” while activities that require
computers are called “plugged.” Most CS Fundamentals lessons offer a mix of unplugged and plugged activities. Some
context-setting or exploratory lessons are exclusively unplugged.

Unplugged Activities
Unplugged activities are kinesthetic opportunities for students to digest
concepts in approachable ways. Often, an unplugged activity sets the stage
for a subsequent activity or lesson.
Unplugged activities are beneficial for building and maintaining a
collaborative classroom environment, and they are helpful touchstone
experiences you can refer to when introducing more abstract concepts.
Unplugged activities provide a shared and concrete context that the teacher
references during subsequent lessons.

Tips for Effectively Teaching Unplugged Activities:


● Don’t skip these activities! They’re often an essential introduction to
new concepts.
● Teach lessons within a concept chunk in the order they are written.
● Help students identify the computer science concepts underlying the activities.
● Refer back to unplugged activities to reinforce concepts in subsequent lessons.

Plugged Activities
“Plugged” refers to any activity that students complete on the computer. Plugged activities are featured heavily in
skill-building lessons and projects but can show up in context-setting lessons and standalone lessons too!

Tips for Effectively Teaching Plugged Activities


● Rather than leading these activities from the front of the classroom, take an active role in supporting students
directly. Check their progress and help them develop the practices that will make them strong computer scientists.
● Use warm-ups, wrap-ups, and suggested check-ins to ensure students are synthesizing concepts.
● Encourage students to work with one another to maintain the collaborative classroom culture more easily
established during unplugged activities.

Components of a Lesson
All lessons include a Warm-Up, Main Activity, and Wrap Up. Any of these activities could be on or off the computer.

Warm-Up
Each lesson begins with an engaging warm-up activity. These short activities are usually unplugged and serve to
introduce (or review) concepts, set context for learning, and engage students’ interest.
Main Activity
The main activity is the longest part of the lesson and can contain both plugged and unplugged activities.
Wrap Up
Each lesson ends with a wrap-up activity designed to help the students reflect, share, and connect.

When students are on the computer, plugged activities look like a


series of bubbles, called levels, that students complete in order.
You can read about the different types of levels found in CS Levels
Fundamentals below.

22
CS Fundamentals Curriculum Guide

Types of Levels
When looking at the detailed view of a course page (e.g., studio.code.org/s/coursea), you will notice several different icons
representing different types of levels within a given lesson.

These levels feature Code.org tools, including programming puzzles and environments for creating
projects. An instructions panel appears on these levels to explain any new content introduced in
the level and provide a checklist of tasks to complete. Teachers can review their students’ code.

All CS Fundamentals courses feature great videos for students designed to introduce tools or to
help explain new concepts. Students can watch the videos together as a class or individually on
their computers.

Choice levels show up in Course F and provide a menu of additional online levels for students to
complete. Students must do at least one sub-level to complete the activity but may work through
as many as they (or you) like.`

Lesson Extras are an optional area at the end of each lesson where students can revisit concepts
they learned previously by completing extra challenges or open-ended tasks.

How do these levels show up in a lesson?


Alongside a level’s icon are labels that indicate the purpose of that level within the lesson. These labels can help you
develop expectations for students or think about your role in teaching.

Skill Building
Students develop skills individually or in pairs by completing targeted Lesson 1: Welcome to Computer
tasks in these levels. You can support them by helping them to develop Science!
Students will learn the basics of computer science.
strong coding practices.
Prediction
Practice
Longer skill-building lessons may also include practice levels. These
levels provide students with multiple opportunities to practice skills Video: Intro to Programming
learned in the previous levels.

Exploration Exploration
These levels present students with sample programs that use the
concepts they are about to learn or model the projects they are about to
create. These are best completed in pairs or as a whole-class discussion. Skill Building

Prediction
These levels also present pre-written code, but students must answer a
question before running the code. These levels are not intended to be
used for assessment but to encourage careful reading of the code.
Practice
Challenge
Challenge levels test students’ persistence and can highlight
Free Play
misconceptions. In case it is needed, all challenge puzzles have a “Skip”
button which allows students to move on.

Free Play Sample lesson with various level types.


These levels provided a space to get creative at the end of a lesson, with
no right or wrong answers.

Mini-Projects
In Mini-Project Lessons, these are the levels where students build their
more extensive programs.

23
CS Fundamentals Curriculum Guide

Teaching and Learning Strategies


The following teaching and learning strategies for CS Fundamentals are used repeatedly in many different lessons.

Lead Learner
What is it?
As the lead learner, your role shifts from being the source of
knowledge to being a leader in seeking knowledge. The lead
learner’s mantra is: “I may not know the answer, but I know that
together we can figure it out.” The lead learner’s philosophy is that
you don’t have to be an expert on everything; you can start
teaching CS Fundamentals knowing what you already know and
learn alongside your students. Lead learners use modeling
frequently and use metacognition, thinking about your thinking,
often.

How does it connect to the curriculum?


One of the Code.org curriculum values is developing teachers who
are new to computer science. The curriculum and tools make it
easy to create an engaging and relevant class that helps students uncover and develop the knowledge they need. A
teacher who embraces the lead learner role can lead the course without knowing all of the answers.

Acting as the lead learner is an act of empathy toward your students and the challenges they face in learning material for
the first time. A critical job in the CS Fundamentals classroom is to model excitement about investigating how things work
by asking motivating questions about why things work the way they do and why they are the way they are. With your
guidance, students will learn how to hypothesize, ask peers, test, evaluate, and refine solutions collaboratively.

How do I use it?


● Allow students to dive into an activity without front-loading the content first.
● Encourage students to rely on each other for support.
● Don’t answer right away, even if you know it.
● Feel open to making mistakes in front of students to see it is part of the learning process.
● Ask students questions that direct their attention toward the issue to investigate without giving away what they
need to change.
● Model the steps you would go through as a learner of a new subject. Explain the different questions you ask
yourself along the way and the ways you go about finding answers.

24
CS Fundamentals Curriculum Guide

Pair Programming
What is it?
Pair programming is a technique in which two programmers work together on one computer. The “driver” writes code
while the “navigator” directs the design and setup of the code. The two programmers switch roles often. The benefits of
pair programming include the following:
● Improvements to computer science enrollment, retention, and student performance
● Increasing students' confidence
● Developing students' critical thinking skills
● Experience with a "real world" working environment

How does it connect to the curriculum?


In CS Fundamentals, there are many lessons on the computer during which students develop programming skills. Pair
programming can foster a sense of camaraderie and collaboration and promote diversity in the classroom by reducing the
"confidence gap" between female and male students while increasing all students’ programming confidence.

How do I use it?


To get students pair programming:
1. Form pairs.
2. Give each pair one computer.
3. Decide upon initial roles.
4. Have students start working.
5. Ensure that students switch roles at regular intervals
(every 3 to 5 minutes).
6. Ensure that navigators remain active participants.

It can be hard to introduce pair programming after students


have worked individually for a while, so we recommend that
teachers start pair programming in the first few lessons. Like
any other classroom technique, you may not want to use this
all the time as different types of learners will respond differently to working in this context. Once you have established pair
programming as a practice early on, it will be easier to come back to later.

Resources
Code.org also has a feature to help both students get “credit” on their accounts for the work they do together. Check out
the blog on Pair Programming: https://goo.gl/MorPnx.

Videos:
● For Teachers: youtu.be/sxToW3ixrwo
● For Students: youtu.be/vgkahOzFH2Q

The National Center for Women & Information Technology (NCWIT) has a great resource about pair programming
benefits. Check it out at www.ncwit.org/resources/pair-programming-box-power-collaborative-learning.

25
CS Fundamentals Curriculum Guide

Authentic Choice
What is it?
Authentic choice is the practice of allowing students to decide on the focus of their creation when they are working on a
project. The central point is to enable students to work on something that interests them.

How does it connect to the curriculum?


In the curriculum, we give students many opportunities to work on projects that we hope will feel personally relevant.
Whether it be a free-play level at the end of a lesson or a more extended project, every student should get ample
opportunity to develop their creations.

How do I use it?


● Encourage students to find personally relevant contexts
for the work they do.
● Keep the projects open to students’ interests.

Journaling
What is it?
In CS Fundamentals, students are encouraged to keep a journal
nearby to write down thoughts and answer questions.

How does it connect to the curriculum?


All lessons in CS Fundamentals include reflection prompts, and journals are a great place to have students put down
answers. Journals are also helpful as scratch paper for building programs, debugging, and strategizing.

How do I use it?


● Encourage students to keep their journals beside them at all times when coding.
● Have students copy down answers to puzzles that they might need in future levels.
● Ask students to draw or describe emotions at the top of the pages to identify their feelings about concepts.
● End each lesson with a question that helps students reflect on their learning.

26
CS Fundamentals Curriculum Guide

Student Practices
We developed CS Fundamentals around a core set of student practices. These student practices are the high-level skills
and dispositions we want students to develop.

Problem Solving
● Use a structured problem-solving process to help solve new problems.
● View challenges as solvable problems.
● Break down larger problems into smaller components.
Persistence
● Value and expect mistakes as a natural and productive part of problem-solving.
● Continue working towards solutions despite setbacks.
● Iterate and continue to improve partial solutions.
● Keep track of elements that worked and elements that did not to avoid repeating mistakes.
Creativity
● Incorporate your interests or ideas into your work.
● Experiment with new ideas and consider multiple possible approaches.
● Extend or build upon the ideas and projects of others.
Collaboration
● Work with others to develop solutions that incorporate all contributors.
● Mediate disagreements and help teammates agree on a solution.
● Actively contribute to the success of group projects.
Communication
● Structure your work so that others can easily understand it.
● Consider the perspective and background of your audience when presenting your work.
● Provide and accept constructive feedback to improve your work.

27
CS Fundamentals Curriculum Guide

Debugging
Everyone gets bugs! Therefore, debugging is an essential skill all students should develop that builds on the student
practices discussed above. Students can become frustrated if they don’t know how to find and fix errors in their code.
Help keep students moving by implementing both active and reflective debugging strategies in your classroom.

Active Debugging
Writing long chunks of code without pausing to read or test can lead to hard-to-find errors. To prevent this, we suggest
implementing active debugging.

Active debugging describes the practice of debugging while coding. Students should take time to read, process, and test
small pieces of code that they have just written during coding exercises. The practice can be tremendously helpful as
students write more complex programs.

A practical student-facing guide to active debugging exists in our Debugging Guide, shown below. This guide lists active
debugging strategies for students. We suggest making this document available to students as a classroom poster or
individual handout, then referring to it as students progress through your course.

Guide to Debugging

Reflective Debugging
While students are working, you will notice the same issues appearing again and again. Some students can quickly move
through these issues, while others are left behind. Even with active debugging practices in place, these experiences can
be disheartening for any teacher. However, they can inspire a productive reflective debugging session at some point
during the class.

Active debugging is how individual students can find and fix bugs. On the other hand, reflective debugging is when
students participate in debugging as an entire class. ‘Bug Talks’ and keeping a ‘bug tracker’ are two ways to implement
reflective debugging in your classroom.

28
CS Fundamentals Curriculum Guide

Bug Talks
Bug Talks are very similar to “Number Talks” from the world of mathematics education. Teachers can use Bug Talks
before, during, or after class to help students clear up misconceptions that manifest as common bugs. A typical Bug Talk
should last 5-10 minutes and might proceed as follows:

1. A problem is displayed for students to solve on their own, quietly. The problem should be small enough that they
can solve it mentally or with scratch paper. Students who could solve the problem very quickly should try coming
up with more than one solution. An example problem might be a buggy solution to a puzzle from the current
lesson.
2. After having time to work alone, students can share their ideas with a neighbor.
3. After sharing with a neighbor, students raise their hands to share answers with the class.
4. The teacher neutrally records as many answers as possible on the board, incrementing duplicates with tally
marks.
5. The teacher calls on students to explain the reasoning behind their answers. Students can respond to each
other’s arguments with sentence starters like, “I agree/disagree, because…”.
6. Finally, students discuss and vote on which answer they collectively believe is the best solution.

To conclude a Bug Talk, teachers should reiterate why the chosen strategy works best, including any unmentioned points
the class might not have brought up.

Bug Tracker
A Bug Tracker is a poster that can help your students name and understand common problems they encounter while
coding. Throughout a CS Fundamentals course, students collectively drive the development of their class’ Bug Tracker
through teacher-led discussions about coding and problem-solving.

Small misconceptions can lead to big problems when learning to code. You can help students clear
these misconceptions by facilitating class discussions about specific instances of bugs they catch.
During these discussions, your Bug Tracker works as a class-sourced running record that
Why Create a generalizes those instances into more widely applicable and accurate coding concepts.
Bug Tracker?
In addition to identifying and describing common bugs, students should share debugging strategies
on your Bug Tracker as well. This cooperative exchange of knowledge can help empower students to
persist together through even the toughest challenges.

When Should I To ensure your class develops the foundation of documenting bugs and debugging as early as
Introduce a Bug possible, the introduction of the Bug Tracker should coincide with the first programming lesson, then
Tracker? be revisited throughout the course as needed.

You may want to discuss bugs students have found at the beginning or end of class, or even
potentially during class if it seems many students are encountering the same types of problems.
How Do I Use
Encourage students to refer back to the Bug Tracker while they work. You can challenge your
the Bug
students to look for the bugs they spotted as they work. Have them tell a neighbor when they see
Tracker?
one. Can they come up with strategies to get past it? Ask students to hold on to new bugs if they
happen to find them. They can share their bugs during the next Bug Talk.

What “Bugs” At least at the beginning of your course, you might hear students suggest adding, “The computer
Might Appear won’t turn on,” or “The Internet is slow” to the class’ Bug Tracker. Discuss the meaning of “coding”
on a Bug and “debugging.” Relating these CS-specific concepts to other difficulties students experience
Tracker? (technical and non-technical) is certainly worthy of discussion.

29
CS Fundamentals Curriculum Guide

Implementation and Planning


This section offers suggestions for implementing a CS Fundamentals course in an elementary school classroom.

Lesson Pacing
In general, all students should move from lesson to lesson at a pace set by the teacher. Keeping the class together is
easiest in teacher-led lessons and projects. Conversely, skill-building lessons can be challenging as students complete
many of the levels at their own pace. It’s important to know when students are ready to move on and make sure all
students are working on something appropriate for them. Rather than having some students move ahead to different
lessons or concepts, utilize the strategies below to differentiate instruction within a lesson.

Differentiation during Skill-Building Lessons: These lessons contain optional lesson extras and challenge puzzles that
students can choose to skip. If a student skips an optional puzzle but moves through the rest of the lesson quickly,
encourage them to go back and try it while others catch up. If students struggle to finish every level, permit them to skip
the optional challenges to keep them on the same lessons as their peers. To determine if your class is ready for the next
lesson, look at their progress for the levels marked “skill-building,” as this is where new concepts get introduced. Use your
judgment about when students are ready to move on to the application lessons or the next concept chunk.

Differentiation in Mini-Project and Project Lessons: These activities are among the best ways for students to
demonstrate their learning. They are also a great place to encourage creativity and give students space to apply the
concepts they’ve learned in new ways. Due to the more open-ended nature of these lessons, it’s possible to pass some
levels just by clicking “Finish.” If some students move through an open-ended activity quickly, help them brainstorm ideas
or encourage them to get feedback from peers.

Extra Projects: In addition to the open-ended project lesson at the end of most courses, it is also possible for students to
create a new project at any time by clicking the “Create” button in the top right corner of Code Studio. If a student has
already shown a good understanding of a concept, consider having them build a new project using what they know rather
than just moving onto the next lesson ahead of the class.

Scheduling The Lessons


The simplest and easiest way to schedule a CS Fundamentals lesson is to dedicate one 45-minute period to each lesson.
However, if this does not seem realistic for your situation, it is possible to teach the courses, even with less time. If you
need to shorten things, be sure to end with an experience in which students get to take ownership of something they
make themselves, such as a free-play level or a mini-project.

30
CS Fundamentals Curriculum Guide

Approach to Teaching in Common Classroom Scenarios


Here are implementation tips for typical situations in elementary schools:

Everyone doing the lesson together


Keeping the class together on the same lesson helps build community and prevents struggling students from feeling left
behind. Make sure students feel empowered to make creative choices within a lesson and consider what you want to do
with students who finish early. See the “lesson pacing” section above for more details and tips.

Pair programming
Even if you have 1:1 computers, consider grouping students up for pair programming. Pair programming provides both
partners with insight into their peers’ problem-solving processes while helping them develop collaboration and
communication skills.

Computer Labs
If your class meets in a computer lab, look for rooms to “visit” for unplugged lessons (like the library or the gym). Review
the lesson plans in advance to determine space requirements for unplugged activities or other unique needs.

Limited Devices
Some classrooms have a small number of devices set up in one area for activity centers. If students need to complete
skill-building lessons on their own, consider doing any context-setting in advance with the whole class.

Limited time
If you are short on time, choose a concept and teach it thoroughly, and be sure to end the unit with an open-ended task
such as a project, mini-project, or free-play level. In elementary school, the main goal is to teach students that they can
learn computer science.

Teaching CS Fundamentals Remotely


We designed the lessons in CS Fundamentals for use in a classroom with an actively engaged teacher, but many lessons
can adapt well to at-home learning. Please see the Tech Requirements section on the next page for more information.

31
CS Fundamentals Curriculum Guide

Tech Requirements and Required Materials


Technical Requirements

The course requires and assumes that each student has access to an internet-connected computer every day in class.
Each computer must have a modern web browser installed. The course tools and resources (lesson plans, teacher
dashboard, videos, student tools, programming environment, etc.) are online and accessible through a web browser. For
more information about tech setup, go to: code.org/educate/it.

While the course features many “unplugged” activities away from the computer, daily access to a computer is essential for
every student. PDFs of handouts, worksheets, and readings are available on the course website.

Required Materials / Supplies


Many lessons have handouts that guide students through activities. These resources can be printed or assigned digitally.

Some lessons call for typical classroom supplies and manipulatives. See below for information on specific lessons:

Course Lesson Materials


My Robotic Friends Jr. Plastic cups (10/group of 2-3)*
Markers. Optional – 18 black/18 white beads, one pipe cleaner
Course C Binary Bracelets
per student
My Loopy Robotic Friends Jr. Paper cups (20/group of 4)
Dance Party Optional - Headphones (1/student)
Course D Conditionals with Cards Deck of cards or something similar (1/group of 4-6)*
Course E Digital Sharing Smartphone or tablet

The Power of Words Colored Pencils, string the length of the classroom

Blank Space Stories Envelopes (1-4/group of 2-4)


Course F
For Loop Fun Dice (3 dice/group of 2-4)*

* You can easily re-use these items between multiple classes

Getting Help
The curriculum is completely free for anyone to teach anywhere. For
support, click on the question mark in the upper right-hand corner of
the website.

Here, you’ll find our “Help and support” forum, where you can email us
or find how-to articles. You’ll also see a link to our “Teacher
community” forums where you can connect to other teachers for
support, teaching tips, or best practices.

When you’re in a puzzle, you’ll see an additional “Report a problem”


link for that puzzle. Thank you for helping us find and fix any issues.

32
CS Fundamentals Curriculum Guide

Thanks and Acknowledgements


Launched in 2013, Code.org is a non-profit organization dedicated to expanding access to computer science and
increasing participation by women and underrepresented students of color. Our vision is that every student in every school
has the opportunity to learn computer science. We believe computer science should be part of the core curriculum,
alongside other courses such as English language arts, mathematics, or science.

Code.org increases diversity in computer science by reaching students of all backgrounds where they are — at their
skill-level, in their schools, and in ways that inspire them to keep learning. Read about our efforts to increase diversity in
computer science at code.org/diversity. To support this vision of diverse and meaningful access to computer science,
Code.org has developed a full pathway of learning opportunities that span K-12. The CS Fundamentals curriculum is
specifically designed to meet the needs of elementary school students and teachers along that pathway.

As always, it is thanks to our generous donors that we were able to develop and offer this curriculum at no cost to schools,
teachers, or students: Microsoft, Infosys Foundation USA, Facebook, Omidyar Network, Google, Ballmer Family Giving,
Ali and Hadi Partovi, Bill Gates, The Bill and Melinda Gates Foundation, BlackRock, Jeff Bezos, John and Ann Doerr,
Mark Zuckerberg and Priscilla Chan, Quadrivium Foundation, Amazon Web Services, The Marie-Josee and Henry R.
Kravis Foundation, Reid Hoffman, Drew Houston, Salesforce, Sean N. Parker Foundation, Smang Family Foundation,
Verizon.

33
CS Fundamentals Curriculum Guide

Appendix A: Intro Workshop


Model Lesson Handouts
This appendix contains all necessary handouts for lessons that could be explored in the CS Fundamentals Introduction
Workshop, as part of the Code.org Professional Learning Program. If you are a US teacher and you'd like to attend a free
training on our K-5 Computer Science curriculum, you can find links to local workshops by visiting
https://code.org/professional-development-workshops.

Consult the table of contents below for page numbers:

Model Lessons Handouts for Intro Workshops

Workshop Model Lesson Page Number

K-5 and 2-3 C.11 - The Big Event


35
K-1 A.11 - The Big Event Jr.

Note: Model lessons listed in the table use the same handout. The model lesson for the Deep Dive workshop does not
require a handout.

34
CS Fundamentals Curriculum Guide

35
CS Fundamentals Curriculum Guide

Appendix B: Worksheets for


Lesson Implementation
This appendix contains all necessary worksheets for lesson planning sessions for the CS Fundamentals Introduction and
Deep Dive Workshops, as part of the Code.org Professional Learning Program. If you are a US teacher and you'd like to
attend a free training on our K-5 Computer Science curriculum, you can find links to local workshops by visiting
https://code.org/professional-development-workshops.

Consult the table of contents below for page numbers.

Intro Workshop: Lesson Implementation Guides

Lesson Implementation Guide: Context-setting Lesson 37 - 38

Lesson Implementation Guide: Skill-building Lesson 39 - 40

Deep Dive Workshop: Lesson Implementation Process and Guide

Lesson Implementation Process 41

Lesson Implementation Guide 42 - 43

36
CS Fundamentals Curriculum Guide

Intro Workshop
Lesson Implementation Guide: Context-Setting

Course _______________ Lesson ________

Make a Plan

Directions
Use the following as a guide when preparing to implement and teach a CS Fundamentals lesson.

Focus on... Planning


CS Concepts
What CS concept(s) does the lesson
introduce to students and how?

Building Skills
What skill does the lesson help students
practice and how?

Classroom Routine/Procedure
What classroom routine/procedure is
needed to support classroom
management during the lesson?

37
CS Fundamentals Curriculum Guide

Focus on... Planning

CS Teaching Strategies
When will any of the following be
included during the lesson?
● Lead Learner
● Discovery and Inquiry
● Debugging
● Pair Programming
● Classroom Community (active
learning, communication)

Assessing Student Learning


How will students share their thinking
and demonstrate what they learned?

Equity
How will the lesson be inclusive and
equitable for students?

38
CS Fundamentals Curriculum Guide

Intro Workshop
Lesson Implementation Guide: Skill-Building

Course _______________ Lesson ________

Make a Plan

Directions
Use the following as a guide when preparing to implement and teach a CS Fundamentals lesson.

Focus on... Planning


CS Concepts
What CS concept(s) does the lesson
introduce to students and how?

Building Skills
What skill does the lesson help students
practice and how?

Classroom Routine/Procedure
What classroom routine/procedure is
needed to support classroom
management during the lesson?

39
CS Fundamentals Curriculum Guide

Focus on... Planning

CS Teaching Strategies
When will any of the following be
included during the lesson?
● Lead Learner
● Discovery and Inquiry
● Debugging
● Pair Programming
● Classroom Community (active
learning, communication)

Assessing Student Learning


How will students share their thinking
and demonstrate what they learned?

Equity
How will the lesson be inclusive and
equitable for students?

40
CS Fundamentals Curriculum Guide

Deep Dive Workshop: Lesson Planning Process


Choose a type of lesson.

● Context-setting Lessons:introduce a new concept in a hands-on way


Step 1 ● Skill-building Lessons: practice using a new tool or programming concept
● Mini-Projects:apply what they have learned by creating a more extensive program step-by-step
● Projects: longer lessons on and off the computers for students to make a single, creative project

Choose a course based on the grades you teach:

Step 2 If you teach a single grade, choose the course associated with that grade.
If you teach multiple grades, choose which course to explore today.

Find a lesson to plan for by matching the lesson type and course you chose from Step 1 and 2.

Context-Setting Skill-Building Mini-Projects Exploratory

A.12: On the
Course A A.10: Ocean A.1: Safety in My Online
A.7: Happy Loops Move with Play
Kindergarten Scene with Loops Neighborhood
Lab

B.9: Drawing B.12: A Royal


Course B
B.6: Getting Loopy Gardens with Battle with B.10: The Right App
First Grade
Loops Events

Course C C.7: My Loopy C.9: Harvesting C.13: Chase


C.15: Binary Bracelets
Second Grade Robotic Friends Jr. Crops with Loops Game
Step 3
Course D D.12: Conditionals D.11: Nested D.7*: Build a Star
D.1: Password Power-Up
Third Grade with Cards Loops in Maze Wars Game

Course E E.13: Functions E.10: Design a E.17: Designing for


E.11: Songwriting
Fourth Grade with Artist Snowflake Accessibility

Course F
F.6: Blank Space F.3: Sprites in
Fifth Grade F.4: Virtual Pet F.18: AI for Oceans
Stories Action

If you are familiar with the types of lessons listed in the table above, consider planning for a Project found at
the end of each course.
*Note: Currently Course D does not have mini-projects. However, Lesson D.7 is similar to a mini-project
and is recommended here.

Access and read the lesson.


Step 4
All lesson plans and materials are available at the course overview pages on Code.org.

Read your lesson and prepare to make an implementation plan.


Step 5
Once you have read the lesson plan, you are ready to use the Lesson Implementation Guide.

41
CS Fundamentals Curriculum Guide

Lesson Implementation Guide

Course _______________ Lesson ________

Make a Plan

Directions
Use the following as a guide when preparing to implement and teach a CS Fundamentals lesson.

Focus on... Planning


CS Concepts
What CS concept(s) does the lesson
introduce to students and how?

Building Skills
What skill does the lesson help students
practice and how?

Classroom Routine/Procedure
What classroom routine/procedure is
needed to support classroom
management during the lesson?

42
CS Fundamentals Curriculum Guide

Focus on... Planning

CS Teaching Strategies
When will any of the following be
included during the lesson?
● Lead Learner
● Discovery and Inquiry
● Debugging
● Pair Programming
● Classroom Community (active
learning, communication)

Assessing Student Learning


How will students share their thinking
and demonstrate what they learned?

Equity
How will the lesson be inclusive and
equitable for students?

43
CS Fundamentals Curriculum Guide

44

You might also like