Unit 6. Data Visualization
Revision Date: Sep 08, 2019 (Version 3.0)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:
Students create an account to get Cloud storage for their files.
Outcomes
Optionally from Section 3.
Overview
The Lesson is divided into three sections.
Section 1 Getting Started with EarSketch is anticipated to take about 5-6 sessions.
Section 2 is anticipated to take about 5 sessions to complete these EarSketch units.
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.
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.
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.
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?"
Students should select one of these four points and record throughts and observations as to their meanings.
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.
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.8 Sections of an EarSketch Script
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.
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.
Assignment 1.1
This assignment can be found within the curriculum resources at Unit 6 > Lesson 1 > EarSketch Units > Unit 1.
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.
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.
Effects in EarSketch: setEffect
Identify and responding to questions students have shared. Use other studetns as a resource to answer as many questions as possible.
Distribute and assign Assignment 2.2.
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.
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.
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.
Students should complete Assignment 3.1 for the next session.
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.
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.
Effects in EarSketch: setEffect
4.1 Using Effects in EarSketch
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.
Students should prepare for the section 1 exam using the assignments, quizzes and EarSketch units 1-3 as resources.
Students should upload their collaborative projects from session 4, including the .wav output of the music they created.
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.
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.
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.
Student work in pairs through the Reusing Code sections below and post any questions they have.
9.6 Automating Effects with Loops
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.
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
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.
12.2 Beat Patterns with Strings
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.
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
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.
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.
Students should identify questions or concerns and share those that they think are most important, supplementing their notes with important comments.
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.
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.
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
Students should consolidate their notes and prepare for the section 2 exam next session. REMINDER: It is an open note exam.
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.
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.
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 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
Formative Assessment
Assignment:
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
Formative Assessment
Assignment:
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
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
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
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
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
Unit 6. Data Visualization
Revision Date: Jan 05, 2020 (Version 3.0)Use EarSketch to review the programming topics learned this year and as a final preparation for the Create Performance Task.
Sessions 1 - 6 are required.
Sessions 7 - 10 can be used as a final practice for the Create Performance Task.
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
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:
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.
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.
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?
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:
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.
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)
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.
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.
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..
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:
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.
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.
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.
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.
Explain the purpose of the drawRectangle() and the onMeasure() functions.
Review this list of topics from the previous session. What would you append to the list that we also learned?
View this video showing an animation that changes as the amplitude of the sound changes.
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.
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.
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()
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.
Think-pair-share: Consider doing this project without using the lists.
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:
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.
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.
Load the Conditionals script from EarSketch lesson 17.3.
Ask:
Examine the Which Comes First script for the end of EarSketch lesson 17.3.
Ask:
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:
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.
Briefly describe your project and submit a copy of your plan either digitally or on paper.
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.
Answer these questions.
Discuss any answers or questions with your elbow partner.
The remaining sessions can be used as a final practice for the Create Performance Task.
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.
Watch this video about Human Centered Design.
Complete the 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:
For each function list:
Identify key algorithm(s) you will implement.
For each algorithm:
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?
Identify any help needed from the teacher.
Submit a copy of the Project Development Plan.
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:
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%
Project Development
As a group, evaluate your progress during this session and identify what still needs to be done.
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.
As a group, briefly meet and plan any remaining work needed to complete the prototype.
Complete the development of the prototype.
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.
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.
Unit 6. Data Visualization
Revision Date: Jul 18, 2016 (Version 3.0)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):
Session 2 (High-level charts):
Student computer usage for this lesson is: required
Come up with 4-5 questions that make sense when visualized with a line graph or bar graph, such as:
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!
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.
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.
Simple exit slip, ask the students what data visualization is, why it is important, how to construct a line graph in Bokeh, etc.
Gather data in a similar fashion as the last session. Ask questions of your class / school that make for interesting visualizations.
Use the powerpoint provided to briefly discuss the high-level charts available in Bokeh.
Have the students use any of the high-level charts to plot the data that was collected in the warm-up.
Ask a simple question about any of the plotting mechanisms covered.
Unit 6. Data Visualization
Revision Date: Jan 04, 2020 (Version 3.0)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.
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
Watch this video that introducesRawGraphs and answer the questions:
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.
Plan with your elbow partner a visualization you would like to create. Answer these questions:
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.
Consider again your answers to these questions:
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.
Say: Data and data visualization provide opportunities for:
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.
Student expression of the power of data visualization for identifying trends,
making connections, and addressing problems.
Students should explain the iteative nature of this project development and explain the role reflection played in that process.
Unit 6. Data Visualization
Revision Date: Jan 04, 2020 (Version 3.0)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
Overview
Week One: Learning Dataquest
Week Two: Data Analysis Project
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)
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
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.
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.
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.
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.
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.
Students should do a show of hands to see where everyone is in the missions. The class should have a general discussion about progress.
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.
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.
Week two project.
Unit 6. Data Visualization
Revision Date: Jun 11, 2020 (Version 3.0)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
Overview
Session 1
Session 2
Student computer usage for this lesson is: required
Supplementary articles:
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.
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:
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
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:
Think-Pair-Share: Algorithms, Diversity, and Solutions [5 min]
Two options: guided programming exploration with NetLogo, or more involved Python programming project for advanced students
Option 1: Using NetLogo
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.
Journal: Have your students reflect and list 5 examples or ways in which diverse input makes for better solutions.
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...
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.