Welcome to
AP Computer Science Principles
Completion
of Unit 3: Programming and Algorithms
And
Introduction
to Unit 5 – Building Apps
To Think; To Develop Problem-Solving Skills; To Discover; and To
Create;
Learning
to Compute and Computing to Learn
Classroom
Protocol:
This is where you will come every day to find out what we are
going to do in class for that day. Every day you are to come to your Quia class
web page upon arriving to class, go to your class web page, and follow the
directions for today.
Homework
Policy:
All assignments will be due on the deadline date given. It is the
responsibility for all students to complete their assignments on time. Any
assignments received late will not be accepted and a grade will not be given for
that assignment.
Accessing
your Class Weekly Agenda:
Each
week’s agenda and assignments will be updated and posted on your Quia class
web page on a weekly basis. Previous
weeks Assignments/Agendas will be provided with a link at the end of the current
week’s Class Web Page in case you need to revisit due to an absence, or
you’re required to make up, or catch up on your course assignments.
Homework Assignment: Daily homework assignments may be found at the end of each
day’s agenda. Daily Journal Entries as seen in Daily
Ticket to Leave are to be entered as part of your daily homework. All
students will receive a homework grade on a weekly basis, and your journal will
receive a project grade each mid-term and final semester.
IMPORTANT
DATES: Saturday February 2nd @ Auburn HS
Saturday April 6th Mock Exam @ your school
Create
Performance Task: 12 hours -
Beginning March 25, 2019 (12 hours)
To
Be Completed by April 19, 2019
AP
Computer Science Principles Exam Day - FRI, MAY 10, 2019 (Noon – 2 hours)
This
Week’s Agenda:
Completion
of Unit 3: Programming and Algorithms
Unit
3 Assessment
Introduction
to Unit 5 – Building Apps
Monday
Day G - 1-14-19 – Thursday Day B 1–17-19
UNIT 5 Overview: Building Apps:
This
unit continues to develop students’ ability to program in the JavaScript
language using App Lab. Students create a series of simple applications (apps)
that live on the web, each highlighting a core concept of programming. In the
first chapter students learn to design apps that respond to user interaction
like clicks and key presses. Concepts introduced in this chapter include
variables, user input, text strings, Boolean expressions, and if-statements.
In the
second chapter of Unit 5 students learn to program with larger and more complex
data structures. Early in the chapter students return to the study of loops,
this time using them to simulate real world events. Next they learn to program
with lists of information in order to develop apps that store and process large
amounts of data. They will also learn to compare the efficiency of different
list-processing algorithms. The final lessons of the chapter introduce advanced
programming topics including return values and objects. The chapter concludes
with a self-directed project in which students apply all the programming skills
and concepts they’ve learned in the course.
Chapter 1: Event-Driven Programming
Big Questions
Enduring Understandings
Chapter 2:
Programming
with Data Structures
Big Questions
Enduring Understandings
Unit
5 Vocabulary
Monday Day G - 1-14-19 and
Tuesday Day H – 1-15-19
Lesson
10: Practice PT - Design a Digital Scene
CL -
Collaboration
CL.L2:3 -
Collaborate with peers, experts and others using collaborative practices such
as pair programming, working in project teams and participating in-group
active learning activities.
CPP -
Computing Practice & Programming
CPP.L2:5 -
Implement problem solutions using a programming language, including: looping
behavior, conditional statements, logic, expressions, variables and functions.
CPP.L3A:3 -
Use various debugging and testing methods to ensure program correctness (e.g.,
test cases, unit testing, white box, black box, integration testing)
CPP.L3A:4 -
Apply analysis, design, and implementation techniques to solve problems (e.g.,
use one or more software lifecycle models).
CT -
Computational Thinking
CT.L2:6 -
Describe and analyze a sequence of instructions being followed (e.g., describe
a character's behavior in a video game as driven by rules and algorithms).
CT.L3A:1 -
Use predefined functions and parameters, classes and methods to divide a
complex problem into simpler parts.
CT.L3A:3 -
Explain how sequence, selection, iteration, and recursion are building blocks
of algorithms.
CT.L3B:4 -
Evaluate algorithms by their efficiency, correctness, and clarity
2.2 -
Multiple levels of abstraction are used to write programs or create other
computational artifacts
2.2.1 - Develop an abstraction when writing a program or creating other
computational artifacts. [P2]
2.2.2 - Use multiple levels of abstraction to write programs. [P3]
2.2.3 - Identify multiple levels of abstractions that are used when
writing programs. [P3]
4.1 -
Algorithms are precise sequences of instructions for processes that can be
executed by a computer and are implemented using programming languages.
4.1.1 - Develop an algorithm for implementation in a program. [P2]
5.1 -
Programs can be developed for creative expression, to satisfy personal
curiosity, to create new knowledge, or to solve problems (to help people,
organizations, or society).
5.1.2 - Develop a correct program to solve problems. [P2]
5.1.3 - Collaborate to develop a program. [P6]
5.3 -
Programming is facilitated by appropriate abstractions.
5.3.1 - Use abstraction to manage complexity in programs. [P3]
5.4 -
Programs are developed, maintained, and used by people for different purposes.
5.4.1 - Evaluate the correctness of a program. [P4]
Objectives
Students will be able to:
Activator: Open up your Engineering Journal and review what you entered last
class. Review the Standards, Objectives, above, for today’s lesson. Click on
https://studio.code.org/
and log in. Locate the Unit 3: The ‘Intro to Programming’ tile and click
‘View course’.
Direct Instruction:
Abstraction is an
important tool in programming, not only because it allows individual
programmers to break down complex problems, but because it enables effective
forms of collaboration. Once a problem has been broken down into its component
parts, teams of programmers (sometimes dozens or more) can attack individual
components of that problem in parallel. This style of programming requires
clear communication and a shared understanding of the high-level requirements
of the software. If implemented carefully, however, it can be an effective
strategy for rapidly producing large and complex pieces of software.
Guided Instruction:
1.
Log into code studio, Go to Unit 3 and Lesson 10 and proceed
through today’s exercises.
Sharing
your code:
After students create
a program which contains their own functions they’ll need to get the code to
their classmates and vice versa so that they can copy their partners’
functions into their own projects.
Students will need some way of recombining their code.
Possible solutions are:
These are the bullet
points - a more complete How-To guide viewable for students is in code studio.
Share
Code
Retrieve code from Shared Project
Summarizer:
Mr. PC will review each day what each student accomplished and the focus of tomorrow.
Assessment for/of
learning:
Students are to be assessed on today’s lesson in the
introduction to Programming, Unit 3, Lesson 10.
Ticket
to Leave:
In
order to prepare you for your next AP CSP college-board performance task we
need to get use to reflecting on our daily work and experiences. This is a
skill that will prove to be useful when you go on to college, enter the
workforce, and even in every aspect of your everyday life.
Every day at the end of class you should save your work, open up your
journal, put down today’s date, and provide the following information.
1. Provide at least on new thing that you learned today – Refer to today’s Objectives
2. What did you accomplish today?
3. Indicate any problems or obstacles you experienced
4. How did you solve the problems or obstacles that you experienced?
Feel
free to provide screen shots of your daily work in order to illustrate your
day’s activities. Windows provides a Snipping
Tool within its provided Accessories that may be used for this purpose.
Homework:
Ø
In
order to begin preparation for the next task to be submitted to the
college-board, Please click on the following link and review the requirements
for the Create Performance Task. Feel free to review the sample task
submissions and the comments on how the performance task received its score.
Create
Performance Task Rubric
Ø
Students
should begin their research and definition of what their Create Performance
Task will be and how it will meet the criteria setforth within the CP Task
Rubric above.
Ø
Complete
your ticket to leave journal entry.
Wednesday Day A – 1-16-19
Unit 3 Assessment
Please
take the Unit 3 Assessment: Then:
Lesson
1: Introduction to Event-Driven Programming
IMPORTANT NOTE: Make
sure to take a screen shot of every exercise you complete which includes the
code you wrote and result of running your program, and add to your engineering
notebook on a daily basis. Thanks.
CL –
Collaboration
CPP -
Computing Practice & Programming
CT -
Computational Thinking
1.1 -
Creative development can be an essential process for creating computational
artifacts.
1.2 -
Computing enables people to use creative development processes to create
computational artifacts for creative expression or to solve a problem.
5.1 -
Programs can be developed for creative expression, to satisfy personal
curiosity, to create new knowledge, or to solve problems (to help people,
organizations, or society).
5.4 -
Programs are developed, maintained, and used by people for different purposes.
Objectives
Students will be able to:
Activator:
Open
up your Engineering Journal and review what you entered last class. Review the
Standards, Objectives, above, for today’s lesson. Click on https://studio.code.org/
and log in. Locate the Unit 5: The ‘Building Apps’ tile, and click ‘View
course’.
Direct Instruction:
Most modern applications are interactive, responding to when
users click buttons, type in a textbox, tilt the screen, swipe between
screens, etc. In every instance, the user’s action is generating some kind
of event and the program responds by running an associated block of code.
Programming a modern application is therefore typically an exercise in
creating a user interface and then defining what will happen when the user
interacts with that interface.
The “event-driven” mindset of programming can take a little
getting used to. Often when learning, you write sequential programs that run
from start (usually the first line of the program) to the end, or to some
point when the program terminates. In an event-driven program your code must
always be at the ready to respond to user events, like clicking a button, that
may happen at any time, or not at all. More complex event-driven programs
require interplay and coordination between so-called “event handlers” -
which are functions the programmer writes, but are triggered by the system in
response to certain events.
This lesson is a first step toward getting into this mindset.
Certain high-level programming languages and environments are designed to make
certain tasks easier for a programmer. Being able to design the user interface
for an app using a drag-and-drop editor makes designing a stylish product much
faster and easier. App Lab has a way to make the User Interface elements
quickly and easily, leaving your brain more free to think about how to write
the event handlers.
We may not understand
all the technical details yet, but it seems clear that most applications we
use respond to events of some kind.
Whether we’re
clicking a button or pressing a key, the computer is sensing events that we generate in order to determine how the
application should run.
Today, we’re going
to start exploring how event-driven
programming makes this possible.
Tutorial - Introduction to Design Mode - Video
Guided Instruction:
1.
Log into code studio, Go to Unit 5 and Lesson 1 and proceed
through today’s exercises.
Wrap-Up:
Today we were actually
introduced to two tools that will help us build increasingly complex
applications. The first was Design Mode,
and hopefully it was quickly apparent how powerful this tool is for creating
visually appealing and intuitive user interfaces without cluttering up your
code. The second tool was onEvent which
is the general command for all event-handling in App Lab.
Event-driven programs
are an important concept in programming, but we’ve just gotten our feet wet.
In the next lesson we’ll go further by adding multiple screens, and getting
better at debugging.
Summarizer:
Mr. PC will review each day what each student accomplished and the focus of tomorrow.
Assessment for/of
learning:
Students are to be assessed on today’s lesson in the Building
Apps, Unit 5, Lesson 1.
Ticket
to Leave:
In
order to prepare you for your next AP CSP college-board performance task we
need to get use to reflecting on our daily work and experiences. This is a
skill that will prove to be useful when you go on to college, enter the
workforce, and even in every aspect of your everyday life.
Every day at the end of class you should save your work, open up your
journal, put down today’s date, and provide the following information.
1. Provide at least on new thing that you learned today – Refer to today’s Objectives
2. What did you accomplish today?
3. Indicate any problems or obstacles you experienced
4. How did you solve the problems or obstacles that you experienced?
Feel
free to provide screen shots of your daily work in order to illustrate your
day’s activities. Windows provides a Snipping
Tool within its provided Accessories that may be used for this purpose.
Homework:
Ø
In
order to begin preparation for the next task to be submitted to the
college-board, Please click on the following link and review the requirements
for the Create Performance Task. Feel free to review the sample task
submissions and the comments on how the performance task received its score.
Create
Performance Task Rubric
Ø
Students
should begin their research and definition of what their Create Performance
Task will be and how it will meet the criteria setforth within the CP Task
Rubric above.
Ø
Complete
your ticket to leave journal entry.
Thursday Day B – 1-17-19
Lesson
2: Multi-Screen Apps
CPP - Computing Practice & Programming
CT - Computational Thinking
1.1 - Creative development can be an essential process for creating
computational artifacts.
1.1.1 - Apply a creative development process when creating
computational artifacts. [P2]
1.2 - Computing enables people to use creative development processes
to create computational artifacts for creative expression or to solve a
problem.
1.2.1 - Create a computational artifact for creative expression. [P2]
1.2.3 - Create a new computational artifact by combining or modifying
existing artifacts. [P2]
1.2.4 - Collaborate in the creation of computational artifacts. [P6]
5.1 - Programs can be developed for creative expression, to satisfy
personal curiosity, to create new knowledge, or to solve problems (to help
people, organizations, or society).
5.1.1 - Develop a program for creative expression, to satisfy personal
curiosity, or to create new knowledge. [P2]
5.1.2 - Develop a correct program to solve problems. [P2]
5.1.3 - Collaborate to develop a program. [P6]
5.4 - Programs are developed, maintained, and used by people for
different purposes.
5.4.1 - Evaluate the correctness of a program. [P4]
Objectives
Students will be able to:
Activator: Open up your Engineering Journal and review what you entered last
class. Review the Standards, Objectives, above, for today’s lesson. Click on
https://studio.code.org/
and log in. Locate the Unit 5: The ‘Building Apps’ tile and click ‘View
course’.
Direct Instruction:
As event-driven applications get more complex, it is easy to
generate errors in a program, and the need to debug the program will become
more prevalent. In some instances, the error will be in the syntax of the
program (e.g., a missing semicolon or misspelled function name). In other
instances, however, programs will have logical errors which the computer will
not catch and so can only be found by testing. Debugging and learning to
interpret error messages is a critical step in the process of developing
reliable software. Learning about yourself and the types of mistakes you
typically make is one aspect of getting good at debugging. Learning how to
insert console.log statements into your code to display messages that give you
insight into what your program is doing and when is also an important,
universal technique of program development and debugging.
In the last lesson you ended up making a simple “chaser game”
that wasn’t much of a game.
In this lesson you’ll learn how to improve that app by:
Guided Instruction:
·
Log into code studio, Go to Unit 5 and Lesson 2 and proceed
through today’s exercises.
·
You should still work independently but there are a few more
problems to solve and mysteries to figure out than in the previous lesson.
·
It is recommended that each of you have at least one coding
buddy or thought partner to work through these stages with.
·
Each team should read instructions together, and ask questions of
each other.
·
In particular, it’s effective to have students do prediction
tasks with a partner.
·
At the end of the lesson it’s okay for to work more
independently as you will be touching up and adding to your chaser game
project
·
Share what you completed today with the class
Wrap-Up:
We’re making a big
deal out of error messages and debugging because they are often hurdles for
new learners.
But you just need to
have the right attitude about writing code - debugging is part of the process.
You get used to a
pattern of:
If you do this, the
errors you make will tend to be smaller and easier to catch.
Summarizer:
Mr. PC will review each day what each student accomplished and the focus of tomorrow.
Assessment for/of
learning:
Students are to be assessed on today’s lesson in the Building
Apps, Unit 5, Lesson 2.
Ticket
to Leave:
In
order to prepare you for your next AP CSP college-board performance task we
need to get use to reflecting on our daily work and experiences. This is a
skill that will prove to be useful when you go on to college, enter the
workforce, and even in every aspect of your everyday life.
Every day at the end of class you should save your work, open up your
journal, put down today’s date, and provide the following information.
1. Provide at least on new thing that you learned today – Refer to today’s Objectives
2. What did you accomplish today?
3. Indicate any problems or obstacles you experienced
4. How did you solve the problems or obstacles that you experienced?
Feel
free to provide screen shots of your daily work in order to illustrate your
day’s activities. Windows provides a Snipping
Tool within its provided Accessories that may be used for this purpose.
Homework:
Ø
In
order to begin preparation for the next task to be submitted to the
college-board, Please click on the following link and review the requirements
for the Create Performance Task. Feel free to review the sample task
submissions and the comments on how the performance task received its score.
Create
Performance Task Rubric
Ø
Students
should begin their research and definition of what their Create Performance
Task will be and how it will meet the criteria setforth within the CP Task
Rubric above.
Ø
Complete
your ticket to leave journal entry.
Thanks for a great semester!
Thanks for a great
week!
Mr. PC
Create Performance
Task Student Resources:
AP
Digital Portfolio Access - College Board
Site
Preparation
of your AP CSP Digital Portfolios: Click on the link below.
Student
Digital Portfolio Guide
– Save a copy of the Student Digital Portfolio Guide to your Google Drive
Ø
Please
review the Student Digital Portfolio Guide and follow the directions for
setting up your digital portfolio for your AP CSP course. Thanks.
Online Explore Performance Task Resources:
AP CSP Performance
Task Directions for Students - College Board Student Handout
Explore
Performance Task Rubric
More Resources for
finding computing innovations:
http://www.pbslearningmedia.org/
Tools
for building computing artifacts:
https://sites.google.com/view/cool-tools-for-schools/home
To Do: Create Digital
Portfolios for Performance Tasks Submissions. Our goal is to complete our
Explore Performance Task before the end of 2018.
UNIT 1 Overview: The Internet:
This
unit explores the technical challenges and questions that arise from the need
to represent digital information in computers and transfer it between people
and computational devices. The unit then explores the structure and design of
the internet and the implications of those design decisions.
In
this unit students learn how computers represent all kinds of information and
how the Internet allows that information to be shared with millions of people.
The
first chapter explores the challenges and questions that arise when
representing information in a computer or sending it from one computer to
another. It begins by investigating why on-off signals, also known as binary
signals, are used to represent information in a computer. It then introduces
the way common information types like text and numbers are represented using
these binary signals. Finally, it illustrates the importance of establishing
shared communication rules, or protocols, for successfully sending and
receiving information.
In
the second chapter, students learn how the design of the internet allows
information to be shared across billions of people and devices. Making
frequent use of the Internet Simulator, they explore the problems the original
designers of the internet had to solve and then students “invent”
solutions. To conclude the unit, students research a modern social dilemma
driven by the ubiquity of internet and the way it works.
Chapter 1: Representing and Transmitting Information
Big Questions
Enduring Understandings
·
2.1 A variety of abstractions built upon
binary sequences can be used to represent all digital data.
·
3.3 There are trade-offs when representing
information as digital data.
·
6.2 Characteristics of the Internet
influence the systems built on it.
7.2 Computing enables innovation in nearly
every field.
Unit
1 Vocabulary
Unit 1: Chapter 2: Inventing the Internet
Big Questions
Enduring Understandings
·
2.1 A variety of abstractions built upon
binary sequences can be used to represent all digital data.
·
6.1 The Internet is a network of
autonomous systems.
·
6.2 Characteristics of the Internet
influence the systems built on it.
·
7.3 Computing has a global affect -- both
beneficial and harmful -- on people and society.
Introduction to UNIT 2: Digital
Information:
This
unit further explores the ways that digital information is encoded,
represented and manipulated. Being able to digitally manipulate data,
visualize it, and identify patterns, trends and possible meanings are
important practical skills that computer scientists do every day.
Understanding where data comes from, having intuitions about what could be
learned or extracted from it, and being able to use computational tools to
manipulate data and communicate about it are the primary skills addressed in
the unit.
This
unit explores the way large and complex pieces of digital information are
stored in computers and the associated challenges. Through a mix of online
research and interactive widgets, students learn about foundational topics
like compression, image representation, and the advantages and disadvantages
of different file formats. To conclude the unit, students research the history
and characteristics of a real-world file format.
Chapter
1: Digital Information
Big Questions
Enduring Understandings
In Unit 3, students explore the fundamental
topics of programming, algorithms, and abstraction as they learn to
programmatically draw pictures in App Lab. An unplugged sequence at the
beginning of the unit highlights the need for programming languages as well as
the creativity involved in designing algorithms. Students then begin working
in App Lab where they use simple commands to draw shapes and images using a
virtual “turtle.” As they’re introduced to more complex commands and
programming constructs, students learn to break down programming problems into
manageable chunks. The unit ends with a collaborative project to design a
digital scene.
Chapter
1: Intro to Programming
Unit
3 Vocabulary
In this unit students explore the technical,
legal, and ethical questions that arise from computers enabling the collection
and analysis of enormous amounts of data. In the first half of the unit,
students learn about both the technological innovations enabled by data and
the privacy and security concerns that arise from collecting it. In the second
half of the unit, students learn how cryptography can be used to help protect
private information in the digital age.
Unit
4 Vocabulary