AP Computer Science Principles Syllabus
AP® Digital Portfolio Student User Guide
AP® AP Computer Science Principles Assessment Overview and Performance Task Directions for Students
28-30 May 2019 — Facial Recognition Presentation
You will research and create a presentation on the pros and cons of facial recognition. Locate a minimum
of two sources for and two sources against the use of facial reconigition by both the public and
private sector. In your presentation be sure to cite your sources.
Presentations will be presented on June 3, 2019 as your final.
23 May 2019 — Computer Ethics
Presentation from www.mpsaz.org/eva/staff/ksrandle/class1/files/1-importance_of_computer_ethics.ppsx
21 May 2019 — Rapid Research / One-Page Assignment
Please remember the following guidelines for this assignment:
17 May 2019 — Sphero/Ollie Programming
Log into edu.sphero.com and under Programs --> Community search for
Revenge of the BB-8
and look at the program. Then, with your bot and tablet/phone go to Sphero App and again search
for the program and run Revenge of the BB-8. Some of the program blocks will not run on the Ollie.
Then remix the program to get your bot to perform something different. There are many examples on the app
that you can get ideas from. Each person will need to have their own remix saved in there Sphero App Account.
15 May 2019 — Are We Like Robots
Discuss how the human body moves to get an idea of what has to be thought about when
making a robot move.
There are limits what robots can do because robots are limited by their bodies. It can
be difficult to create a robotic had that can grasp small or delicate items—it
would require many motors (simulating all the muscles in the hand) and many sensors to
detect the item (simulating the neurons in the hand).
Activity: Tie a Shoe Like a Robot.
13 May 2019 — Debrief
What did you like about the class? What didn't you like about the class?
03-10 May 2019 — AP CSP Released Exam Question Review / Prep for the AP Exam
15 April—01 May 2019 — Digital Portfolio
Work on either on of your performance tasks.
11 April 2019 — Unit 5 Chapter 2 Lesson 16 — Functions with Return Values and
Lesson 17 —
Building an App: Canvas Painter
Lesson 16 In this lesson students are introduced to the return command and learn to write their own functions that return
values. Students first complete a simple unplugged activity based on the game Go Fish to introduce the concept of a return value.
They will then complete a short sequence of exercises in Code Studio, which introduces preferred patterns for writing functions
that return values. At the end of the sequence, students write and use functions that return values in a simple turtle driver app.
Activity:
Return Values with Go Fish.
Lesson 17 Students continue to practice working with arrays and are introduced to a new user interface element, the canvas.
The canvas includes commands for drawing simple geometric shapes (circles, rectangles, lines) and also triggers mouse and key events
like any other user interface element. Over the course of the lesson, students combine these features to make an app that allows a
user to draw an image while recording every dot drawn on the canvas in an array. By processing this array in different ways, the
app will allow students to redraw their image in different styles, like random, spray paint, and sketching. Along the way, students
use their knowledge of functions with return values to make code which is easy to manage and reuse.
09 April 2019 — Unit 5 Chapter 2 Lesson 15 — Processing Arays
The students will do two unplugged activities related to algorithms and program some of them themselves in App Lab.
The for loop is re-introduced to implement these algorithms because it’s straightforward to use to process all the
elements of a list. The lesson begins with an unplugged activity in which students write an algorithm to find the
minimum value in a hand of cards. Students then move to Code Studio to write programs that use loops and arrays.
Students are shown how to use a for loop to visit every element in an array. Students use this pattern to process
an array in increasingly complex ways. At the end of the progression, students will write functions which process
arrays to find or alter information, including finding the minimum value - a problem they worked on in the unplugged
activity. Finally, an unplugged activity has students reason about linear vs. binary search and attempt to write
pseudocode for a binary search.
Activity:
Minimum Card Algorithm
Activity:
Card Searching Algorithm
05 April 2019 — Unit 5 Chapter 2 Lesson 14 — Building an App: Image Scroller
Students will extend the My Favorite Things app they built in the previous lesson so that it now manages and displays a
collection of images and responds to key events. Students are introduced to the practice of refactoring code in order to
keep programs consistent and remove redundancies when adding new functionality. As part of learning to use key events,
students are shown that event handlers pass a parameter which contains additional information about the event. This
lesson also serves as further practice at using arrays in programs.
03 April 2019 — Unit 5 Chapter 2 Lesson 13 — Introductions to Arrays
This lesson introduces arrays as a means of storing lists of information within a program. The class
begins by highlighting the difficulties that arise when trying to store lists of information in a
variable. Students then watch a short video introducing arrays and a subset of the operations that
can be performed with them. Students will work in Code Studio for the remainder of the class as
they practice using arrays in their programs. At the conclusion of the sequence, students build
a simple app which can be used to store and cycle through a list of their favorite things. In
the next lesson, students will continue working with a version of this app that can display images
and not just text strings.
01 April 2019 — Unit 5 Chapter 2 Lesson 12 — Loops and Simulations
In this lesson, students gain more practice using while loops as they develop a simulation that
repeatedly flips coins until certain conditions are met. The lesson begins with an unplugged
activity in which students flip a coin until they get 5 heads in total, and then again until
they get 3 heads in a row. They will then compete to predict the highest outcome in the class
for each statistic. This activity motivates the programming component of the lesson in which
students develop a program that allows them to simulate this experiment for higher numbers of
heads and longer streaks.
Activity: Worksheets – Flipping Coins
18–29 March 2019 — Spring Intersession Break
14 March 2019 — Unit 5 Chapter 2 Lesson 11 — While Loops
This lesson demonstrates how a slight manipulation of a conditional statement can allow for the creation
of a new and powerful tool in constructing programs, a while loop. While learning about creating
while loops, students will be introduced to many of the common mistakes early programmers make
with while loops and will need to debug small programs.
12 March 2019 — Lesson 10: Building an App: Color Sleuth
This lesson attempts to walk students through the iterative development process of building an app (basically)
from scratch that involves the use of if statements. Following an imaginary conversation between two
characters - Alexis and Michael - students follow the problem solving and program design decisions they
make for each step of constructing the app. Along the way they decide when and how to break things down
into functions, and of course discuss the logic necessary to make a simple game.
08 March 2019 — Unit 5 Lesson 9: if-else-if and Conditional Logic
Having explored the basic of simple if-else statements this lesson gets into how to express more complex logic
using if-else-if statements and the Boolean operators && (and) || (or). Again, you'll be presented with a number
of small problems and scenarios to practice with and solve relatively more complex conditions.
06 March 2019 — Unit 5 Lesson 8: Boolean Expressions and "if" Statements
In this lesson, you will write if and if-else statements in JavaScript for the first time. The concepts of conditional
execution should carry over from the previous lesson, leaving this lesson to get into the nitty gritty details of writing
working code. You will write code in a series of "toy" problems setup for you in App Lab that require you to do everything
from debug common problems, write simple programs that output to the console, or implement the conditional logic into an
existing app or game, like "Password Checker" or a simple Dice Game. The lesson ends with a problem requiring nested
if statements to foreshadow the next lesson.
The main purpose here is Practice, Practice, Practice.
Spend the remaining time on your Create PT.
AP® AP Computer Science Principles Assessment Overview and Performance Task Directions for Students
04 March 2019 — Unit 5 Lesson 7–If Statements Unplugged
We take a whole lesson to learn about if statements, what they are, the terminology around them,
and what they have to do with "Selection" in programs. We trace simple robot programs on paper
to develop a sense of how to read and reason about code with if statements in it.
Activity: Will it Crash?
Activity: Code Studio
28 February 2019 — Unit 5 Lesson 6–User Input and Strings
In this lesson, students are introduced to the string data type as a way of representing arbitrary
sequences of ASCII characters. They will use strings to accept input from a user as they work on
mastering two new UI elements, the text input and the text area. Students combine these skills
to develop a simple Mad Libs® app.
Mad Libs® is a trademark of the Penguin Group (USA) LLC., which does not sponsor, authorize
or endorse this site.
Assignment: App Lab
26 February 2019 — Unit 5 Lesson 5—Building an App:Clicker Game
This lesson is mostly a continuation and furthering of our understanding of variables and how they work.
There are many, many pitfalls and misconceptions about variables and how to use them in programs for
the early learner. Variables are often difficult to learn because they are not visual, they are
abstract, and one must have a good mental model for what’s happening in the computer and with program
instructions, in order to reason about the code and develop one’s own solutions to problems.
Assignment:
Activity Guide – The Clicker Game
22 February 2019 — Unit 5 Lesson 4— Controlling Memory with Variables
This lesson gets into the basic mechanics of working with variables in programs. The lesson shows students
how to create and assign values to variables and navigates through a series of common misconceptions about
variables and how they work. Along the way, the lesson tries to build up the student’s mental model of
how computers and programs work, which is essential for being able to reason about programs.
Assignment; App Lab
20 February 2019 — Unit 5 Lesson 3—Building an App: Multi-Screen App
This lesson gives students time to familiarize themselves with the process of making event-driven apps
before we move on to deeper content. They will develop and create a minimum 4-screen app on a topic of
their choosing. There are some other constraints on the project to help guide students in their thinking. Students
are encouraged to do independent work, but alongside a "coding buddy" or "thought partner" to be a help along the way.
Assignment: App Lab
13-15 February 2019 — Explore Performance Task
It's finally time for you to take on the Explore Performance Task! Today and Friday,
you should work individually on your project without teacher support.
Code Studio Unit on the Explore Performance Task.
08 February 2019 — Lesson 2: Multi-Screen Apps
Students continue learning about Event Driven programming in this lesson by learning how to add multiple
"screens" to an app and adding code to switch between them. More techniques of debugging are presented,
namely using console.log, a command that allows them to print out text which the user cannot see. It
is useful for displaying messages to yourself to figure out what is happening as your program runs.
Students will end the lesson by creating an improved version of the “chaser” game which has multiple screens.
Activity: Code Studio
06 February 2019 — Lesson 1: Introduction to Event-Driven Programming
Students will be introduced to a new feature of App Lab: Design Mode. Design Mode allows students to easily
design the User Interface (UI) of their apps using a drag-and-drop editor. Students learn how to create UI
elements they have seen before such as images, text labels and buttons, but they will see many more options
for styling these elements with colors, font sizes and so on. Students also learn how to add event
handlers - code that listens for and responds to user-events. Students also explore some common errors
that come up in event-driven programming and will learn some important skills for debugging programs,
chief among them being responding to error messages. Students end the lesson by creating the foundation
of a simple "chaser game" which they will add onto in the next lesson.
Activity: Code Studio
04 February 2019 — Unit 4 Online Assessment and Explore PT.
The class will take the online Unit 4 Assessment and then spend the remainder of the time on your Explore PT. Remember that the instructor
is unable to answer any specific questons about the Explore PT.
31 January 2019 — Unit 4 Lesson 10 Rapid Research–Cybercrime
This is a wrap up for Unit 4:Big Data and Privacy. Following a video on the topic, student will pick a type of
cyber attack or cybercrime and do some "rapid research" to learn more about it. This is a prelude to completing
their Explore PT for the AP Exam.
Video Worksheet:
Cybersecurity and Crime Video Worksheet Submit to TurnItIn by end of class.
Activity Guide:
Rapid Research–Cybercrime
Template:
Cybersecurity One-Pager Submit to TurnItIn before Friday midnight.
25-29 January 2019 — Unit 4 Lesson 8 (completion) / Lesson 9 Public Key Crytography
Lesson 8 Worksheet:
Keys and Passwords.
This is a big multi-part lesson that introduces the concept of public key cryptography which
is an answer to the crucial question: How can two people send encrypted messages back and
forth over insecure channels (the Internet) without meeting ahead of time to agree on a
secret key? In a nutshell, there are two main principles we want students to understand:
1. The mechanics of communication with public key cryptography
2. The basic mathematical principles that make it possible
Activity:
Multiplication + Modulo.
23 January 2019 — Unit 4 Lesson 7/Lesson 8 Simple Encryption/Encrytion with a Key
“Encryption” is a process for transforming a message so that the original is “hidden” from
anyone who is not the intended recipient. Encryption is not just for the military and spies
anymore. We use encryption everyday on the Internet, primarily to conduct commercial
transactions, and without it our economy might grind to a halt.
Worksheet:
Exploring the Vigenere Cipher Widget.
Worksheet:
Keys and Passwords.
18 January 2019 — Identifying People with Data & The Cost of Free
Students investigate some of the world’s biggest data breaches to get a sense for how frequently they
happen and what kinds of data is lost or stolen. They then learn how easily individuals can be identified
with small amounts of seemingly innocuous information.
Check out the "World's Biggest Data Breaches Visulation" and "Data Privacy Lab" (currently under development
and may not work for you). Links are on Code.org.
Complete the Activity Guide —
Research Yourself. Submit your completed document to TurnItIn.
Students examine some of the economic concerns and consumer tradeoffs related to apps and websites
that collect and track data about you in exchange for providing you a service free of cost.
Article:
Wall Street Journal: Users Get as Much as they Give
Complete the Activity Guide —
Privacy Policies. Submit your completed document to TurnItIn.
16 January 2019 — Rapid Research–Data Innovations
Being able to research modern computing innovations and gain insight into how those innovations are using
data is a key skill of computer scientists. This is the first lesson in which students are asked to look
at how data is used in a modern computing innovation. Students will learn to look at how data is used
with an increasingly critical eye, but this lesson merely sets the table. Having intuitions about how
data is used, or how it’s not used, can improve one’s judgment about modern technology and other
innovations that increasingly use, produce, and rely on massive amounts of data to do their work.
Activity Guide:
Rapid Research–Data InnovationBr />
Template:
Data Innovation One-Pager
Complete the one-pager and upload to TurnItIn before midnight January 17, 2019.
14 January 2019 — Digital Divide and Checking Assumptions
Analyzing and interpreting data will typically require some assumptions to be made about the
accuracy of the data and the cause of the relationships observed within it. When decisions
are made based on a collection of data, they will often rest just as much on that set of
assumptions about the data as the data itself. Learning to validate and clearly call out
assumptions being made when interpreting data is an important part of both analyzing and
communicating about data.
Video: Google Trends Video
Video: What is Google Flu Trends
Assignment: Digital Divide and Checking Assumptions
Rapid Research:
10 January 2019 — Unit 4 Lesson 2 Finding Trends with Visualizations
Students use the Google Trends tool in order to visualize historical search data. They will need to
identify interesting trends or patterns in their findings and will attempt to explain those trends,
based on their own experience or through further research online. Afterwards, students will present
their findings to ensure they are correctly identifying patterns in a visualization and are providing
plausible explanations of those patterns.
Resource: Google Trends
Resource: Google Trends Help Page
Activity Guide –
Exploring Trends. Save a copy and you will be able to key directly into the document.
Note: 12/2018 – there have been reports of classrooms encountering a 429 error on the
Google Trends tool, which results in students being blocked from using the tool for a day or so.
It appears that Google Trends is interpreting all of the student requests as originating from a
single IP address. So we will be go through part of the activity as class and then you will
have an opportunity to try it on your own.
You will finish the day by taking the mid-year survey
07-08 January 2019 — Unit 4 Lesson 1 What is Big Data?
The data rich world we live in also introduces many complex questions related to public policy, law,
ethics and societal impact. In many ways this unit acts as a unit on current events. It is highly
likely that there will be something related to big data, privacy and security going on in the news
at any point in time. The major goals of the unit are 1) for students to develop a well-rounded
and balanced view about data in the world around them and both the positive and negative effects
of it and 2) to understand the basics of how and why modern encryption works 3) to prepare students
to complete the AP Explore Performance Task.
Students will be introduced to the comcept of "big data," where it comes from, what makes it "big,"
and how people use bif data to solve problems, and how much of their lives are "datafied" or could be.
Video: Big Data is Better
Data
Activity Guide:
U4L01 Activity Guide - Big Data Sleuth Card
21 December 2018 through 06 January 2019 — Winter Intersession Break
20 December 2018 — Explore Performance Task
The Assessment Overview and Performance Task Directions for Students has been linked at the top of the screen. Over the next several
weeks you will be 20 hours of class time to work on your performance tasks — plan on spending additional time as well.
18 December 2018 — Unit 3 Assessment
Take the assessment and then we will go over it as a class.
14 December 2018 — Peer Review of Digital Scenes
Using the rubic posted on the Code Studio website, you will review four (4) Digital Scene write-ups from TurnItIn.
This is something that I haven't tried before, so we may have to change it up a little bit.
10-12 December 2018 — Unit 3 Lesson 10 Design a Digital Scene
Students work in groups of 3 to design and write the code for a program that draws a digital scene of their choosing.
Students break the scene down into small parts and divvy up the code writing amongst the team. Each individual's code
is combined at the end to create the full scene. The project concludes with written reflection questions similar to
those students will see on the AP® Performance Tasks.
Links to handouts are in Code Studio Unit 3 Lesson 10.
06 December 2018 — Unit 3 Lesson 9 Looping and Random Numbers
Students learn to use a simplified version of a for loop to add repetition to their code
(i.e. repeat x times loop). Calling functions repeatedly with a loop combined with random
numbers enables students to create more complex and varied drawings for digital scenes.
Hour of Code
Today's activity is a set of 20 self-guided puzzles that teach the basics of computer science for
users with no prior experience. If you want you may choose another segment, but to get credit
you must complete an activity and print out the completion certificate. In each puzzle, you write
a program that gets a character through a maze. The activity uses Blockly, a visual programming
language that has blocks you drag and drop to write programs. The characters in one of the
activities is from
Star Wars
Choose either Blocks or JavaScript (you can switch between if you want at any time).
To get credit for today's activity you need to print out the completion certificate with your
name printed in it:
04 December 2018 — Unit 3 Lesson 8 Creating Functions with Parameters
Writing functions with parameters is a simple idea, but it traditionally has some devilish details for new
learners of programming. The basic idea is that you often want to write a function that takes some input
and performs some action based on that input. For example, the turtle function moveForward is much more
useful when you can specify how much to move forward (e.g., moveForward(100)), rather than just a fixed
amount every time. It’s very common to encounter situations where as a programmer you realize that you
basically need a duplicate of some code you’ve already got, but you just want to change some numbers.
That’s a good time to write a function with a parameter; the parameter just acts as a placeholder for
some value that you plug in at the time you call the function. Just like it’s considered good practice
to give descriptive names to your functions, the same is true for the names of the parameters themselves.
For example: drawSquare(sideLength) is better than drawSquare(stuff).
Activity: Writing Functions with Parameters: Under the Sea.
Share your project by placing a link to your code in the following
Google Doc
30 November 2018 — Practice Explore PT
Today the class will investigate what is required with the Explore PT portion of the AP Exam.
Scoring Sample Explore Tasks
28 November 2018 — Unit 3 Lesson 5 Creating Functions (complete) and Lesson 6 Functions and Top-Down Design
In Lesson 5, students learn to define and call their own functions (aka procedures) in order to create
and give a name to a group of commands for easy and repeated use in their code. Name procedures are a
form of abstraction that enable the programmer to reduce complexity by removing details and generalizing
functionality.
In Lesson 6, students learn aobut top-down strategies for solving more complex programming problems by
breaking the problem down into small parts that can be named and represented as functions. The code in
the resulting program should read more like a description of how to solve the problem than like raw code.
Activity: Top-Down Design
15 November 2018 — Unit 3 Lesson 4: Using Simple Commands and Lesson 5: Creating Functions
Students will be introduced to App Lab and to start thier programming journey in such a way that the focus is more on problem-solving
than learning syntax. Students will learn how to define and call procedures (functions) to handle repeated problems.
Activity: Turtle Programming in Code Studio.
13 November 2018— -- >i>Unit 3 Human Machine Language
Students develop (and are eventually provided with) commands for a "Human Machine Language"
designed to perform operations on playing cards. The lesson highlights the connection between
programming and algorithms by showing that different techniques for solving the same problem
can be expressed in the language.
Activity: The "Human Machine" Language
Activity: Minimum Card Algorithm
08 November 2018 — Unit 2 Checking for Understanding
08 November 2018 — Unit 3 The Need for Programming Languages
Students write instructions for building a small arrangement of LEGO® blocks and trade with a
classmate to see if they can follow them to construct the same arrangement. The lesson highlights
the inherent ambiguities of human language deriving the need for a well-defined programming
language which leaves no room for interpretation.
Activity: LEGO Instructions
Activity: Building Blocks of Drawing
02-06 November 2018 — Lossy Compression and File Formats
The main purpose of this lesson is straightforward: understand what lossy compression is and
when/why it might be used. It's mostly used in visual or audio formats where a loss in precision
is undetectable to human eyes and ears. Beyond that we, want to continue to build students'
skills and comfort with rapidly doing research online, reporting back, and verifying that the
information they got was good. This is good life skill but will also serve students well for
the Explore Performance task. The hope with this lesson is that students will have greater
insight into these technical articles that they know a bit about the binary make up of
things—many of the image file format articles actually show the binary file format and
what bits mean what.
Worksheet: File Formats Rapid Research
Rapid Research
In this part of the lesson students will conduct a small amount of research to explore a file format
either currently in use or from history. Students will conduct research in order to complete a "one-pager"
that summarizes their findings. They will also design a computational artifact (video, audio, graphic, etc.)
that succinctly summarizes the advantages of their format over other similar ones.
Worksheet:
Rapid Research Activity Guide.
Template:
One-pager Template as a Google Doc to fill out on the computer.
31 October 2018 — Collaborative Critique of PT
Using the previously provided rubric, reach a consensus with your group on each of the criteria.
Make positive suggestions for improvement.
25–29 October 2018 — Encode an Experience
Due 31 ctober 2018
Throughout this unit you have learned a sequence of increasingly complex encodings of information,
with higher level encodings like images and formatted text making use of lower level encodings
like binary numbers, ASCII characters, and even lower still the bits themselves. When creating
a binary encoding scheme, we do not always have to consider the actual bits. When we say a
pixel is composed of three numbers, it is not actually important that those numbers are encoded
in bits, just that there exists some way to represent numbers. This practice of temporarily
ignoring details which are unnecessary for the problem at hand is referred to as abstraction,
and is the source of the complex computational systems we use everyday. Making use of this
tool it is possible to encode practically any object, system, event, or idea. For this
project you will be designing your own encoding and responding to associated reflection
questions. This project serves both as a review of the material covered in the first unit,
and as a practice AP Performance Task in anticipation of the two you will complete later this year.
Activity: Encode an Experience
18 October 2017 — Encoding Color Images
Humans can perceive millions of different colors. If we wish to encode color images we will need a
system to represent this huge variety of color. Along the way we will need to develop a new number
system to enable humans to more easily read and write large amounts of binary information.
Activity: Encoding Color Images
Activity: Personal Favicon Project
Rubric: Rubric Personal Favicon Project
Worksheet: A Little Bit about Pixels
Hexidecimal Odometer
19 October 2018 — Encoding B&W Images
Digital images perform the difficult task of translating human vision into a bit-level encoding. In this
lesson we get our feet wet by encoding simple black and white images. Digital images break a larger image
into small squares on a monitor, called pixels, which can be individually illuminated. In a black and
white image each pixel may eiter be turned on or off, and so can be represented by a single bit. But the
image encoding must contain other data as well, like the width and height, in order to properly
reproduce the image from the bits.
Activity: Invent a B&W image encoding scheme
Activity: B&W Pixelation Widget
Activity: Magnify an Image
17 October 2018 — Text Compression
Compression is a method or protocol for using fewer bits to represent the original information.
Compression can be achieved in a variety of methods including looking for patterns and substituting
symbols for the larger patterns of data. Compression can be a "hard problem" for computers because
it is difficult to know whether or not the compression you've found is optimal - if you keep trying
would it get better? It's hard to know when to stop, and hard to verify that you've compressed it
"enough". When it's impossible, or would take an unreasonable amount of time, to know an exact
solution you can come with a strategy called a "heuristic" to define some rules about when the
solution is good enough.
Activity: Text Compression
Activity: Text Compression Heuristics
Activity: Decode This Message
15 October 2018 — Bytes and File Sizes
Early computers stored and ran 8-bit instructions and most relied on representing and exchanging messages
encoded in ASCII text. The 8-bit chunk, or “byte” became a very common chunk-size or unit of data for
representing information. It became the fundamental unit with which we measure the “size” of data on
computers (kilobyte, megabyte, gigabyte, terabyte, etc).
Activity: Bytes and File Sizes
01 October–12 October 2018 — Fall Intersession Break
27 September 2018 — Peer Critique–Flash Talk
Present your talk and discuss the social implications of the topic. Compare what you know and/or have learned
with what has been presented.
19–25 September 2018 — Practice PT – Flash Talk: The Internet and Society
For this project you will prepare a 2-minute “flash talk” related to the Internet and its effects on people and society.
A flash talk is a brief speech or presentation, intended to grab the attention of the audience and convey key information
in a quick, insightful, and clear manner.
Purpose: The purpose of this flash talk is for you to demonstrate your knowledge (thus far) of the Internet and how it
works, and to connect that to a relevant topic that has an impact on people and society that you care about.
Who is your audience? Not everyone knows as much about the Internet and how it works as you do now. Your speech should
be directed at a person (or people) you care about and who you want to inform about this issue. You should provide them with
enough technical detail that they can understand why and how it affects them, and the benefits and drawbacks of responses to
the issue.
Activity: Flash Talk: The Internet and Society
TurnItIn class ID: 19151266 passcode: freedom
17 September 2018 — HTTP and Abstraction on the Internet
Internet protocols define how computers "talk" to one another on the Internet. Most of the conversations
are conducted in ASCII-text which can easily be read by humans. Thanks to the power of abstraction,
we can rely on TCP/IP and the multiple layers of the physical Internet to handle the details of actually
sending these messages. HTTP is one such protocol, and defines how your browser asks a remote server for
the text, images, audio, and formatting information used to render a complete webpage.
Activity: HTTP in Action
13 September 2018 — The Need for DNS
It would be impossible for packets to be routed across the internet without IP addresses.
The problem with this system is that, while computers are good at referring to other computers
by numbers, humans are not. The Domain Name System (DNS) solves this problem so that we can
identify a webpage by its name, even when the IP addresses change.
Unplugged Activity: Names and Addresses – Worksheet
Internet Simulator Activity: DNS
Partner Questionnaire – Activity Guide
Rapid Research: DNS in the Real World –
Activity Guide (passed out in class)
Links:
Rapid Research Links
11 September 2018 — Packets and Making a Reliable Internet
The internet is inherently unreliable. Wires can get cut, connections can get flooded with data,
routers can crash. How can you ensure that a person receives the message you sent? In this lesson,
we will investigate how packets and protocols to structure them can make the unreliable physical
network appear to be reliable to people using it.
Activity: Packets
and Making a Reliable Internet — Activity
07 September 2018 — Routers and Redundancy
Just like the post office uses standardized zip codes and addresses, the Internet uses a
standardized numeric addressing system called Internet Protocol (IP) to route messages
to specific locations. Numeric IP addresses have a structure and hierarchy in much the
same way that telephone numbers have a structure and hierarchy (with country and area
codes first).
Routing on the Internet also mirrors routing in the postal network in that there are
multiple ways that a message can travel from sender to receiver in response to conditions
in the network. For a letter in the mail this might mean a mailperson choosing a different
route through a city in response to construction. For a message on the Internet, this means
travelling to different routers based on the traffic of bits travelling across the network.
Activity: Routers and Redundancy
— Activity.
05 SEptember 2018 — The Need for Addressing
In this lesson, students explore more deeply how communication between multiple computers can work
over the Internet. You will do this by playing a simplified game of Battleship, in which the first
game is played unplugged, in groups of three (3), and the second game is played using the Internet
Simulator, so that multiple students can connect to each other and see each other's messages.
Students must devise a messaging protocol that makes it clar who is sending the message and who the
intended recipient is.
Students will then devise a binary protocol for playing this game which will entail
developing an addressing system for players, as well as a formal packet structure for transmitting
data about the state of the game.
Activity: Boadcast Battleship Game – Activity
Worksheet: IP Addresses and DNS Video Worksheet
29 August 2018 — The Internet is for Everyone
So far in this class you have solved a few problems by creating and using small protocols for
transmitting data over a wire, but the Internet is obviously much bigger than a single wire
connecting two people. It connects billions of people and even more billions of machines. For
it to work there must be open standards and protocols that anyone can follow, so that any machine
can communicate with any other. Without protocols it would be like machines speaking different
languages. We're going to look at some of the technical issues involved with having lots of
machines trying to communicate at the same time in the next several lessons. In order to set the
stage we want to consider some of the big societal questions about the importance of the Internet
and issues and threats to its existence.
Activity: The Internet is for Everyone.
27 August 2018 — Sending Formatted Text
Working with a partner, students will complete the worksheet Check For Understanding.
In today's lesson, students are first introduced to the standard number-to-text encoding scheme used in
computers and on the Internet known as ASCII encoding. Students will invent a communication protocol
that uses only plain text ASCII characters to encode fancier formatting for text such as fonts, colors,
sizes, etc. Students will demonstrate their protocol by using the Internet Simulator to send an encoded
message to a partner, who must correctly interpret the formatting and draw the result on a piece of paper.
Activity: Sending Formatted Text – Activity
Resource:
23 August 2018 — Sending Numbers
Students invent a binary protocol for sending a line drawing represented as list of grid coordinates (numbers).
Students test and hone their protocols using a new version of the Internet Simulator which is now configured to
automatically send and receive streams of bits.
Assignment: Sending Numbers Activity.
18 August 2017 — Number Systems and Binary Numbers
Students will explore the properties of number systems by effectively inventing a base-3
number system using circles, triangles and squares as the symbols instead of arabic
numerals. Students will be asked to create rules that explain how each arrangement of
symbols can be generated or predicted as an orderly, logical series.
Activity: Number Systems – Activity
Students will transition away from the number systems that they created with circles, squares and triangles
and begin to focus on representing numeric values using the binary number system. A number system is
infinite, and also has rules for counting–or how to get from one value to the next.
Activity: Binary Practice – Activity
Template: Flippy Do
17 August 2018 — Hidden Figures
Finish watching the movie — Create a recruitment poster for AP Computer Science that will appeal to
females and under represented students. Include any valid information that you can find online.
15 August 2018 — Hidden Figures
The past couple of days the class has been doing collaborative work, discussing innovations and generally
looking at technology as a whole. Today, the class will watch the video "Hidden Figures".
Assignment: Reflect on the following issues portrayed in the movie—How collaborative work helped put
man on the moon and about the gender/racial equity of the time. Complete the handout and turn it in to substitute
before you leave.
13 August 2018 — Sending Binary Messages with the Internet Simulator
The class will use the Internet Simulator many times over the course of the first two units in the course. Today,
the Internet Simulator will be be used to simulate a single shared wire, connecting two people. The wire can only
be in one of two possible states (state A or state B) and either partner may set or read the state of the wire at many
time, but his is the only way in which students may communicate. Students must invent a binary call-response protocol
using this system. Coordination, speed and timing are problems that need to be solved.
Activity: Coordination and Binary Messages – Activity
Internet Simulator: Internt Simulator.
09 August 2018 — Sending Binary Messages
Working in groups using classroom supplies and everyday objects students will develop their own systems for encoding
and sending simple binary messages, messages that have only two possible values.
Activity: Sending Binary Messages – Activity
07 August 2018 — Exploring Problem Solving Wrap Up and Personal Innovations
In this lesson the class applies the problem solving process to three different problems: a word search, a seating
arrangement for a birthday party, and planning a trip. The problems grow increasingly complex and poorly defined to
highlight hos the problem solving process is particularly helpful when tackling these problems.
Activity: Solving Problems – Activity
This activity plants the initial seed for students to think about the ways in which they might
be able to solve some problems relevant to their lives with technological innovations.
Activity: Personal Innovations – Activity
03 August 2018 — The Problem Solving Process
A highly interactive and collaborative introduction to the field of computer science, as framed within the broader pursuit of solving problems.
Through a series of puzzles, challenges, and real world scenarios, students are intoduced to a problem solving process that they will return
to repeatedly throughout the cours. Students then learn how computers input, output, store, and process information to help humans solve
problems.
The class works in groups to design aluminum foil boats that will support as many pennies as possible. At the end of the
lesson groups reflect on their experiences with the activity and make connections to the types of problem solving they will
be doing the rest of the course.
Activity: Aluminum Boats – Activity
This portion of the lesson introduces the formal problem solving process that the class will use of the course of the year, Define -
Prepare - Try - Reflect. The class relates these steps to the aluminum boats problem from earlier, then a problem they are good at
solving, then a problem they want to improve at solving. At the end of the lesson the class
collects a list of generally useful strategies for each step of the process to put on posters that will be used throughout the
year.
Activity: Problem Solving Process – Activity
01 August 2018 — Course Introduction
Computer Science Principles is equivalent to a college level computer science course designed
for NON computer science major and is an excellent stepping off point for those that find that
they are interested in computer science and would like to learn more.
KQED published an article AP Computer Science Principles Attract Diverse
Students With Real-World Problems that explains what this course is all about.
The course will be taught using the Code.org curriculum and all students will need to create an account
on the Code.org website and then join the Freedom High School class section: