Lesson Summary

Summary

EarSketch teaches computer science through music composition and remixing. No prior knowledge of either computer science or music is needed. Students can express their own unique style. EarSketch also lends itself well to student collaboration as well as a discussion on proprietary ownership.

EarSketch is a web-based application, so there is no software to install. You need a current version of Chrome, Safari, Firefox, or Edge running on Mac, Windows, Linux, a ChromeBook, or a tablet with an attached keyboard. You also need headphones or speakers.

EarSketch consists of two components:

  1. A free online curriculum that teaches programming concepts using Python while teaching music composition and remixing.
  2. A free online software toolset, which contains a code editor to write and test Python code and a Digital Audio Workstation (DAW) to actually play the music.

 Students create an account to get Cloud storage for their files.

  • This curriculum does not ask students to post anything on this or on any public web site.   
  • No downloads or installs are needed other than current web browsers.   EarSketch runs inside a recent web browser Chrome, Firefox, Safari or Microsoft Edge. (Internet Explorer < 12 is not supported.)
  • Students need ear buds or headphones for these lessons.

Outcomes

  • Students will understand the basics of music including beat, measure, track, and effects.  
  • Students will use the Python programming language to create and remix their own music.  
  • Students will apply Python programming concepts - iteration, user-defined functions, debugging
  • Students will apply Python programming concepts - list creation, access, modification and traversal

Optionally from Section 3.

  • Students will use the Python programming language to create and remix their own music including effects and musical forms
  • Students will use the Python programming language to create and remix their own music including randomness and stochastic composition
  • Students will explore sonification -a way to use non-speech audio to convey information, or in other words, turning data into sound.
  • Students use Python to enable the computer to analyze audio.
  • Students will implement recursive Python programs

 Overview

The Lesson is divided into three sections.  

Section 1 Getting Started with EarSketch  is anticipated to take about 5-6 sessions.

  1. Programming for Personal Expression
  2. Program Design and Functions
  3. Project 1
  4. Copyright and Correctness
  5. Section 1 Assessment

Section 2 is anticipated to take about 5 sessions to complete these EarSketch units.

  1. Reusing Code
  2. Strings and Debugging
  3. Project 2
  4. Conditionals and Data Strucutres
  5. Section 2 Assessment

 

 

Section 3 is optional and is anticipated to also take about 5-6 sessions to complete these Earsketch units.

Each session will have the following elements.

  1. Getting Started: (5 min)
  2. Guided Activities (40 min)
  3. Wrap Up (5 min)

Sources

EarSketch curriculum is available at https://earsketch.gatech.edu/earsketch2/#. The EarSketch curriculum and teaching materials are licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0) license.

 

 

Learning Objectives

Math Common Core Practice:

  • MP1: Make sense of problems and persevere in solving them.
  • MP2: Reason abstractly and quantitatively.
  • MP5: Use appropriate tools strategically.
  • MP6: Attend to precision.
  • MP7: Look for and make use of structure.
  • MP8: Look for and express regularity in repeated reasoning.

Common Core Math:

  • F-IF.1-3: Understand the concept of a function and use function notation
  • F-BF.1-2: Build a function that models a relationship between two quantities
  • F-LE.5: Interpret expressions for functions in terms of the situation they model

Common Core ELA:

  • RST 12.3 - Precisely follow a complex multistep procedure
  • RST 12.4 - Determine the meaning of symbols, key terms, and other domain-specific words and phrases
  • RST 12.7 - Integrate and evaluate multiple sources of information presented in diverse formats and media
  • RST 12.9 - Synthesize information from a range of sources
  • WHST 12.2 - Write informative/explanatory texts, including the narration of historical events, scientific procedures/experiments, or technical processes
  • WHST 12.4 - Produce clear and coherent writing in which the development, organization, and style are appropriate to task, purpose, and audience
  • WHST 12.6 - Use technology, including the Internet, to produce, publish, and update writing products

NGSS Practices:

  • 2. Developing and using models
  • 3. Planning and carrying out investigations
  • 4. Analyzing and interpreting data
  • 5. Using mathematics and computational thinking

NGSS Content:

  • HS-ETS1-2. Design a solution to a complex real-world problem by breaking it down into smaller, more manageable problems that can be solved through engineering.

Essential Questions

  • How can a creative development process affect the creation of computational artifacts?
  • How can computing and the use of computational tools foster creative expression?
  • How can computing extend traditional forms of human expression and experience?
  • How are vastly different kinds of data, physical phenomena, and mathematical concepts represented on a computer?
  • How does abstraction help us in writing programs, creating computational artifacts and solving problems?
  • How are programs developed to help people, organizations or society solve problems?
  • How are programs used for creative expression, to satisfy personal curiosity or to create new knowledge?
  • How does abstraction make the development of computer programs possible?
  • How do people develop and test computer programs?
  • Which mathematical and logical concepts are fundamental to computer programming?
  • How does computing enable innovation?
  • What are some potential beneficial and harmful effects of computing?
  • How do economic, social, and cultural contexts influence innovation and the use of computing?

Teacher Resources

Student computer usage for this lesson is: required

Students will need earbuds or headphones for these lessons.

EarSketch consists of three components:

The software toolset component includes the EarSketch code editor and digital audio workstation environment to write code and make music. It runs inside a web browser with the latest versions of Chrome, FireFox, or Safari. Internet Explorer is not supported and the digital audio workstation will not load. You must use a browser that supports Web Audio.  (Internet Explorer 12 plans to include support for Web Audio.)

Teachers should review the first two modules of the student curriculum to learn the components of EarSketch: Unit 1 (Getting Started) and Unit 2 (Effects and Beats).

Next, teachers should access the teacher curriculum, which is designed to help computer science teachers with little or no music knowledge begin teaching EarSketch in their classrooms. It presents music concepts, rhythms, pattern and variety, and effects as they relate to music programming in EarSketch. 

Finally, teachers should complete the student curriculum to get an idea of what students will be learning and doing.

Lesson Plan

Section 1 Introduction to EarSketch

Session 1

Getting Started (5 min)

Journal Prompt: What are possible advantages there are to creating and mixing music on a computer?

Responses should be collected from each student and used to create a word cloud. Project the following four benefits to programming music and ask, "Are any of these missing?"

  1. You can automate repetitive, tedious tasks.
  2. You can experiment with music more easily.
  3. You can roll the dice. (Introducing randomization into music.)
  4. You can turn data into music and interpret data in a musical way.

Students should select one of these four points and record throughts and observations as to their meanings.

Guided Activities (40 min)

Direct students to Unit 1: Getting Started with EarSketch (http://earsketch.gatech.edu/uncategorized/unit-1).

Within the first unit, they should explore the section 1.1. Introduction to the DAW (Digital Audio Workstations) (http://earsketch.gatech.edu/uncategorized/unit-1#chap11). Students should research the following definitions and procedures, then share them with a partner.

Definitions

  1. DAW
  2. measure
  3. track

Procedures

  1. How does one create, manage and play (run) an EarSketch script?
  2. How does one select and play tracks in the digital audio workstation in EarSketch?

1. Especially important is the process of creating, opening, running, editing, and saving EarSketch python scripts both on the EarSketch cloud as well as in the classroom. Once students have completed this task, demonstrate the following sections for them:

   1.4 Running a Script

   1.5 Adding Comments

   1.6 The DAW in Detail

   1.8 Sections of an EarSketch Script

   1.9 Creating a New Script

1.10 Composing In EarSketch

 

2  All programs process data, even those being developed for personal expression.  Demonstrate interactively the use of Python variables to store and retrieve data and to express values. Review the concept of abstraction from previous units in the course (Lessons 2-1, 3-1, 4-7) and have students identify at least one detail that is hidden by each of data representation they review. 

   2.1 Rhythm

   2.2 Data Types

   2.3 Functions

   2.4 Numbers

   2.5 Variables

        2.6 Constants

Wrap Up (5 min)

It is important that students know how to use the curriculum and the online development environment.  Students should reflect on the process of creating, saving and retieving program in EarSketch.

  1. Which questions have been answered?
  2. Which questions remain?
  3. What new questions arose?

Assignment

Assignment 1.1

This assignment can be found within the curriculum resources at Unit 6 > Lesson 1 > EarSketch Units > Unit 1.

 

Session 2

Getting Started (5 min)

Journal: Students should open their Assigment 1.1 (homework from the previous section) and discuss what they learned while completing it with their elbow partners. They should record in their journals two observations made either in the previous session or during the completion of the assignment. Any questions remaining after these discussions should be shared by students.

Guided Activities (40 min)

Beats, Effects and Tempo 

Program Design and Functions

Students work in pairs through the 8 sections below and add any questions they have to those posted during the getting started session.

Debugging and Documenting

Effects in EarSketch: setEffect

Tempo and Pitch

Students complete Quiz 2.1.

Wrap Up (5 min)

Identify and responding to questions students have shared.  Use other studetns as a resource to answer as many questions as possible.

Assignment

Distribute and assign Assignment 2.2.   

 

Session 3

Getting Started (5 min)

Collect: Assignments 1.1 and 2.2

Journal: Students should discuss with their elbow partners the first two assignments, reflecting on the lessons learned and identifying any questions that are lingering. Unresolved questions should be posted on the board.

Guided Activities (40 min)

Some time should be used to respond to questions students posted at the beginning of the session. If questions are regarding upcoming material answer these during the next activity.

Students should work together to complete a  project for units 1 through 3. This project can be found under Unit 6 Resources > Lesson 01 - Earsketch > Projects > Project Unit 1-3_1.docx. The final product should be one working program per group.

 

Wrap Up (5 min)

Students should get into pairs and complete Quiz 3.1.  Collect an exit slip from students of any questions they need help with. Collect the quiz. 

Assignment

Students should complete Assignment 3.1 for the next session.

 

Session 4

Getting Started (5 min)

Journal: Students should discuss with elbow partners the lessons they learned from session 3 (including the assignment and quiz). Any unresolved questions should be posted to the board.

Guided Activities (40 min)

Before continuing, any questions regarding last session's formative quiz or assignment 3.1 should be answered.

Students again work in pairs to review Program Design and Functions using the following elements in the EarSketch curriculum.

Debugging and Documenting

   3.1 What is Debugging?

   3.2 Using the Console

   3.3 Documenting Code

   3.4 Common Errors

Effects in EarSketch: setEffect

4.1 Using Effects in EarSketch

Tempo and Pitch

   6.1 Tempo

   6.2 Pitch

   6.3 Transition Strategies

Wrap Up (5 min)

Students should reflect on how they benefited from cooperating with one another as partners and how they might beneifit from collaboration on the next project.

Assignment

Students should prepare for the section 1 exam using the assignments, quizzes and EarSketch units 1-3 as resources.

 

Session 5 (Section 1 Assessment)

Getting Started (5 min)

Students should upload their collaborative projects from session 4, including the .wav output of the music they created.

Guided Activities (40 min)

Students will take the section 1 test (units 1-3). The test to be administered can be found at the following location: Unit 6 Resources > Lesson 01 - Earsketch > Section Tests > Unit 1-3 Test.docx.

Time permitting, discuss the current music sharing sight and the ethical issues surrounding public sites. If students require more time to complete their collaborative projects, some could be given here as well.

Wrap Up (5 min)

Going foward, host a version of March Musical Madness. Hold a single elimination tournament to select the class musical section 1 champion.  If going on to sections two and three, consider doing just one round of the contest.  Each week allow pairs to enter their best product either from something newly created or modified.

 

Section 2 Dynamic Music Generation 

Session 6

Getting Started (5 mins)

Students should brainstorm lessons learned from the first section. They will be working in pairs throughout this entire section so this is a good time to also discuss standards for collaboration and cooperation. Partners/ work groups should be specified here. Notes gathered during this section, along with the EarSketch API documentation, will be allowed for the section 2 exam. 

Guided Activities (40 mins)

Student work in pairs through the Reusing Code sections below and post any questions they have.

Looping

   9.1 The For-Loop

   9.2 Components of a For-Loop

   9.3 Example Loop

   9.4 Following Control Flow

   9.5 Adding Effects with Loops

   9.6 Automating Effects with Loops

Musical Form and Custom Functions

10.1 Sections and Form

10.2 A-B-A Form

10.3 Custom Functions

10.4 Return Statements

 

Wrap Up (5 mins)

Using students as a resource whenever possible, answer any questions students have identified.

Working in pairs, students should complete Quiz 4. This quiz can be found under resources at the following location:  Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 4. 

Assignment

Optional - Time permitting have stuend seletc a project and collaborate in its development.

With partner/work group, select an assignments from the following list (these assignments can be found under the following: Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 4).

Assignment 4.1 

Assignment 4.2

Assignment 4.3

Assignment 4.4

Assignment 4.5

 

Session 7

Getting Started (5 mins)

Assess student progress from the previous session. Student working groups should identify questions or concerns. It is crucial that major concerns are addressed as soon as possible.

Guided Activites (40 min)

Student work in pairs through theStrings and Making Custom Beats: makeBeat sections below and post any questions they have. 

12.1 Strings

12.2 Beat Patterns with Strings

12.3 makeBeat()

13.1 String Concatenation

Debugging Logic

15.1 Printing to the Console

15.2 The Debugging Process

15.3 Common Errors

 

 

Wrap Up (5 min)

Using students as a resource whenever possible, answer any questions students have identified.

Working in pairs, students should complete Quiz 5.1. This quiz can be found under resources at the following location:  Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 5.

 

Assignment

Select and assign one of the following to assignments (these assignments can be found under the following: Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 5):

Assignment 5.1

Assignment 5.2

 

Session 8

Getting Started (5 mins)

Assess student progress from the previous session. Student working groups should identify questions or concerns, making sure to share all concerns pertaining covered material before the following session.

Guided Activities (40 mins)

Students should work together to complete a  project for units 1 through 3. This project can be found under Unit 6 Resources > Lesson 01 - Earsketch > Projects > Project Unit 4-6_1.docx. The final product should be one working program per group.

Time permitting students shoul work individually on  assignment 6.1. This assignment can be found within the curriculum resources at Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 6.

 

Wrap Up (5 min)

Students should identify questions or concerns and share those that they think are most important, supplementing their notes with important comments.

Assignment

Formative Assessment (15 min)

Working in pairs, students should complete Quiz 6.1. This quiz can be found under resources at the following location:  Unit 6 Resources > Lesson 01 - EarSketch > EarSketch Units > Unit 6.

 

 

Session 9

Getting Started (5 mins)

Assess student progress from the previous session. Student working groups should identify questions or concerns, making sure to share all concerns pertaining covered material before the following session.

Guided Activites (45 mins)

Have your students select and complete (in pairs) one of the following two projects. These projects can be found under Unit 6 Resources > Lesson 01 - EarSketch > Projects:

Project Unit 4-6_1.docx

Project Unit 4-6_2.docx

Assignment

Students should consolidate their notes and prepare for the section 2 exam next session. REMINDER: It is an open note exam.

 

Session 10

Getting Started (5 mins)

Journal: Have students reflect on the ethical concerns raised by digital media innovations such as EarSketch. In their journals, they should write down a specific ethical issue associated with the use of EarSketch. They should also point out one additional piece of online technology that raises digital media related ethical concerns.

Guided Activity (40 mins)

Distribute and administer the section 2 exam. This exam can be found at the following location: Unit 6 Resources > Lesson 01 - EarSketch > Section Tests > Unit 4-6 Test.docx.

Wrap Up (5 mins)

Host a version of March Musical Madness. Hold a single elimination tournament to select the class musical section 2 champion. If going on to section three, consider doing just one round of the contest. Each week allow pairs to enter their best product. It can be derived from the in-class work or be a completely new, out-of-class creation.

 

Section 3 Teaching Computers to Listen (Optional)

Section 3 is optional and is anticipated to also take about 5 sessions to complete these EarSketch units.  Students should be working very independently during this unit in prepartion for the Create Task.

11 EarSketch Unit 7: Teaching Computers [1 session]

12 EarSketch Unit 9: Recursion [1 session]

13 Project 3 [2 sessions]

14 Summative Assessment

Session 11:

Getting Started

 

Guided Activities

Unit 7: Teaching Computers

 

Formative Assessment

Quiz 7.1.docx

Assignment:

7.1

Wrap Up:

In pairs. then study groups students identify questions or concerns and share those they think are most important and supplement their notes with important comments.

 

Session 12:

Getting Started

Assess student progress from Session 11.  Groups identify questions or concerns and share any items of concern before day 2 of this section.

 

Guided Activities

Unit 9: Recursion

Formative Assessment

Quiz 9.1

Assignment:

9.1

Wrap Up:

In pairs. then study groups students identify questions or concerns and share those they think are most important and supplement their notes with important comments.

 

 

Session 13 and 14:

Getting Started

Assess student progress from Session 12.  Groups identify questions or concerns and share any items of concern before days 3 and 4 of this section. 

 

Guided Activities

Project Unit 7-9_1.docx

Project Unit 7-9_2.docx

 

Assignment:

Prepare for Section 3 exam.

Wrap Up:

In pairs. then study groups students identify questions or concerns and share those they think are most important and supplement their notes with important comments.

 

 Session 15:

Guided Activities

Unit 7-9 Test.docx

Wrap Up:

Host a version of March Musical Madness.  Hold a single elimination tournament to select the class musical Section 2 champion.  If going on to three consider doing just one round of the contest.  Each week allow pairs to enter their best product either from somethnnewly created or modified.

Assignment:

None

 


Evidence of Learning

Formative Assessment

Section 1:  

Quiz 1.4-1, 1.4.2, 2.1-1, 2.1.2, 3.1, 3,2 and 3.3

 

Section 1:  

Quiz 4, 5.1 and 6.1

 

Section 1:  

Quiz 7.1 and 9.1

 


Summative Assessment

Section 1:  

Project Unit 1-3_1 and Unit 1-3 Test 

 

Section 2:

Project Unit 4-6_1 and Unit 4-6 Test

 

Section 3:

Project Unit 7-9_1 and Unit 7-9 Test 

Lesson Summary

Use EarSketch to review the programming topics learned this year and as a final preparation for the Create Performance Task.

Lesson Outcomes

  • Use EarSketch to write programs for personal expression and to facilitate the expressions of others.
  • Explain legal and ethical issues related to the use of EarSketch or other computing platforms.
  • Use EarSketch to visualize data in the form of music.
  • Use data abstractions with EarSketch and explain their benefit to program development.
  • Use sequence, selection, and iteration both in pseudocode and in program code.
  • Develop procedures that leverage parameters for code reuse and explain their benefit to program development.
  • Use program code in existing libraries and explain its benefit to program development.
  • Demonstrate how the capabilities of users and their tools impact their ability to process data and the results.

Sessions 1 - 6 are required.

Sessions 7 - 10 can be used as a final practice for the Create Performance Task.

Learning Objectives

CSP Objectives

  • EU CRD-1 - Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.
    • LO CRD-1.A - Explain how computing innovations are improved through collaboration.
  • EU CRD-2 - Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
    • LO CRD-2.A - Describe the purpose of a computing innovation.
    • LO CRD-2.B - Explain how a program or code segment functions.
    • LO CRD-2.C - Identify input(s) to a program.
    • LO CRD-2.E - Develop a program using a development process.
    • LO CRD-2.F - Design a program and its user interface.
    • LO CRD-2.J - Identify inputs and corresponding expected outputs or behaviors that can be used to check the correctness of an algorithm or program.
  • EU DAT-1 - The way a computer represents data internally is different from the way the data is interpreted and displayed for the user. Programs are used to translate data into a representation more easily understood by people.
    • LO DAT-1.A - Explain how data can be represented using bits.
  • EU AAP-1 - To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.
    • LO AAP-1.A - Represent a value with a variable.
    • LO AAP-1.B - Determine the value of a variable as a result of an assignment.
    • LO AAP-1.C - Represent a list or string using a variable.
    • LO AAP-1.D - For data abstraction: a. Develop data abstraction using lists to store multiple elements. b. Explain how the use of data abstraction manages complexity in program code.
  • EU AAP-2 - The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
    • LO AAP-2.A - Express an algorithm that uses sequencing without using a programming language.
    • LO AAP-2.B - Represent a step-by-step algorithmic process using sequential code statements.
    • LO AAP-2.C - Evaluate expressions that use arithmetic operators.
    • LO AAP-2.E - For relationships between two variables, expressions, or values: a. Write expressions using relational operators. b. Evaluate expressions that use relational operators.
    • LO AAP-2.G - Express an algorithm that uses selection without using a programming language.
    • LO AAP-2.H - For selection: a. Write conditional statements. b. Determine the result of conditional statements.
    • LO AAP-2.J - Express an algorithm that uses iteration without using a programming language.
    • LO AAP-2.K - For iteration: a. Write iteration statements. b. Determine the result or side-effect of iteration statements.
    • LO AAP-2.O - For algorithms involving elements of a list: a. Write iteration statements to traverse a list. b. Determine the result of an algorithm that includes list traversals.
  • EU AAP-3 - Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
    • LO AAP-3.A - For procedure calls: a. Write statements to call procedures. b. Determine the result or effect of a procedure call.
    • LO AAP-3.B - Explain how the use of procedural abstraction manages complexity in a program.
    • LO AAP-3.D - Select appropriate libraries or existing code segments to use in creating new programs.
    • LO AAP-3.E - For generating random values: a. Write expressions to generate possible values. b. Evaluate expressions to determine the possible results.
    • LO AAP-3.F - For simulations: a. Explain how computers can be used to represent real-world phenomena or outcomes. b. Compare simulations with real-world contexts.

Math Common Core Practice:

  • MP2: Reason abstractly and quantitatively.
  • MP5: Use appropriate tools strategically.
  • MP7: Look for and make use of structure.

Common Core Math:

  • A-SSE.1-2: Interpret the structure of expressions
  • F-IF.1-3: Understand the concept of a function and use function notation
  • F-IF.4-6: Interpret functions that arise in applications in terms of the context
  • F-BF.1-2: Build a function that models a relationship between two quantities

Common Core ELA:

  • RST 12.3 - Precisely follow a complex multistep procedure
  • RST 12.4 - Determine the meaning of symbols, key terms, and other domain-specific words and phrases
  • WHST 12.2 - Write informative/explanatory texts, including the narration of historical events, scientific procedures/experiments, or technical processes

NGSS Practices:

  • 5. Using mathematics and computational thinking
  • 6. Constructing explanations (for science) and designing solutions (engineering)

Teacher Resources

Lesson Plan

Session 1 - Introduction to EarSketch

Lesson Overview

Say: We will be using EarSketch to review the programming topics we learned this year and as a final preparation for before the Create Performance Task.  EarSketch is intended as a tool to teach novice programmers and we are no longer novices.

Activity 1

Explore the EarSketch DAW, IDE, Curriculum, API and Sound Library

  • The EarSketch Library is an example of collections of code that can be used once imported into the program.
  • The EarSketch API is an example of a programmer interface which enables programmers to use functions defined in the library.
  • Existing code segments can come from internal or external sources, such as libraries of previously written code. Libraries make constructing complex programs more managable.

EarSketch Teacher Presentation - Lesson 1

Legal and Ethical Issues

Read Unit 1 Lesson 7. 

Is it right for people to own the products of their own labor?

Who owns the music you make in EarSketch?

Why would someone give away their rights as an owner?

What provision of law protects the ownership rights of music and software creators?



Activity 2

 

First MiniTask Assignment - Same Folder

 

Make a 4 measure piece of music that has 3 sounds. All three sounds should come from the same artist and genre in the sound browser. Use the constants from the sound browser as parameters for your fitMedia() function calls. 

 

Wrap-up: (4 min )

Use the EarSketch API to find the description of these two functions:

  • fitMedia
  • setEffect

 

Session 2 Making Music with EarSketch using sequence, procedural abstraction and iteration

Getting Started

Unit 1 Summary (5 min)

 

Jigsaw the 8 sections of the Unit 1 Summary in EarSketch.  Have each group discuss - 1 min- and then share their section in their own words.  Each presentation has a 30 second time limit.

 

Activity 1 (20 min)

 

Introduction

Say: you have used plenty of functions. However, in EarSketch you aren’t limited to using the functions within the EarSketch API, like fitMedia() and setEffect(). You can make new functions to do anything you want. These custom functions allow you to group together lines of code to form a single instruction for the computer. This process is known as abstraction. 

 

This session focuses on making music using sequence and iteration, and coding large-scale changes in music efficiently. Several measures that express an idea or feeling make up a song section. Songs that contain multiple sections allow for variety and structure, or form. Intros, Verses, Choruses, and Outros are examples of sections that contribute to form.

 

Edit the script in section 9.2: A-B-A Form.

 

Say: The code is somewhat messy, and a little confusing. Code is also repeated for the second sectionA, an indication that the program could be written more efficiently.  We will improve this code using a custom function.

 

Consider the following code.  Note the definition of the function myFunction and the call of myFunction.  We will define and call custom functions to improve the A-B-A form example.

 

  1. # python code
  2. #
  3. # script_name: Custom Functions
  4. #
  5. # author: The EarSketch Team
  6. #
  7. # description: Defining our own function that makes a section of music
  8. #
  9. #
  10. #
  11. #Setup
  12. from earsketch import *
  13. init()
  14. setTempo(100)
  15. #Music
  16. # Defining our new function with two parameters
  17. def myFunction(startMeasure, endMeasure):
  18.  fitMedia(ELECTRO_DRUM_MAIN_BEAT_003, 1, startMeasure, endMeasure)
  19.  fitMedia(ELECTRO_ANALOGUE_PHASERBASS_003, 2, startMeasure, endMeasure)
  20. # Calling our function, passing it two arguments: 1 and 17.
  21. myFunction(1, 17)
  22. #Finish
  23. finish()



Say: Move Section A code into two functions named sectionA and SectionB. Use parameter startMeasure and endMeasure for each function.  Delete the second sectionA code. Call the functions using the arguments in the code snippet below. Note that sectionA is used twice but only written once.  Reuse of code is one of the advantages of procedural abstraction.

 

# Setting up an ABA musical form through function calls

sectionA(1, 5)

sectionB(5, 9)

sectionA(9, 13)

 

Examine the A-B-A-B form WITHOUT functions and compare it to the A-B-A-B Form WITH functions.

 

Think pair share: What benefit in addition to code reuse are functions to program development?

 

Activity 2 (20 Min)

 

These examples have used sequential statements and functions. Next we will use looping but first we need to examine the EarSketch function makeBeat.  Watch the first three minutes of this video about makeBeat. 

Edit the Multi Beat script in EarSketch lesson 11.3.  Run and play the music. Modify the beat strings beat 1 and beat2. Run and play the revised beats.   

Remind students about use of the makebeat() function. 

Say:

  • Strings are used with the makeBeat() function to create rhythmic patterns in EarSketch. Function makeBeat() uses a beat string parameter to define each sixteenth note sub-beat of its pattern. A 0 starts playing a clip, a + extends the note for the next sub-beat, and - creates a rest.
  • makeBeat() takes four arguments:
    • clipName: The clip a beat is constructed from.
    • trackNumber: The track on which music is placed.
    • measureNumber: The starting measure of the beat. The beat string determines the total length.
    • beatString: A string that specifies the rhythm created.

 

Edit the MultBeat script in Lesson 12.2.  Create two additional beat string variables and a second for loop.  The second for loop is to use the two new beat strings for tracks 1 and 2 but measures 5 - 8. 

Compare the Drum beat (no loops) code in Lesson 12.3 to the Drum beat (with loops) code. 

Think-pair-share: Discuss with your elbow partner at least two benefits of using looping to program development. 

 

Session 3 Visualizing Music with EarSketch 1

Warm Up (3 min)

Say: In this session, we’re going to first review how colors are represented by the computer, then show ways you can create visuals that react to the music you have been composing.  

Journal:  How would you explain to an elementary school student how pictures are stored on a cell phone?

 Activity 1 (15 min) 

Introduction 

Say:  Visualizations can be created from any data such as music. After these tutorials you will be able to make visuals like the one shown below:

https://earsketch.gatech.edu/earsketch2/videoMedia/028-01-InitialSteps-PY-JS.mp4

Discussion: Which do you think has more impact on the ability to create something of value using data: the capabilities of the user, or the capabilities of the tool they use?

Say:  We’ll start by making a basic animation (shown below), that will help us learn the skills to make more complex visuals later on. 

https://earsketch.gatech.edu/earsketch2/videoMedia/026-01-RGBColorandHexNotation-PY-JS.mp4

Say: To make computer visuals we need to first learn three concepts. Firstly, how computers understand colors. Then we’ll at how computers understand a position in a visual. Finally we’ll look at how we draw into these colors and positions.

Present the following:

RGB Color and Hex Notation

You may already know colors can be created by putting different colors together. This can happen with paint when you combine two colors, such as red and blue to make purple. Computers think of all colors by how much of red, green and blue makes up the color. This is then stored as an RGB (red, green, blue) value. RGB values are between 0 (not used at all) to 255 (full intensity). RGB values do not always have the same results as you might think from using paint, so you may want to check the table below.

RGB Combination

Name of Color

Color

255, 255, 255

White

 

0, 0, 0

Black

 

127, 127, 127

Grey

 

255, 0, 0

Red

 

0, 255, 0

Green

 

0, 0, 255

Blue

 

255, 0, 255

Magenta

 

255, 255, 0

Yellow

 

0, 255, 255

Cyan

 

The values for yellow can be the hardest to guess. To help choose colors EarSketch has a color picker tool. This lets you choose a color and then gives you the hex value underneath the color. Try moving the slider to see the values change.

 

Find the hex number for your favorite color.

A hex value is the way the computer represents the numbers, in this case the three RGB values. Hex notation is created by counting differently. Instead of going 0-9, we instead count 0-F, meaning in each space we can represent more numbers. The table below shows some examples.

Hex

Decimal

7

7

A

10 (A is one greater than 9)

C

12 (Counting in hex: 9, A, B, C)

2D

45 (2D is equal to 2*16, plus 13)

F1

241 (F1 is equal to 15*16, plus 1)

The last shows why hex notation is so useful for colors. We can use two digits to show a value that normally takes three digits (in decimal). Below are some more color examples.

Color

Hex

Decimal (x3)

White

"#FFFFFF"

255, 255, 255

Red

"#FF0000"

255, 0, 0

Grey

"#A0A0A0"

160, 160, 160

Yellow

"#FFFF00"

255, 255, 0


Say:  In EarSketch, you can find color number values with the color picker. EarSketch also includes rgbToHex() which changes three numbers to its hex value so your program can define colors.

Activity 2 (15 min)

Basic Drawing with EarSketchdrawRectangle()

For the next section we will need some music in our project to generate visuals. If you have a song prepared already, load it up. If not, use this one or quickly make your own:

from earsketch import *

init()

 

setTempo(120)

 

fitMedia(EIGHT_BIT_ANALOG_DRUM_LOOP_001,1,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,3,5)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,3,5)

 

finish()

Near the end of this script (just before finish()), we’re going to add a call to a new function: drawRectangle().  It takes five arguments: x location, y location, width, height, and color. 

As you may remember, a function allows us to abstract a more complex process into a single line of code. This is what drawRectangle() does: it takes the information for where and how to draw the shape we want and--"under the hood"--it does the more complex work of actually changing the canvas.

In order to use drawRectangle() to draw, we also need to call it from inside a special function for visualization in EarSketch called onLoop(). onLoop() is a special function that must be included in all EarSketch scripts that use visualization. We’ll learn more about how it works in the next unit. 

For now, add the following above finish():

from earsketch import *

init()

 

setTempo(120)

 

fitMedia(EIGHT_BIT_ANALOG_DRUM_LOOP_001,1,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,3,5)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,3,5)

 

def onLoop():

  drawRectangle(10,15,50,30,"#FF0000")

 

finish()

Run the program.

Say: When you hit play, you should see a red rectangle appear near the top-left corner of your canvas. It’s near (but not quite touching) that corner because the x- and y-coordinates we gave it (as the first two arguments) are 10 and 15, respectively. 

The x-coordinate represents the shape’s horizontal (left-right) position (in pixels), with greater values corresponding to further locations to the right. The y-coordinate represents the shape’s vertical (up-down) position (in pixels), with greater values corresponding to further locations down.

In other words, x- and y-coordinates increase as you go down and to the right, and 0,0 represents the top-left corner.

Assign the following modifications and predict how the visualization will appear then run your program..

  • Change the arguments to the draw rectangle function so the rectangle is taller than it is wide and so that its color is yellow.
  • Replace the drawRectangle() function argument list with: (0,0,getCanvasWidth(), getCanvasHeight(), "#FF0000")

Say:

Let’s now make a major change to our code. Copy the following code sample from EarSketch lesson 26.3. Your code should now look like the code below.

 

from earsketch import *

init()

 

setTempo(120)

 

fitMedia(EIGHT_BIT_ANALOG_DRUM_LOOP_001,1,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,3,5)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,3,5)

 

def onLoop():

 pass #empty function for now

 

def onMeasure():

 drawRectangle(0,0,getCanvasWidth(),getCanvasHeight(),rgbToHex(255,0,0))

 

finish()

 

Students run the program. 

Ask:

  1. Does the rectangle appear?
  2. What do you have to do to see the rectangle?

 

Say: The drawRectangle() call is now inside the onMeasure() function, which is called by EarSketch when your song is playing. It is called automatically at the very beginning of each measure. Press play to see the rectangle appear. Note that this is somewhat different from the behavior of EarSketch that you’ve experienced before using visualization: earlier, all of your code ran when you clicked Run. Now, with functions like onMeasure(), you can write code that executes repeatedly as your song is playing.

While your song is playing with this particular definition of onMeasure(), a new rectangle is actually being re-drawn every measure. However, because it’s being drawn in the same position with the same size and color, there is no change for us to see.

Activity 3 (15 min)

Say: We’ll now adjust our definition of onMeasure() to have a visible change on every measure, in rhythm with the music. In other words, we’re going to create our first animation. and we’re going to do this in EarSketch by using a variable as an argument for our drawRectangle() call. We’ll then change that variable’s value over time so that the information used by drawRectangle() changes and gives us different results. 

Assign the following modifications. The revised code should look like the following script. Changes are in bold.

  • declare a global variable called r outside of our onMeasure() function.
  • instead of having the number 255 as the red component of our rgbToHex() call, use the variable just declared.   

 

def onLoop():

   pass #empty function for now

 

r = 255

def onMeasure():

    global r

    drawRectangle(0,0,getCanvasWidth(),getCanvasHeight(),rgbToHex(r,0,0))

 

finish() 

Say:If you ran and played this code, you would see the same result as before because we didn’t change the value of r yet. Let’s make that happen by subtracting 50 from r every measure.

Assign the following modifications to the onMeasure function. Changes are in bold.

  • Add the decrement of variable r
  • add an if statement to rest r to 2555 if r becomes negative 

def onMeasure():

    global r

    drawRectangle(0,0,getCanvasWidth(),getCanvasHeight(),rgbToHex(r,0,0))

    r = r-50

   if (r < 0):

       r = 255

 

Run and play your program.

Say: As your song plays, you should see the red rectangle getting darker on every new measure, until it resets to fully bright red (due to the if-statement in the code above that resets r to 255 if it drops below 0) and begins dimming again.

Add global variables g and b in start them at zero.  Increase them each time the onMeasure function is called by 60 and have them reset to 0 whenever either are greater than 255.

Compare your finished code to the last script from EarSketch lesson 26.3.

Wrap up (2 min)

Explain the purpose of the drawRectangle() and the onMeasure() functions.



Session 4 Visualizing Music with EarSketch 2 Using Data Abstractions

Warm up:  (3 min)

 

Review this list of topics from the previous session.  What would you append to the list that we also learned?

  • Computers store colors as amounts of red, green and blue (RGB). 
  • Hex values are a good way to store RGB values as they allow you to store colors using less digits. 
  • onLoop() must be used for all scripts in EarSketch that create visualizations. 
  • Canvas height and canvas width are the size of the frame the visualization is created in.

 

Activity 1 (15 min) 

View this video showing an animation that changes as the amplitude of the sound changes. 

https://earsketch.gatech.edu/earsketch2/videoMedia/027-01-DefiningonLoop()andGettingAudioData-PY-JS.mp4

Say: In the previous session, you learned about using onMeasure(), a function that you define which is then called regularly by EarSketch. There are other functions that you can define in a similar way. These are also called regularly, but even more often. Two examples are onHalf() and onQuarter(). onHalf() is called on the 1st and 3rd beat of every measure (at a rate of half notes) and onQuarter() is called on every beat (or at a rate of quarter notes). 

Another example is onLoop(), which is called about 60 times per second. Because this is such a rapid rate, it was important for us to begin with the slower onMeasure() so that we could see how things change easily. We can now move on to using the faster onLoop() to create animations appear to move naturally. 

Examine the first EarSketch script in lesson 27.1. 

Say: We’ve defined onLoop(), which is called nearly 60 times per second. The first three lines of code store the value returned by getAmplitude(). As a song is playing, any getAmplitude() call will retrieve the amplitude (loudness between 0 and 1, 0 being silent) at the current time for the track number given as an argument. Calling getAmplitude() often will allow us to use data that is up-to-date to the fraction of a second.

Load and run the first script in EarSketch lesson 27.2

Say:

First, to give ourselves a fresh canvas each time onLoop() runs we draw a black rectangle that is the size of the entire canvas. By drawing a new, slightly different image on every call of onLoop(), we can create the illusion of fluid motion for whatever else we’re drawing. In this case, we’re drawing bars whose size increases along with the amplitude of their respective track. 

We give each rectangle a different y-position, keeping this value relative to the height of the canvas; this allows us to resize the canvas and have our image scale with it correctly. The third argument for each of these drawRectangle() calls is where our data from getAmplitude() (amp values are between 0 and 1) from their corresponding tracks by the width of the canvas. This means that a louder moment from the track will result in a longer bar. 

Finally, we give each bar a height relative to the height of the canvas and give each bar a distinct color. Below is a screenshot that also shows the arguments used for each shape (after the math has been done on values like amp1). Discuss with your elbow partner how you would change the code to accomblish each of the following.

  • add another audio track and fit another bar on the canvas.
  • make bars grow from the bottom of the canvas towards the top (rather than from the left towards the right). 

 

Activity 2 (15 min) - Randomness and transparency

 

Watch this video to see how we will update our animation. https://earsketch.gatech.edu/earsketch2/videoMedia/028-01-InitialSteps-PY-JS.mp4

Say: In order to draw the various circles to the canvas, we’re going to need to keep track of where they should be. To do this we’re going to create lists of x-coordinates and y-coordinates for each color of circle and define a function that will use these lists to set the locations of all of these circles. Examine the first EarSketch script in lesson 28.2. 

After students load and preview the EarSketch script in lesson 28.2. 

Say:

Lines 13 - 18 create empty lists. 

LIne 20 initializes the global variable circlesPerColor as 5.

Lines 21 - 30 define the setCirclePositions() function. The function sets random values for the X and Y values of each circle, so that we get nicely unpredictable results. This means as we don’t have to manually enter all of these values. We do this by looping through the lists we set up earlier, assigning a random value to each element of each list. 

To ensure that each circle is not drawn off-screen, we multiply each random value (which is between 0 and 1) by the width or height of the canvas (for the x and y values respectively).

Line 33 calls the setCirclePositions() function at the start of every measure. 

Load and run the script in EarSketch lesson 28.3.  

Assign the following modifications to the script in EarSketch lesson 28.3.  

  • Modify the assignment statements in the setCirclePositions function to use the list append function.   
  • Add a few more measures of music by adding additional fitmedia() function calls.

 

Student code should look like the following. 

from math import *

 

from earsketch import *

from random import *

init()

 

setTempo(120)

 

fitMedia(EIGHT_BIT_ANALOG_DRUM_LOOP_001,1,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,1,3)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,3,5)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,3,5)

fitMedia(EIGHT_BIT_ANALOG_DRUM_LOOP_001,1,4,7)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,5,7)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,5,7)

fitMedia(EIGHT_BIT_ATARI_LEAD_005,2,7,9)

fitMedia(EIGHT_BIT_ATARI_LEAD_008,3,7,9)

 

rCircleXs = []

gCircleXs = []

bCircleXs = []

rCircleYs = []

gCircleYs = []

bCircleYs = []

 

circlesPerColor = 5

def setCirclePositions():

 for i in range(0, circlesPerColor):

    #set random x positions

rCircleXs.append(random()*getCanvasWidth())

gCircleXs.append(random()*getCanvasWidth())

bCircleXs.append(random()*getCanvasWidth())

#set random y positions

rCircleYs.append(random()*getCanvasWidth())

gCircleYs.append(random()*getCanvasWidth())

bCircleYs.append(random()*getCanvasWidth())



  

def onMeasure():

  setCirclePositions()



def onLoop():

global rCircleXs, rCircleYs, gCircleXs, gCircleYs, bCircleXs, bCircleYs

amp1 = getSmoothAmplitude(1)

amp2 = getSmoothAmplitude(2)

amp3 = getSmoothAmplitude(3)

MAX_CIRCLE_SIZE = getCanvasHeight()

 

drawRectangle(0,0,getCanvasWidth(), getCanvasHeight(), "#000000")

 

for i in range(0, len(rCircleXs)):

  drawCircle(rCircleXs[i], rCircleYs[i], MAX_CIRCLE_SIZE*amp1, rgbaToHex(255,0,0,28+floor(amp1*227)))

for i in range(0, len(gCircleXs)):

  drawCircle(gCircleXs[i], gCircleYs[i], MAX_CIRCLE_SIZE*amp2, rgbaToHex(0,255,0,28+floor(amp2*227)))

 

for i in range(0, len(bCircleXs)):

  drawCircle(bCircleXs[i], bCircleYs[i], MAX_CIRCLE_SIZE*amp3, rgbaToHex(0,0,255,28+floor(amp3*227)))

 

finish()



Activity 3 (10 min)

 

Run and play the code that’s been discussed so far, and take a look at the results. Because we used randomness, your canvas probably won’t look exactly like the one in the video, but it will be similar. 

Say: Work with your elbow partner to choose and implement at least one of the following changes. 

  • Using getAmplitude() rather than getSmoothAmplitude() 
  • Using RGB color rather than RGBA color 
  • Using a different color for the background (perhaps even one that changes over time) 
  • Changing the number of circles per track/color 
  • Changing the size of the circles 
  • Using different shapes

 

Wrap up: (5 min)  

Think-pair-share: Consider doing this project without using the lists.  

  1. How would the code be changed?
  2. How does the use of lists make the programming process easier?



Session 5 - Using selection with user input in EarSketch

 

Warm up

 

Introduction

Say: Soon we will begin the Create Performance Task (Create Task).  You do not have to use EarSketch for the Create Task - you may use any tools we have studied or others that you learned elsewhere.  You do have to create a project that:

  • Is designed for a purpose.
  • Uses a data abstraction and a functional abstraction that you implemented.
  • Implements an algorithm that uses sequence, selection and iteration.

This session will focus on the piece of the Create Task that we have not reviewed so far - using selection and expressing algorithms using sequence, selection and iteration.

Activity 1 User input and selection

Say: Printing to the console allows information to be displayed to the user. Console Input is text-based data taken from the keyboard, giving a program access to information from the user. Together, printing and console input can be used to allow the user to interact with a program.

 

In EarSketch, the readInput() function is used for console input. This opens a dialog box asking for input and returns the string typed into the dialog box. 

 

Examine the Simple Console Input script in EarSketch lesson 17.1.  

 

Ask: How does the EarSketch readInput() function differ from the Python input statement?

 

Load and edit the Musical Console Input script at the end of EarSketch lesson 17.1.

 

Ask: What is the purpose of the int() function used on line 17?

 

To make decisions - selections - the computer needs to be able to make comparisons and draw logical conclusions.  As a reminder these are the comparison and boolean operators used in Python.

 

  • comparison operators (>, >=, <, <=, ==, !=)
  • boolean operators (and, or, not).

 

Load the Conditionals script from EarSketch lesson 17.3. 

 

Ask: 

  • What does the program do when the user responds to the prompt with the word “yes”?
  • What does the program do when the user responds to the prompt with the words “big bird”?

 

Examine the Which Comes First script for the end of EarSketch lesson 17.3. 

 

Ask: 

  • How do the statement blocks differ in the if, elif and else clauses?
  • Why might users prefer this program format?

Activity 2 Developing Algorithms

To review building algorithms and expressing them in pseudocode read The building blocks of algorithms.

 

Take the four question quiz comparing your results with your elbow partner’s.

 

Begin planning an earsketch program that:

  • Is designed for a purpose.
  • Uses a data abstraction and a functional abstraction that you implemented.
  • Implements an algorithm that uses sequence, selection and iteration.

This program will be for your own interest.  You may do this individually or in collaboration with your elbow partner. You will have the rest of this session to plan the program and all of the next session to implement your plan.

 

Your plan should include the purpose of the project, identify the procedural and data abstractions you plan to use and include a pseudocode version of at least one algorithm that uses sequence selection and iteration.

Wrap up: (2 min)

Briefly describe your project and submit a copy of your plan either digitally or on paper.



Session 6 Creating your own EarSketch script using input and visualization

Introduction

Say: This session you will build the project you described in the previous sessions.  You will have most of this session with the last few minutes dedicated to analyzing the progress and decisions you made.will focus on the piece of the Create Task that we have not reviewed so far - using selection and expressing algorithms using sequence, selection and iteration.

Activity 1: (40 min)

Implement the plan you developed in the previous session. After you get a copy of your plans, begin by making a list of your objectives.

 

Wrap up: (5 min)

Answer these questions.

 

Journal: 

  1. How successful were you in meeting your objectives for today?
  2. How did the procedural abstractions (functions you developed) help manage the complexity of the project?
  3. How did the data abstractions (functions you developed) help manage the complexity of the project?
  4. How was the pseudocode helpful in the development of the project?

 

Discuss any answers or questions with your elbow partner.





Remaining Sessions are Optional

The remaining sessions can be used as a final practice for the Create Performance Task.



Session 7 Developing algorithms when designing programs for others.

 

Introduction

Say: This session we will begin a project we will design and build for others.  The project must meet the same requirements we built for ourselves. It is to be collaborative - with an elbow partner or partners. - The project may or may not use EarSketch.

 

Activity 1

Watch this video about Human Centered Design.

 

Complete the project development plan.

 

Project Development Plan

 

Identify a project.

Discuss with your group:

People who might benefit from a project you develop.

Brainstorm possible projects.

 

Select a user or users and a project they would benefit from.

 

Getto know your users.

 

Describe who the users are(is) and what the user(s) like or need.

Describe how the user(s) behavior would change if they had your completed project.

Describe the  features of your project that would make your project most useful.

 

Design your project.

 

Develop user experience goals that align with the desired  features and behaviors.

Identify inputs or information your project will require.

Identify outputs the project will produce.

 

Define a prototype.

Watch this video about prototyping.

Describe a prototype version of your project that seems both something you could do and something you could learn form.

 

Develop you plan for your prototype.

 

Identify data structure(s) and function(s) you will use. 

For each data structure list:

  • Name
  • Type
  • Description of the values it will hold

For each function list:

  • Name
  • Parameters
  • Return values
  • Plan for testing

 

Identify key algorithm(s) you will implement.

For each algorithm:

  1. Describe it using pseudocode or flowcharts.
  2. Test the algorithm

 

Activity 2 - Begin prototype development

Plan prototype development.

 

Schedule the work to be done.

What order will it be done?

Who will do what parts?

How will the parts be assembled?

When will the prototype testing begin?

 

Wrap up

Identify any help needed from the teacher.

Submit a copy of the Project Development Plan.



Sessions 8 & 9 Develop the prototype of a program for others.

 

Introduction

Say:  This session is dedicated to the development of your project for others.

 

The project will be assessed using the latest rubric provided by the College Board. After you complete your project you will also complete a short written report - Project Summary - that includes the following:

 

Project Summary

Partner Names

 

Purpose

 

Data Abstraction

Function in the project

Code showing creation and use.

Explanation of how it helped manage complexity

 

Functional Abstraction

Function in the project

Code showing definition and calls

Parameter it uses and alternative paths through the procedure.

Explanation of how it helped manage complexity.

 

Key Algorithm

Purpose of the algorithm

Code and how the algorithm works (pseudocode can be used)

Use of selection and iteration






The latest rubric (updated as of November 2018) is in the lesson folder.  The practice project does not ask students to create a video so row 1 should net be used.  The assessment will be the basis of a summative grade using the suggested scale below.

 

Complete presentation submitted 25%

 

Code with abstractions submitted 25%

 

Rubric Points (5) 5 * number of rubric points up to 50%

 

Activity:

Project Development

 

Wrap up:

As a group, evaluate your progress during this session and identify what still needs to be done.

 

Session 10. Project Completion

Say:  When we do the Create Task you will have 12 hours of class time to design, develop and write a written report about a computer programming topic of you choice.  I will not be giving further guidance during those 12 hours so its important to identify any questions that still need to be answered during ti sessions. We have four goals.

 

  • Finish the project
  • Finish the written report.
  • Submit both project code and written report.
  • Identify any remaining questions.

 

Activity 1 - Finish the project (10 min)

As a group, briefly meet and plan any remaining work needed to complete the prototype.

Complete  the development of the prototype.

Activity 2 - Finish the written report (25) min


Evidence of Learning

Formative Assessment

Session 3 ends with students creating their first EarSketch animation.  This script should be formatively assessed as all future EArSketch work depends on the ability to use functions like onMeasure() to produce animations.

Session 4 ends with students implementing a change to a data visulization project they built as a class.  Tihs project could be the basis of a formative evaluation - perhaps done wile students are developing their designs in the next sessions.

Session 5 ends with students making a plan for a project they will implement in the next session.  This plan could be used for fromative assessement.


Summative Assessment

Session 6 Creating your own EarSketch script using input and visualization students implement a project to meet te design submitted yesterday.  They also make jounal entries after they assess the process.  Both the projet and the journal questions can be used for summative evaluation.

Lesson Summary

Summary

In this lesson, students will be formally introduced to data visualization using Bokeh: an interactive data visualization library in Python. They will go through a guided tour of how to use this library, and then will complete a fun activity that involves gathering data from their classmates for the purposes of visualization.  

Outcomes

Students will learn why data visualization is important.

Students will be able to meaningfully visualize data they collect. 

Overview

Session 1 (Line/Bar Graphs):

  • Getting Started - Data acquisition (5 Minutes)
  • Guided Tour - iPython notebook / Powerpoint - (15 minutes)
  • Activity - Plotting data (30 minutes)
  • Wrap Up - Exit slip (5 minutes)

Session 2 (High-level charts):

  • Getting Started - Data acquisition (5 Minutes)
  • Guided Tour - iPython notebook / Powerpoint (15 minutes)
  • Activity - Plotting with high-level charts (30 minutes)
  • Wrap Up - Exit slip (5 minutes)

Learning Objectives

CSP Objectives

Teacher Resources

Student computer usage for this lesson is: required

  • Power Point presentations: "session1.pptx," "session2.pptx"
  • iPython notebooks: "BokehTutorialLesson1_a.ipynb"

Lesson Plan

Session 1

Getting Started (5 minutes)

Come up with 4-5 questions that make sense when visualized with a line graph or bar graph, such as:

  • When do you usually do your homework? 
  • What time do you wake up in the morning on a weekday?
  • What time do you wake up in the morning on the weekend?
  • etc.

Enlist the help of your students in coming up with the questions. Present all questions at the start of this lesson, and solicit answers to each question from each student. These answers will be used later in the lesson, so make sure to collect them in a table-like format such as ".csv"

It is reccommended that you create a Google Form to collect answers to these questions with. You could then ask your entire school to fill out the survey, and have even more data to visualize! 

Guided Tour (15 Minutes)

Use the existing iPython Notebook to introduce Bokeh. Explain data visualization. Have the students follow along as you show them how Bokeh line plotting works, have them attempt the exercise at the end of the notebook. 

Activity (30 Minutes)

Using the data that was collected at the beginning of class, determine the best way to plot the information collected at the beginning of class. Then, plot it! See if you can come up with cool trends by plotting data on the same chart, etc.

Exit Ticket (5 minutes)

Simple exit slip, ask the students what data visualization is, why it is important, how to construct a line graph in Bokeh, etc.

 

Session 2

Getting Started (5 minutes)

Gather data in a similar fashion as the last session. Ask questions of your class / school that make for interesting visualizations. 

Guided Tour (15 Minutes)

Use the powerpoint provided to briefly discuss the high-level charts available in Bokeh.

Activity (30 Minutes)

Have the students use any of the high-level charts to plot the data that was collected in the warm-up.

Exit Ticket (5 minutes)

Ask a simple question about any of the plotting mechanisms covered.  


Lesson Summary

Students learn how to create how to make their own  data visualizations.

Student can express the usefulness of data visualization for identifying trends, making connections, and addressing problems.

Students will demonstrate how programs such as spreadsheets help efficiently organize and find trends in information.

Learning Objectives

CSP Objectives

  • EU CRD-2 - Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
    • LO CRD-2.A - Describe the purpose of a computing innovation.
    • LO CRD-2.C - Identify input(s) to a program.
    • LO CRD-2.E - Develop a program using a development process.
    • LO CRD-2.F - Design a program and its user interface.
  • EU DAT-2 - Programs can be used to process data, which allows users to discover information and create new knowledge.
    • LO DAT-2.A - Describe what information can be extracted from data.
    • LO DAT-2.C: - Identify the challenges associated with processing data.
    • LO DAT-2.D - Extract information from data using a program.
    • LO DAT-2.E - Explain how programs can be used to gain insight and knowledge from data.
  • EU IOC-1 - While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.
    • LO IOC-1.E - Explain how people participate in problem-solving processes at scale.

Teacher Resources

Lesson Plan

Data Visualization with Raw/Graphs

Session 1

Introduction

Say:  This session we will learn to use another data visualization tool named RawGraphs and begin planning a visualization you will make. 

As stated on their website, RawGraphs was, “Primarily conceived as a tool for designers and vis geeks, RAW Graphs aims at providing a missing link between spreadsheet applications (e.g. Microsoft Excel, Apple Numbers, OpenRefine) and vector graphics editors (e.g. Adobe Illustrator, Inkscape, Sketch).” 

Programs, such as spreadsheets, help efficiently organize and find trends in information.

ACM DL Author-ize serviceRAWGraphs: A Visualisation Platform to Create Open Outputs – PDF file in Green Open Access

Warm up (4 min)

Watch this video that introducesRawGraphs and answer the questions:

  1. What is RawGraphs?
  2. How can it efficiently organize and find trends in information?

 

Activity 1 (10 min)

Visit the RawGraphs gallery and do an online gallery walk with your elbow partner.  For at least three of the images complete the following table.

 

Title

Visual Interest

What is the purpose

What is a question you have.

       
       
       

 

Activity 2 (30 min)

Say: Let’s start learning how to make our own visualizations.  Visit RawGraphs.io/learning.

Complete the first two video tutorials, How to make a barchart and How to make an alluvial diagram, and then a third you and your elbow partner choose to view.

Wrap up (5 min)

Plan with your elbow partner a visualization you would like to create. Answer these questions:

  • What data will it be based on?
  • What purpose will it have?
  • What will it look like?

 

Session 2

Introduction

Say: Today you will make your own visualization.  The data you found to use could have come from a variety of sources including through surveys,  user testing, interviews, direct observations or other means. No matter how appealing the visualization it can only be as reliable as the data it is based upon.  We will be using an iterative process refining and revising based on your reflections throughout the process. Its okay if you need to make changes in your original plan as you work through the process.

Warm up

Consider again your answers to these questions:

  • What data will it be based on?
  • What purpose will it have?
  • What will it look like?

 

Activity 

Part 1: Each student is to create their own visualizations however elbow partners should work together at first.  In the first part of class build a prototype. Keep it simple.

Part 2: Discuss the next step with your elbow partner.  Elbow partners can work in their own direction t this point. Either refining the prototype or building an entirely new visualization..

Each student is to create/refine their own visualization.

Wrap up

Say: Data and data visualization provide opportunities for:

  • identifying trends.
  • making connections.
  • addressing problems. 

Thinking back on the visualization gallery you explored in the past discuss with your elbow partner how data visualization can help with each of these three opportunities.


Evidence of Learning

Formative Assessment

Student expression of the power of data visualization for identifying trends,
making connections, and addressing problems.


Summative Assessment

Students should explain the iteative nature of this project development and explain the role reflection played in that process.

Lesson Summary

Summary 

Continuing the focus on data analysis from Unit Five, students will use the browser-based Dataquest learning environment (http://www.dataquest.io) and supplementary materials to explore more ways in which Python can be used to analyze data. For the first week, students will explore Dataquest through the browser-based "missions" on the website. Each lesson begins with a warm-up/journal entry, and students then spend the rest of the time working through the missions at their own pace.  For the second part of the lesson, students will design and implement their own data analysis project in order to prepare them to complete a data-focused Create Performance task.

Outcomes

  • Students will understand how to design a data analysis project
  • Students will have the tools to analyze data in Python
  • Students will have practice reading and understanding datasets

Overview

Week One: Learning Dataquest

  1. Getting Started (5 - 10 min)
  2. Independent Study (40 - 45 min)

Week Two: Data Analysis Project

  1. Students Plan and Implement Data Analysis Program

 

Learning Objectives

CSP Objectives

  • EU CRD-2 - Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
    • LO CRD-2.B - Explain how a program or code segment functions.
    • LO CRD-2.C - Identify input(s) to a program.
    • LO CRD-2.I - For errors in an algorithm or program: a. Identify the error. b. Correct the error.
  • EU DAT-2 - Programs can be used to process data, which allows users to discover information and create new knowledge.
    • LO DAT-2.A - Describe what information can be extracted from data.
    • LO DAT-2.D - Extract information from data using a program.
  • EU AAP-1 - To find specific solutions to generalizable problems, programmers represent and organize data in multiple ways.
    • LO AAP-1.A - Represent a value with a variable.
    • LO AAP-1.B - Determine the value of a variable as a result of an assignment.
  • EU AAP-2 - The way statements are sequenced and combined in a program determines the computed result. Programs incorporate iteration and selection constructs to represent repetition and make decisions to handle varied input values.
    • LO AAP-2.G - Express an algorithm that uses selection without using a programming language.
    • LO AAP-2.H - For selection: a. Write conditional statements. b. Determine the result of conditional statements.
    • LO AAP-2.I - For nested selection: a. Write nested conditional statements. b. Determine the result of nested conditional statements.
    • LO AAP-2.N - For list operations: a. Write expressions that use list indexing and list procedures. b. Evaluate expressions that use list indexing and list procedures.
    • LO AAP-2.O - For algorithms involving elements of a list: a. Write iteration statements to traverse a list. b. Determine the result of an algorithm that includes list traversals.
  • EU AAP-3 - Programmers break down problems into smaller and more manageable pieces. By creating procedures and leveraging parameters, programmers generalize processes that can be reused. Procedures allow programmers to draw upon existing code that has already been tested, allowing them to write programs more quickly and with more confidence.
    • LO AAP-3.D - Select appropriate libraries or existing code segments to use in creating new programs.

Teacher Resources

Student computer usage for this lesson is: required

DataQuest.io website: https://www.dataquest.io/learn

Week One Materials: Unit 6 Resources -> DataQuest.io -> Week One Lesson Materials -> Mission #

Week Two Materials:

Datasets: Unit 6 Resources -> Dataquest.io - > Week Two Project Datasets and Materials -> Datasets

Sample Project: Unit 6 Resources -> Dataquest.io - > Week Two Project Datasets and Materials -> Sample Project

Project Rubric: Unit 6 Resources -> Dataquest.io - > Week Two Project Datasets and Materials -> "Data Analysis Project Rubric"

(Quizzes for Week One and Week Two are in the corresponding teacher-only resource folders)

 

 

Lesson Plan

Week One: Learning Dataquest

Note: all worksheets and quizzes can be found in the teacher-only resource folder, Unit Six -> DataQuest.io -> Week One Lesson Materials -> Mission #

Directions for working in Dataquest.io

  1. Each student will first need to create an account on Dataquest.io. This is free, and will help them to keep track of their progress.
  2. Each mission comes with a worksheet with required sections to complete. Students are encouraged to fill out as much as possible. The non-required sections are introductions to basic coding tools. Some students may want to do these if they need a refresher on the concepts. 
    • Note: As of now, sections cannot be skipped on the website. This limitation may change in the future.
  3. Once they have completed the worksheet for the mission, students will use the notes on their worksheets to complete:
    1. concept quiz to test their understanding of the data science concepts.
    2. coding quiz to test their understanding of the Python concepts.

Quizzes should be done in class, and should take a minimum of 10-20 minutes to complete. It is advisable to not give a quiz out in the last ten minutes of class. If there are only a few minutes left, the student can use the time to add to their notes.

If a student fails one of the quizzes, they may be given the chance to go back and add to their worksheet before attempting the quiz again. (Multiple versions of all coding quizzes are available.)

There are four Missions for the Data Analyst In Python Path. Students are only required to do the first three to review and prepare for the create task they should do the first six missions. 

The fourth Mission has worksheets/quizzes for those students who get to it, and can be counted as extra credit/normal grade at the teacher’s discretion. Additional useful courses include data visulization, data cleaning and introductory statisitics.

Getting Started (5 - 10 min)

Day 1

Show the first two minutes of the introductory video in Mission 1 on the Dataquest.io website. Students will discuss their reactions and thoughts about Data Science.

Day 2

Pull up d3js.org on the projector. This is the webpage for a data visualization library in Javascript that has many great examples of ways to make connections from data. You can explore by clicking on one of the tiles on the front page. Explore the D3 front page with the class and discuss reactions.

Day 3

This warm-up time is used for class discussion on progress through the missions. You can use this time to gauge the students' comfort with Python concepts by having students vote with their heads down. If enough students are having trouble, you may want to have a separate review session during the class.

Day 4

This warm-up time can be used for reviewing a Python concept (such as Dictionaries) or looking at a current news article involving data analysis (any article about a topic of interest to the students that uses statistics would be appropriate). Students should think-pair-share on additional ways in which data could be used.

Day 5

Students should do a show of hands to see where everyone is in the missions. The class should have a general discussion about progress.

 

Week Two: Data Analysis Project

Note: All materials for this section can be found in Unit 6 Resources -> Dataquest.io - > Week Two Project Datasets and Materials

Directions: 

For this week, students will be pairing up to create and implement a data analysis program of their own design.

  • Teachers start out the first day by presenting the PowerPoint "Project Introduction," which goes through the steps to creating a data analysis project. Teachers then review the "Data Analysis Project Directions" document.
  • The class splits up into groups of two (with up to one group of three) and each group chooses a dataset to work with. It is preferable if each group chooses a different dataset.

For the rest of the week, students should work on their projects in their groups. At the end, teachers can optionally have them present their PowerPoints to the class, exchange presentations in pairs, or merely turn everything in.


Evidence of Learning

Formative Assessment

  • Week One quizzes
  • Check for understanding at the beginning of each day of week one.

Summative Assessment

Week two project.

Lesson Summary

Pre-lesson preparation

The second session is a programming activity and requires using NetLogo (a tutorial is in the Unit 4 Lesson on Hypothesis Testing with NetLogo) or using Python with Bokeh (for more advanced students).

Summary

Students will be introduced to the topic of diversity and computational problems, learn about and discuss implications of the proliferation of algorithms in society, and reflect on how the quality of input data and small, sometimes unintended biases can lead to low quality solutions.

Outcomes

  • Students will consider how diversity leads to better solutions.
  • Students will discuss the proliferation of algorithms in society.
  • Students will learn about some applications of artificial intelligence and machine learning algorithms.
  • Students will explore a computational simulation of bias.
  • Students will understand how small changes in input parameters can affect output quality and variety.
  • Students will program an agent-based model from social science theory.

Overview

Session 1

  1. Getting Started (5 min)
    • Artificial intelligence algorithms in daily life?
  2. Discussion (10 min)
    • Algorithms, Input Data, and Diversity
  3. Guided Activty (25 min)
    • Parable of the Polygons
  4. Wrap-up (10 min)

Session 2

  1. Getting Started (5 min)
    • Algorithms, Diversity, and Solutions
  2. Programming Activity (40 min)
    • Make your own Parable of the Polygons
  3. Wrap-up (5 min)

Learning Objectives

CSP Objectives

  • EU CRD-1 - Incorporating multiple perspectives through collaboration improves computing innovations as they are developed.
    • LO CRD-1.A - Explain how computing innovations are improved through collaboration.
  • EU CRD-2 - Developers create and innovate using an iterative design process that is user-focused, that incorporates implementation/feedback cycles, and that leaves ample room for experimentation and risk-taking.
    • LO CRD-2.B - Explain how a program or code segment functions.
    • LO CRD-2.E - Develop a program using a development process.
  • EU DAT-2 - Programs can be used to process data, which allows users to discover information and create new knowledge.
    • LO DAT-2.C: - Identify the challenges associated with processing data.
  • EU IOC-1 - While computing innovations are typically designed to achieve a specific purpose, they may have unintended consequences.
    • LO IOC-1.A - Explain how an effect of a computing innovation can be both beneficial and harmful.
    • LO IOC-1.B - Explain how a computing innovation can have an impact beyond its intended purpose.
    • LO IOC-1.D - Explain how bias exists in computing innovations.

Math Common Core Practice:

  • MP3: Construct viable arguments and critique the reasoning of others.

Common Core ELA:

  • RST 12.2 - Determine central ideas and conclusions in the text
  • RST 12.6 - Analyze the author's purpose in providing an explanation, describing a procedure
  • RST 12.9 - Synthesize information from a range of sources

NGSS Practices:

  • 2. Developing and using models
  • 7. Engaging in argument from evidence

NGSS Content:

  • HS-ETS1-1. Analyze a major global challenge to specify qualitative and quantitative criteria and constraints for solutions that account for societal needs and wants.
  • HS-ETS1-4. Use a computer simulation to model the impact of proposed solutions to a complex real-world problem with numerous criteria and constraints on interactions within and between systems relevant to the problem.

Teacher Resources

Student computer usage for this lesson is: required

Supplementary articles:

Lesson Plan

Session 1

Getting Started (5 min)

Think-Pair-Share: Artificial intelligence algorithms in daily life?

Ask your students to list discuss what artificial intelligence algorithms they think affect them in daily life and how they are affected. How would it be different if those algorithms did not recognize them or treated them inappropriately? If an algorithm makes the wrong judgement about them, what would they do, who could they go to for help? It is OK if students are unsure about the answers as it leads into the following discussion.

Discussion: Algorithms, Input Data, and Diversity (10 min)

Algorithms have become prominent and common in daily life. In particular, algorithms that use artificial intelligence (AI) or a technique called machine learning are employed to make decisions that affect us, sometimes in ways we aren't aware of and cannot control. For example, machine learning is used by Google, Facebook, Flickr, among other companies to detect faces in photographs, apply labels, or automatically tag images with people they recognize. In general, these algorithms are trained on input data (such as images of people), and are improved iteratively using statistical methods until they learn how to categorize, differentiate, and reach a correct answer. Another example of companies using AI is in personalized marketing or recommendation systems. For instance, Amazon tailors the products they suggest based on an algorithm trained on similar customers' purchase history. Or a company like Netflix will recommend movies to users who rate similar movies similarly.

At the heart of these algorithms is the fact that their solutions all depend on the initial parameters and input data used to train them. What happens when those parameters and data are not sufficiently diverse? Small changes in those parameters, oversights in the training data, implementer bias (both intended and not), and missing distributions or categories can all negatively prejudice algorithms. All this is important to keep in mind as algorithms start determining aspects of our lives and there is less or no control over the input and decisions they make about and for us. Computing innovations can reflect existing human biases because of biases written into the algorithms or biases in the data used by the innovation.

Effective collaboration produces computing innovations that reflect the diversity of talents and perspectives of those who design them.  A 2016 article in the New York Times (http://www.nytimes.com/2016/06/26/opinion/sunday/artificial-intelligences-white-guy-problem.html?_r=0) highlights an example problem where lack of diversity among devlopers lead to a lower quality solution. When teams developing various AI and machine learning algorithms lacked diversity they failed to recognize errors  from calibrating on too limited a population.  This lead to significantly bad results, such as not recognizing people with dark skin tones or tagging them inappropriately. Examples where diversity may greatly influence the quality and real-world implications of algorithms include:

Guided Activity (25 min)

Parable of the Polygons

A hands-on example of how initial parameters, subtle biases, and lack of diversity can greatly affect an algorithm's execution is in the "Parable of the Polygons" (http://ncase.me/polygons/). The Parable of the Polygon is a simulation based on the mathematical model of how segregated communities may arise from small differences preferences, based on the theory of Thomas Schelling, an economist and game theorist who received the Nobel Prize for Economics in 2005.

Guide students through the website and let them explore dragging polygons, changing settings, and see how they can influence (it is best for them to follow along individually or in groups on their own computer).

An alternative version of the final sandbox with three polygon shapes is also available here: http://ncase.me/polygons-pentagons/play/automatic/automatic_sandbox_frame.html

Wrap-up (10 min)

Journal or Homework

Have your students continue to explore the Parable of the Polygons website and answer the following questions using the sandbox at the bottom of the website:

  • What settings where the ratio of polygon populations are the same lead to the greatest segregation? Why do you think that is?
  • What settings where the ratio of polygon populations are the same lead to the least segregation? Why is that?
  • What settings where polygons still have room to move lead to the algorithm being unable to find a solution (it does not terminate)? Why is that?
  • Answer the same three questions above using the three-polygon version here: http://ncase.me/polygons-pentagons/play/automatic/automatic_sandbox_frame.html

Session 2

Getting Started (5 Min)

Think-Pair-Share: Algorithms, Diversity, and Solutions [5 min]

  • Have students consider one or more of the following questions:
    • How can an algorithm be affected by diversity (such as in its input data)?
    • What does it mean for input or training data to be diverse?
    • Can you think of examples where diversity, or the lack of diversity, affects the quality of an algorithm's solution?
    • Can you think of algorithms that benefit from diverse data?

Programming Activity (40 Min)

Two options: guided programming exploration with NetLogo, or more involved Python programming project for advanced students

Option 1: Using NetLogo

  • If you have not already used NetLogo in the classroom, you can follow the instructions for downloading and setting up NetLogo in the Unit 4 Lesson "Hypothesis Testing with Simulations in NetLogo"
  • Open up NetLogo and go to File->Models Library, then under the Sample Models folder, open the Social Science folder and load the Segregation model
  • For information about the model, read the sections in the Info tab
  • Have the students experiment with the settings and see what differences and similarities it has to the Parable of the Polygons website
  • For the remainder of the activity, have the students make some meaningful changes to the code of the simulation (in the Code tab) and write a short response stating what they did and how their parameters
  • Some suggestions include:
    • Add more types of agents to the model (hint, add another color to the line "set color one-of [red green]")
    • Change the sliders to match the Parable of the Polygons slider (agent count based on ratios, ability to have <50% agents)
  • Finally, a more developed model is included in the NetLogo models library

Option 2: Using Python with Bokeh (for advanced students)

Have students re-create the Parable of the Polygons themselves in Python, time with at least four types of polygon shape/colors. The source code for the Parable website is hosted on GitHub here: https://github.com/ncase/polygons/blob/gh-pages/play/automatic/automatic.js It is in JavaScript, but it serves as a good pseudocode basis. Alternatively, students could use the NetLogo code from Option 1 as another reference in creating their simulation.

Wrap-up (5 Min)

Journal: Have your students reflect and list 5 examples or ways in which diverse input makes for better solutions.

Guidance for Practice Questions - Question Set 23

Questions in the AP Classroom Question Bank may be used for summative purposes.  

Sixty of the 80 questions are restricted to teacher access.  The remaining 20 questions are from public resources.  

Questions are identified by their initial phrases.

A city government is attempting to reduce the d...

 

AP Exam Engagement Plan - Step 3

Discuss with the school’s AP Testing Coordinator before presenting to students.

Guidance for students in how to take the exam.

Date:

Time:

Location:

Confirm that students have access to the digital portfolio.

Think-pair-share: What is the digital portfolio for?

Share the AP Exam Administration presentation with students.