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:
Unit
3 Assessment
Introduction
to Unit 5 – Building Apps
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
- How
do you program apps to respond to user "events"?
- How
do you write programs to make decisions?
- How
do programs keep track of information?
- How
creative is programming?
- How
do people develop, test, and debug programs?
Enduring Understandings
- 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.
- 1.3
Computing can extend traditional forms of human expression and experience.
- 2.2
Multiple levels of abstraction are used to write programs or create other
computational artifacts
- 4.1
Algorithms are precise sequences of instructions for processes that can be
executed by a computer and are implemented using programming languages.
- 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.2
People write programs to execute algorithms.
- 5.3
Programming is facilitated by appropriate abstractions.
- 5.4
Programs are developed, maintained, and used by people for different
purposes.
- 5.5
Programming uses mathematical and logical concepts.
- 7.1
Computing enhances communication, interaction, and cognition.
Chapter 2:
Programming
with Data Structures
Big Questions
- How
do you write programs to store and process large amounts of information?
- How
are real world phenomena simulated on a computer?
- What
are “data structures” in a program and when do you need them?
- How
are algorithms evaluated for “speed”?
Enduring Understandings
- 2.3 Models and simulations use
abstraction to generate new understanding and knowledge.
- 3.1 People use computer programs to
process information to gain insight and knowledge.
- 4.1 Algorithms are precise sequences
of instructions for processes that can be executed by a computer and are
implemented using programming languages.
- 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).
Unit
5 Vocabulary
Vocabulary
- Callback function: a function
specified as part of an event listener; it is written by the programmer but
called by the system as the result of an event trigger.
- Event: An action that causes
something to happen.
- Event-driven program: a program
designed to run blocks of code or functions in response to specified events
(e.g. a mouse click)
- Event handling: an overarching term
for the coding tasks involved in making a program respond to events by
triggering functions.
- Event listener : a command that
can be set up to trigger a function when a particular type of event occurs
on a particular UI element.
- UI Elements: on-screen objects, like
buttons, images, text boxes, pull down menus, screens and so on.
- User Interface: The visual elements
of a program through which a user controls or communicates with the
application. Often abbreviated UI.
- Debugging: Finding and fixing
problems in an algorithm or program.
- Data Type: All values in a
programming language have a "type" - such as a Number, Boolean, or
String - that dictates how the computer will interpret it. For example 7+5
is interpreted differently from "7"+"5"
- Expression: Any valid unit of code
that resolves to a value.
- Variable: A placeholder for a piece
of information that can change.
- ==: The equality operator (sometimes
read: "equal equal") is used to compare two values, and returns a
Boolean (true/false). Avoid confusion with the assignment operator
"=",
- Global Variable: A variable whose
scope is "global" to the program, it can be used and updated by
any part of the code. Its global scope is typically derived from the
variable being declared (created) outside of any function, object, or
method.
- If-Statement: The common programming
structure that implements "conditional statements".
- Local Variable: A variable with local
scope is one that can only be seen, used and updated by code within the same
scope. Typically this means the variable was declared (created) inside a
function -- includes function parameter variables.
- Variable Scope: dictates what
portions of the code can "see" or use a variable, typically
derived from where the variable was first created. (See Global v. Local)
- Concatenate: to link together or
join. Typically used when joining together text Strings in programming (e.g.
"Hello, "+name)
- String: Any sequence of characters
between quotation marks (ex: "hello", "42", "this
is a string!").
- Boolean: A single value of either
TRUE or FALSE
- Boolean Expression: in programming,
an expression that evaluates to True or False.
- Iterate: To repeat in order to
achieve, or get closer to, a desired goal.
- while loop: a programming construct
used to repeat a set of commands (loop) as long as (while) a boolean
condition is true.
- Models and Simulations: a program
which replicates or mimics key features of a real world event in order to
investigate its behavior without the cost, time, or danger of running an
experiment in real life.
- Array: A data structure in JavaScript
used to represent a list.
- List: A generic term for a
programming data structure that holds multiple items.
- Key Event: in JavaScript an event
triggered by pressing or releasing a key on the keyboard. For example:
"keyup" and "keydown" are event types you can specify.
Use event.key - from the "event" parameter of the onEvent callback
function - to figure out which key was pressed.
- for loop: A typical looping construct
designed to make it easy to repeat a section of code using a counter
variable. The for loop combines the creation of a variable, a boolean
looping condition, and an update to the variable in one statement.
- Return Value: A value sent back by a
function to the place in the code where the function was called form -
typically asking for value (e.g. getText(id)) or the result of a calculation
or computation of some kind. Most programming languages have many built-in
functions that return values, but you can also write your own.
- Canvas: a user interface element to
use in HTML/JavaScript which acts as a digital canvas, allowing the
programmatic drawing and manipulation of pixels, basic shapes, figures and
images.
- Key Event: in JavaScript an event
triggered by pressing or releasing a key on the keyboard. For example:
"keyup" and "keydown" are event types you can specify.
Use event.key - from the "event" parameter of the onEvent callback
function - to figure out which key was pressed.
- Conditionals: Statements that only
run under certain conditions.
- If-Statement: The common programming
structure that implements "conditional statements".
- Selection: A generic term for a type
of programming statement (usually an if-statement) that uses a Boolean
condition to determine, or select, whether or not to run a certain block of
statements.
Week
1: Tuesday Day C - 1-22-19 – Friday Day F – 1-25-2019
Tuesday Day C
- 1-22-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.
Standards Alignment
CSTA K-12
Computer Science Standards
CL –
Collaboration
CPP -
Computing Practice & Programming
CT -
Computational Thinking
Computer Science
Principles
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:
- Use
Design Mode to user interface (UI) elements to a screen.
- Create
a simple event-driven program by creating user-interface elements with
unique IDs and attaching event handlers to them.
- Recognize
debugging and responding to error messages as an important step in
developing a program.
- Debug
simple issues related to event-driven programming
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:
Vocabulary
- Callback function: a function specified as part
of an event listener; it is written by the programmer but called by the
system as the result of an event trigger.
- Event: An action that causes something to
happen.
- Event-driven program: a program designed to run
blocks of code or functions in response to specified events (e.g. a mouse
click)
- Event handling: an overarching term for the
coding tasks involved in making a program respond to events by triggering
functions.
- Event listener : a command that can be set
up to trigger a function when a particular type of event occurs on a
particular UI element.
- UI Elements: on-screen objects, like buttons,
images, text boxes, pull down menus, screens and so on.
- User Interface: The visual elements of a
program through which a user controls or communicates with the application.
Often abbreviated UI.
Introduced Code
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.
Intro to
Event Driven Apps
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.
- Share
your Chaser Games with the class
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.
Wednesday Day
D - 1-23-19
Lesson
2: Multi-Screen Apps
Standards Alignment
CSTA K-12
Computer Science Standards
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).
- CPP.L3A:5 - Use Application
Program Interfaces (APIs) and libraries to facilitate programming solutions.
CT - Computational Thinking
- CT.L2:12 - Use abstraction
to decompose a problem into sub problems.
- 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
Computer Science
Principles
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.1.1B - Creating
computational artifacts employs an iterative and often exploratory process
to translate ideas into tangible form.
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.1A - A computational
artifact is anything created by a human using a computer and can be, but is
not limited to, a program, an image, audio, video, a presentation, or a web
page file.
1.2.3 - Create a new computational artifact by combining or modifying
existing artifacts. [P2]
- 1.2.3A - Creating
computational artifacts can be done by combining and modifying existing
artifacts or by creating new artifacts.
1.2.4 - Collaborate in the creation of computational artifacts. [P6]
- 1.2.4A - A
collaboratively created computational artifact reflects effort by more than
one person.
- 1.2.4D - Effective
collaboration strategies enhance performance.
- 1.2.4E - Collaboration
facilitates the application of multiple perspectives (including
sociocultural perspectives) and diverse talents and skills in developing
computational artifacts.
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.1B - Programs
developed for creative expression, to satisfy personal curiosity, or to
create new knowledge may have visual, audible, or tactile inputs and
outputs.
- 5.1.1C - Programs
developed for creative expression, to satisfy personal curiosity, or to
create new knowledge may be developed with different standards or methods
than programs developed for widespread distribution.
5.1.2 - Develop a correct program to solve problems. [P2]
- 5.1.2J - A programmer
designs, implements, tests, debugs, and maintains programs when solving
problems.
5.1.3 - Collaborate to develop a program. [P6]
- 5.1.3D - Collaboration
can make it easier to find and correct errors when developing programs.
5.4 - Programs are developed, maintained, and used by people for
different purposes.
5.4.1 - Evaluate the correctness of a program. [P4]
- 5.4.1C - Meaningful
names for variables and procedures help people better understand programs.
- 5.4.1E - Locating and
correcting errors in a program is called debugging the program.
- 5.4.1F - Knowledge of
what a program is supposed to do is required in order to find most program
errors.
- 5.4.1M - The
functionality of a program is often described by how a user interacts with
it
Objectives
Students will be able to:
- Write
a simple event-driven program that has multiple screens.
- Recognize
debugging as an important step in developing a program.
- Use
console.log to debug simple issues related to event-driven programming
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:
Vocabulary
- Debugging: Finding and fixing problems in an
algorithm or program.
- Event-driven program: a program designed to run
blocks of code or functions in response to specified events (e.g. a mouse
click)
- Event handling: an overarching term for the
coding tasks involved in making a program respond to events by triggering
functions.
Introduced
Code
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:
- adding
more screens
- and
adding a way for the game to end.
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:
- Write
a little code
- Test
it to make sure it does what you think
- Write
the next piece
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.
Thursday Day E
- 1-24-19 and Friday Day F – 1-25-19
Lesson
3: Building an App: Multi-Screen App
Standards Alignment
CSTA K-12
Computer Science Standards
CL - Collaboration
- CL.L2:4 - Exhibit
dispositions necessary for collaboration: providing useful feedback,
integrating feedback, understanding and accepting multiple perspectives,
socialization.
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).
- CPP.L3A:5 - Use Application
Program Interfaces (APIs) and libraries to facilitate programming solutions.
CT - Computational Thinking
- CT.L2:12 - Use abstraction
to decompose a problem into sub problems.
- 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.
Computer Science
Principles
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.1.1A - A creative
process in the development of a computational artifact can include, but is
not limited to, employing nontraditional, nonprescribed techniques; the use
of novel combinations of artifacts, tools, and techniques; and the
exploration of personal curiosities.
- 1.1.1B - Creating
computational artifacts employs an iterative and often exploratory process
to translate ideas into tangible form.
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.1A - A computational
artifact is anything created by a human using a computer and can be, but is
not limited to, a program, an image, audio, video, a presentation, or a web
page file.
- 1.2.1B - Creating
computational artifacts requires understanding and using software tools and
services.
- 1.2.1C - Computing tools
and techniques are used to create computational artifacts and can include,
but are not limited to, programming IDEs, spreadsheets, 3D printers, or text
editors.
- 1.2.1E - Creative
expressions in a computational artifact can reflect personal expressions of
ideas or interests.
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.1A - Programs are
developed and used in a variety of ways by a wide range of people depending
on the goals of the programmer.
- 5.1.1B - Programs
developed for creative expression, to satisfy personal curiosity, or to
create new knowledge may have visual, audible, or tactile inputs and
outputs.
5.1.2 - Develop a correct program to solve problems. [P2]
- 5.1.2A - An iterative
process of program development helps in developing a correct program to
solve problems.
- 5.1.2B - Developing
correct program components and then combining them helps in creating correct
programs.
- 5.1.2C - Incrementally
adding tested program segments to correct, working programs helps create
large correct programs.
- 5.1.2D - Program
documentation helps programmers develop and maintain correct programs to
efficiently solve problems.
- 5.1.2E - Documentation
about program components, such as blocks and procedures, helps in developing
and maintaining programs.
- 5.1.2F - Documentation
helps in developing and maintaining programs when working individually or in
collaborative programming environments
- 5.1.2J - A programmer
designs, implements, tests, debugs, and maintains programs when solving
problems.
5.1.3 - Collaborate to develop a program. [P6]
- 5.1.3B - Collaboration
facilitates multiple perspectives in developing ideas for solving problems
by programming.
- 5.1.3C - Collaboration
in the iterative development of a program requires different skills than
developing a program alone.
- 5.1.3D - Collaboration
can make it easier to find and correct errors when developing programs.
5.4 - Programs are developed, maintained, and used by people for
different purposes.
5.4.1 - Evaluate the correctness of a program. [P4]
- 5.4.1E - Locating and
correcting errors in a program is called debugging the program.
- 5.4.1F - Knowledge of
what a program is supposed to do is required in order to find most program
errors.
- 5.4.1G - Examples of
intended behavior on specific inputs help people understand what a program
is supposed to do.
- 5.4.1L - An explanation
of a program helps people understand the functionality and purpose of it.
Objectives
Students will be able to:
- Develop and design a plan for multi-screen
application
- Collaborate with a "thought partner"
during the implementation of a project
- Create a multi-screen application in App Lab
using simple UI elements and event handling
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:
Vocabulary
- Event-driven
program - a program designed to run blocks of code or functions in
response to specified events (e.g. a mouse click)
- Event
handling - an overarching term for the coding tasks involved in making
a program respond to events by triggering functions.
This lesson is not heavy on new CS content. It is primarily a
time to reinforce programming skills in App Lab while quickly prototyping a
simple event-driven application. The lesson does, however, fall at the
intersection of the Big Ideas of Creativity and Programming. The fact that
students will share ideas before programming their projects and will provide
feedback using a peer rubric also mirrors some of the practices of collaboration
that students can employ on the Create Performance Task.
As for the project itself, it probably bears the closest
resemblance to creating a “computational artifact” as outlined in the
Explore Performance Task – Creating something to communicate an idea
non-textually
Guided Instruction:
1.
Today you will get a chance to make an app of your own design
that uses multiple screens and lets you practice using design mode and
programming some simple user interactions.
2.
You should pair up with a “coding buddy” for this project.
3.
Students will make a project independently, but have a partner
with whom they can get instant and rapid feedback and help.
4.
Log into code studio, Go to Unit 5 and Lesson 3 and proceed
through today’s exercises.
- Complete
for homework. Focus should be primarily on debugging and making final
aesthetic changes.
- Will
will review your apps the next time we meet.
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 3.
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 set-forth within the CP Task Rubric
above.
Ø
Complete
your ticket to leave journal entry.
Thanks for a great
week!
Mr. PC
Create Performance
Task Student Resources:
Review Submissions of last year’s AP CSP Students
For
the Students
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.ted.com/talks
www.digg.com
http://www.teachersdomain.org
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
- How do computer represent
information?
- How does information get from one
computer to another?
- What challenges are involved when
developing systems to represent or transmit information?
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
Vocabulary
- Innovation - A
novel or improved idea, device, product, etc, or the development thereof.
- Binary - A way of representing
information using only two options.
- Bit - A contraction of
"Binary Digit". A bit is the single unit of information in a
computer, typically represented as a 0 or 1.
- Bandwidth - Transmission
capacity measure by bit rate
- Bit - A contraction of
"Binary Digit". A bit is the single unit of information in a
computer, typically represented as a 0 or 1.
- Bit rate - (sometimes written
bitrate) the number of bits that are conveyed or processed per unit of time.
e.g. 8 bits/sec.
- Latency - Time it takes for a
bit to travel from its sender to its receiver.
- Protocol - A set of rules
governing the exchange or transmission of data between devices.
- ASCII - ASCII - American
Standard Code for Information Interchange. ASCII is the universally
recognized raw text format that any computer can understand.
- code - (v) to write code, or to
write instructions for a computer.
- IETF -
Internet Engineering Task Force - develops and promotes voluntary Internet
standards and protocols, in particular the standards that comprise the
Internet protocol suite (TCP/IP).
- Internet -
A group of computers and servers that are connected to each other.
- Net
Neutrality - the principle that all Internet traffic should be treated
equally by Internet Service Providers
- IP
Address - A number assigned to any item that is connected to the
Internet.
- Packets -
Small chunks of information that have been carefully formed from larger
chunks of information
- DNS -
The service that translates URLs to IP addresses.
- HTTP -
HyperText Transfer Protocol - the protocol used for transmitting web pages
over the Internet
- Net
Neutrality - the principle that all Internet traffic should be treated
equally by Internet Service Providers.
- TCP -
Transmission Control Protocol - provides reliable, ordered, and
error-checked delivery of a stream of packets on the internet. TCP is
tightly linked with IP and usually seen as TCP/IP in writing.
Unit 1: Chapter 2: Inventing the Internet
Big Questions
- What problems was the internet
designed to solve and how does it solve these problems?
- How has the design of the internet
allowed it to grow or evolve?
- Who or what is “in charge” of the
internet?
- How should we resolve dilemmas caused
by the structure and continuing growth of the internet?
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
- How
are images and other complex information represented in a computer?
- How
can we reduce the size of digital information and what tradeoffs are
involved?
- Why
are there so many different formats for representing the same kind of
information?
Enduring Understandings
- 1.1
Creative development can be an essential process for creating
computational artifacts.
- 1.3
Computing can extend traditional forms of human expression and experience.
- 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.
Vocabulary
- Heuristic -
a problem solving approach (algorithm) to find a satisfactory solution where
finding an optimal or exact solution is impractical or impossible.
- Lossless Compression -
a data compression algorithm that allows the original data to be perfectly
reconstructed from the compressed data.
- Image -
A type of data used for graphics or pictures.
- metadata -
is data that describes other data. For example, a digital image may include
metadata that describe the size of the image, number of colors, or
resolution.
- pixel -
short for "picture element" it is the fundamental unit of a
digital image, typically a tiny square or dot which contains a single point
of color of a larger image.
- RGB -
the RGB color model uses varying intensities of (R)ed, (G)reen, and (B)lue
light are added together in to reproduce a broad array of colors.
- Lossy Compression -
(or irreversible compression) a data compression method that uses inexact
approximations, discarding some data to represent the content. Most commonly
seen in image formats like .jpg.
- Abstraction -
Pulling out specific differences to make one solution work for multiple
problems.
Unit 3 - Intro to Programming
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
Big
Questions
- Why
do we need algorithms?
- How
is designing an algorithm to solve a problem different from other kinds of
problem solving?
- How
do you design a solution for a problem so that is programmable?
- What
does it mean to be a "creative" programmer?
- How
do programmers collaborate?
Enduring
Understandings
- 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.
- 2.2
Multiple levels of abstraction are used to write programs or create other
computational artifacts
- 4.1
Algorithms are precise sequences of instructions for processes that can be
executed by a computer and are implemented using programming languages.
- 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.2
People write programs to execute algorithms.
- 5.3
Programming is facilitated by appropriate abstractions.
Unit
3 Vocabulary
Vocabulary
- Algorithm: A precise sequence of
instructions for processes that can be executed by a computer
- High Level Programming Language: A
programming language with many commands and features designed to make common
tasks easier to program. Any high level functionality is encapsulated as
combinations of low level commands.
- Low Level Programming Language: A
programming language that captures only the most primitive operations
available to a machine. Anything that a computer can do can be represented
with combinations of low level commands.
- Iterate: To repeat in order to
achieve, or get closer to, a desired goal.
- Selection: A generic term for a type
of programming statement (usually an if-statement) that uses a Boolean
condition to determine, or select, whether or not to run a certain block of
statements.
- Sequencing: Putting commands in
correct order so computers can read the commands.
- Pair Programming: A method of
programming in which two programmers write code using a single computer. One
programmer in the "driver" role uses the mouse and keyboard to
actually write the code while a second acts as a "navigator",
keeping track of the big picture, catching errors, and making suggestions.
Programmers switch roles frequently and communicate throughout the process.
- Turtle Programming: a classic method
for learning programming with commands to control movement and drawing of an
on-screen robot called a "turtle". The turtle hearkens back to
early implementations in which children programmed a physical robot whose
dome-like shape was reminiscent of a turtle.
- Function: A named group of
programming instructions. Functions are reusable abstractions that reduce
the complexity of writing and maintaining programs.
- Top Down Design: a problem solving
approach (also known as stepwise design) in which you break down a system to
gain insight into the sub-systems that make it up.
- API: a collection of commands made
available to a programmer
- Documentation: a description of the
behavior of a command, function, library, API, etc.
- Hexadecimal: A base-16 number system
that uses sixteen distinct symbols 0-9 and A-F to represent numbers from 0
to 15.
- Library: a collection of commands /
functions, typically with a shared purpose
- Parameter: An extra piece of
information passed to a function to customize it for a specific need
- For Loop: Loops that have a
predetermined beginning, end, and increment (step interval).
- Loop: The action of doing something
over and over again.
Unit 4 - Big Data and Privacy
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.
Chapter
1: Big Data and Privacy
Big
Questions
- What
opportunities do large data sets provide for solving problems and creating
knowledge?
- How
is cybersecurity impacting the ever-increasing number of Internet users?
- How
does cryptography work?
Enduring
Understandings
- 3.2
Computing facilitates exploration and the discovery of connections in
information.
- 3.3
There are trade offs when representing information as digital data.
- 4.2
Algorithms can solve many but not all computational problems.
- 6.3
Cybersecurity is an important concern for the Internet and the systems
built on it.
- 7.1
Computing enhances communication, interaction, and cognition.
- 7.3
Computing has a global affect -- both beneficial and harmful -- on people
and society.
- 7.4
Computing innovations influence and are influenced by the economic,
social, and cultural contexts in which they are designed and used.
Unit
4 Vocabulary
Vocabulary
- Big Data: a broad term for datasets
so large or complex that traditional data processing applications are
inadequate.
- Moore's Law: a predication made by
Gordon Moore in 1965 that computing power will double every 1.5-2 years, it
has remained more or less true ever since.
- One-pager: A business/corporate term
for a one-page document that summarizes a large issue, topic or plan.
- Caesar Cipher : a technique for
encryption that shifts the alphabet by some number of characters
- Cipher: the generic term for a
technique (or algorithm) that performs encryption
- Cracking encryption: When you attempt
to decode a secret message without knowing all the specifics of the cipher,
you are trying to "crack" the encryption.
- Decryption: a process that reverses
encryption, taking a secret message and reproducing the original plain text
- Encryption: a process of encoding
messages to keep them secret, so only "authorized" parties can
read it.
- Random Substitution Cipher: an
encryption technique that maps each letter of the alphabet to a randomly
chosen other letters of the alphabet.
- Computationally Hard: a "hard'
problem for a computer is one in which it cannot arrive at a solution in a
reasonable amount of time.
- asymmetric encryption: used in public
key encryption, it is scheme in which the key to encrypt data is different
from the key to decrypt.
- modulo: a mathematical operation that
returns the remainder after integer division. Example: 7 MOD 4 = 3
- Private Key: In an asymmetric
encryption scheme the decryption key is kept private and never shared, so
only the intended recipient has the ability to decrypt a message that has
been encrypted with a public key.
- Public Key Encryption: Used
prevalently on the web, it allows for secure messages to be sent between
parties without having to agree on, or share, a secret key. It uses an
asymmetric encryption scheme in which the encryption key is made public, but
the decryption key is kept private.
- Antivirus Software: usually keeps big
lists of known viruses and scans your computer looking for the virus
programs in order to get rid of them.
- DDoS Attack: Distributed Denial of
Service Attack. Typically a virus installed on many computers (thousands)
activate at the same time and flood a target with traffic to the point the
server becomes overwhelmed.
- Firewall: software that runs on
servers (often routers) that only allows traffic through according to some
set of security rules.
- Phishing Scam: a thief trying to
trick you into sending them sensitive information. Typically these include
emails about system updates asking you send your username and password,
social security number or other things.
- SSL/TLS: Secure Sockets layer /
Transport Layer Security - An encryption layer of HTTP that uses public key
cryptography to establish a secure connection.
- Virus: a program that runs on a
computer to do something the owner of the computer does not intend.