Last site update on 06/21/24: Adjusting the first two pages of Unit 1 to start with game creation right away and to allow teachers flexibility in how their students save Snap! projects.
+
Last site update on 09/25/24: Accessibility improvements, equity improvements, and minor image fixes.
+
Update on 06/21/24: Adjusting the first two pages of Unit 1 to start with game creation right away and to allow teachers flexibility in how their students save Snap! projects.
Update on 12/22/23: Adding project based assessments for Units 6–8, adding Spanish translation of Unit 8.
Update on 11/10/23: Adding Spanish translation of Unit 6 and AP Create Task pages (additional units forthcoming), and other minor revisions and improvements.
diff --git a/docs/BJC-Pacing-Guide-First-Year.pdf b/docs/BJC-Pacing-Guide-First-Year.pdf
index 145b353be..9bbeef9fe 100644
Binary files a/docs/BJC-Pacing-Guide-First-Year.pdf and b/docs/BJC-Pacing-Guide-First-Year.pdf differ
diff --git a/img/1-introduction/draw-house-size.png b/img/1-introduction/draw-house-size.png
new file mode 100644
index 000000000..ee6afefb4
Binary files /dev/null and b/img/1-introduction/draw-house-size.png differ
diff --git a/img/1-introduction/more-complicated-who-script.png b/img/1-introduction/more-complicated-who-script.png
index 9af33b3b4..5220449ba 100644
Binary files a/img/1-introduction/more-complicated-who-script.png and b/img/1-introduction/more-complicated-who-script.png differ
diff --git a/index.html b/index.html
index 3652b4e7b..64b04f59a 100644
--- a/index.html
+++ b/index.html
@@ -24,9 +24,9 @@
-
+
-
The Beauty and Joy of ComputingAn AP® CS Principles Curriculum
+
The Beauty and Joy of ComputingAn AP® CS Principles Curriculum
Looking for middle school and early high school activities? Try BJC Sparks.
diff --git a/sparks/img/U1/lab02/plural-of.png b/sparks/img/U1/lab02/plural-of.png
index 1dbc11b4c..926ba9a8e 100644
Binary files a/sparks/img/U1/lab02/plural-of.png and b/sparks/img/U1/lab02/plural-of.png differ
diff --git a/sparks/prog/U1/lab02/super-short-stories.xml b/sparks/prog/U1/lab02/super-short-stories.xml
index fa10d41f7..310bda1d5 100644
--- a/sparks/prog/U1/lab02/super-short-stories.xml
+++ b/sparks/prog/U1/lab02/super-short-stories.xml
@@ -1 +1 @@
-data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAvBJREFUeF7t1TFKK1EAhtGrEiFgoSuwEASLFGksRbASUljZ6iosXICrcSOuwT2ks7AaMcWDV5gyH4QTSDfwc797mDmYpmkafgpEBQ4AjMqb3RQAEIS0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwD/yv7+/j7Ozs3F3d5de0L6PA/jHDX98fIzX19dxfHw8FovFuLq6Gjc3N+Pi4mLfTez0fABuyf2L8O3tbRweHm6emqZpfH19jfv7+3FycjIeHx/H6enpTi9s38YA3HKj6/V6PD8/j6Ojo/+e+v7+Hufn52O5XI7b29txeXm5by52dh4At6R+eXkZn5+fmzff7//h4WHzxlutVmM2m+3skvZ5CMA/bvfp6WlcX1//+9TO5/N9dpCdDcAsveHfAgBykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jf+AxrzC7c48V7tAAAAAElFTkSuQmCC forward turn turnLeft setHeading doFaceTowards gotoXY doGotoObject doGlide changeXPosition setXPosition changeYPosition setYPosition bounceOffEdge xPosition yPosition direction doSwitchToCostume doWearNextCostume getCostumeIdx reportGetImageAttribute reportNewCostume reportNewCostumeStretched doSayFor bubble doThinkFor doThink changeEffect setEffect getEffect clearEffects changeScale setScale getScale show hide reportShown goToLayer goBack doScreenshot reportGet alert log playSound doPlaySoundUntilDone doPlaySoundAtRate doStopAllSounds reportGetSoundAttribute reportNewSoundFromSamples doRest doPlayNote doPlayFrequency doSetInstrument doChangeTempo doSetTempo getTempo changeVolume setVolume getVolume changePan setPan getPan playFreq stopFreq clear down up getPenDown setColor setPenColorDimension changePenColorDimension getPenAttribute setBackgroundColor setBackgroundColorDimension changeBackgroundColorDimension changeSize setSize doStamp floodFill write reportPenTrailsAsCostume reportPentrailsAsSVG doPasteOn doCutFrom receiveGo receiveKey receiveInteraction receiveMessage receiveCondition doBroadcast doBroadcastAndWait getLastMessage doWait doWaitUntil doForever doRepeat doUntil doFor doIf doIfElse reportIfElse doStopThis doRun fork evaluate doReport doCallCC reportCallCC doWarp doTellTo reportAskFor receiveOnClone createClone newClone removeClone doPauseAll receiveOnScene doSwitchToScene reportTouchingObject reportTouchingColor reportColorIsTouchingColor reportAspect reportStackSize reportFrameCount reportYieldCount reportThreadCount doAsk reportLastAnswer getLastAnswer reportMouseX reportMouseY reportMouseDown reportKeyPressed reportRelationTo doResetTimer reportTimer getTimer reportAttributeOf reportObject reportURL doSetGlobalFlag reportGlobalFlag reportDate reportAudio reifyScript reifyReporter reifyPredicate reportVariadicSum reportDifference reportVariadicProduct reportQuotient reportRound reportMonadic reportPower reportModulus reportAtan2 reportVariadicMin reportVariadicMax reportVariadicEquals reportVariadicNotEquals reportVariadicLessThan reportVariadicLessThanOrEquals reportVariadicGreaterThan reportVariadicGreaterThanOrEquals reportVariadicAnd reportVariadicOr reportNot reportBoolean reportLetter reportTextAttribute reportUnicode reportUnicodeAsLetter reportIsA reportVariadicIsIdentical reportTextSplit reportJSFunction reportTypeOf reportTextFunction reportCompiled doSetVar doChangeVar doShowVar doHideVar doDeclareVariables doDeleteAttr reportCONS reportCDR reportListAttribute reportListContainsItem reportListIsEmpty reportListIndex doAddToList doDeleteFromList doInsertInList doReplaceInList reportNumbers reportConcatenatedLists reportReshape reportMap reportAtomicMap reportKeep reportAtomicKeep reportFindFirst reportAtomicFindFirst reportCombine reportAtomicCombine doForEach doShowTable doMapCodeOrHeader doMapValueCode doMapListCode reportMappedCode doApplyExtension reportApplyExtension doSetVideoTransparency reportVideogetPosition doDefineBlock doDeleteBlock doSetBlockAttribute reportBlockAttribute reportEnvironment reportMousePosition reportCrossproduct reportPipe receiveUserEdit getPosition reportVideoTakes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.pt:a frase _ está vazia
Like JOIN, this block takes any number of words (text strings) and reports a sentence with its inputs concatenated, but unlike JOIN, this block inserts a blank space between the inputs.de:füge Wörter zusammen _
ca:uneix les paraules _
es:unir las palabras _
fr:fusionne les mots _
pt:uma frase com as palavras _
first wordall but first wordfirst word111all but first wordTakes a sentence in text string form and reports the sentence as a list of its words.de:Satz $arrowRight Liste _
ca:frase $arrowRight llista _
es:frase $arrowRight lista _
fr:phrase $arrowRight liste _
pt:uma lista com as palavras da frase _
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==
\ No newline at end of file
+data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAKAAAAB4CAYAAAB1ovlvAAAAAXNSR0IArs4c6QAAAvBJREFUeF7t1TFKK1EAhtGrEiFgoSuwEASLFGksRbASUljZ6iosXICrcSOuwT2ks7AaMcWDV5gyH4QTSDfwc797mDmYpmkafgpEBQ4AjMqb3RQAEIS0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwDS/cQAZSAsAmOY3DiADaQEA0/zGAWQgLQBgmt84gAykBQBM8xsHkIG0AIBpfuMAMpAWADDNbxxABtICAKb5jQPIQFoAwD/yv7+/j7Ozs3F3d5de0L6PA/jHDX98fIzX19dxfHw8FovFuLq6Gjc3N+Pi4mLfTez0fABuyf2L8O3tbRweHm6emqZpfH19jfv7+3FycjIeHx/H6enpTi9s38YA3HKj6/V6PD8/j6Ojo/+e+v7+Hufn52O5XI7b29txeXm5by52dh4At6R+eXkZn5+fmzff7//h4WHzxlutVmM2m+3skvZ5CMA/bvfp6WlcX1//+9TO5/N9dpCdDcAsveHfAgBykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jcOIANpAQDT/MYBZCAtAGCa3ziADKQFAEzzGweQgbQAgGl+4wAykBYAMM1vHEAG0gIApvmNA8hAWgDANL9xABlICwCY5jf+AxrzC7c48V7tAAAAAElFTkSuQmCC forward turn turnLeft setHeading doFaceTowards gotoXY doGotoObject doGlide changeXPosition setXPosition changeYPosition setYPosition bounceOffEdge xPosition yPosition direction doSwitchToCostume doWearNextCostume getCostumeIdx reportGetImageAttribute reportNewCostume reportNewCostumeStretched doSayFor bubble doThinkFor doThink changeEffect setEffect getEffect clearEffects changeScale setScale getScale show hide reportShown goToLayer goBack doScreenshot reportGet alert log playSound doPlaySoundUntilDone doPlaySoundAtRate doStopAllSounds reportGetSoundAttribute reportNewSoundFromSamples doRest doPlayNote doPlayFrequency doSetInstrument doChangeTempo doSetTempo getTempo changeVolume setVolume getVolume changePan setPan getPan playFreq stopFreq clear down up getPenDown setColor setPenColorDimension changePenColorDimension getPenAttribute setBackgroundColor setBackgroundColorDimension changeBackgroundColorDimension changeSize setSize doStamp floodFill write reportPenTrailsAsCostume reportPentrailsAsSVG doPasteOn doCutFrom receiveGo receiveKey receiveInteraction receiveMessage receiveCondition doBroadcast doBroadcastAndWait getLastMessage doWait doWaitUntil doForever doRepeat doUntil doFor doIf doIfElse reportIfElse doStopThis doRun fork evaluate doReport doCallCC reportCallCC doWarp doTellTo reportAskFor receiveOnClone createClone newClone removeClone doPauseAll receiveOnScene doSwitchToScene reportTouchingObject reportTouchingColor reportColorIsTouchingColor reportAspect reportStackSize reportFrameCount reportYieldCount reportThreadCount doAsk reportLastAnswer getLastAnswer reportMouseX reportMouseY reportMouseDown reportKeyPressed reportRelationTo doResetTimer reportTimer getTimer reportAttributeOf reportObject reportURL doSetGlobalFlag reportGlobalFlag reportDate reportAudio reifyScript reifyReporter reifyPredicate reportVariadicSum reportDifference reportVariadicProduct reportQuotient reportRound reportMonadic reportPower reportModulus reportAtan2 reportVariadicMin reportVariadicMax reportVariadicEquals reportVariadicNotEquals reportVariadicLessThan reportVariadicLessThanOrEquals reportVariadicGreaterThan reportVariadicGreaterThanOrEquals reportVariadicAnd reportVariadicOr reportNot reportBoolean reportLetter reportTextAttribute reportUnicode reportUnicodeAsLetter reportIsA reportVariadicIsIdentical reportTextSplit reportJSFunction reportTypeOf reportTextFunction reportCompiled doSetVar doChangeVar doShowVar doHideVar doDeclareVariables doDeleteAttr reportCONS reportCDR reportListAttribute reportListContainsItem reportListIsEmpty reportListIndex doAddToList doDeleteFromList doInsertInList doReplaceInList reportNumbers reportConcatenatedLists reportReshape reportMap reportAtomicMap reportKeep reportAtomicKeep reportFindFirst reportAtomicFindFirst reportCombine reportAtomicCombine doForEach doShowTable doMapCodeOrHeader doMapValueCode doMapListCode reportMappedCode doApplyExtension reportApplyExtension doSetVideoTransparency reportVideogetPosition doDefineBlock doDeleteBlock doSetBlockAttribute reportBlockAttribute reportEnvironment reportMousePosition reportCrossproduct reportPipe receiveUserEdit getPosition reportVideoTakes a text string as input, and reports TRUE if the input contains no characters other than spaces (therefore, no words when the string is considered as a sentence), otherwise FALSE.pt:a frase _ está vazia
Like JOIN, this block takes any number of words (text strings) and reports a sentence with its inputs concatenated, but unlike JOIN, this block inserts a blank space between the inputs.de:füge Wörter zusammen _
ca:uneix les paraules _
es:unir las palabras _
fr:fusionne les mots _
pt:uma frase com as palavras _
first wordall but first wordfirst word111all but first wordTakes a sentence in text string form and reports the sentence as a list of its words.de:Satz $arrowRight Liste _
ca:frase $arrowRight llista _
es:frase $arrowRight lista _
fr:phrase $arrowRight liste _
pt:uma lista com as palavras da frase _
data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==
\ No newline at end of file
diff --git a/sparks/student-pages/U1/L1/03-customizing.html b/sparks/student-pages/U1/L1/03-customizing.html
index 04048037c..4982d15d1 100644
--- a/sparks/student-pages/U1/L1/03-customizing.html
+++ b/sparks/student-pages/U1/L1/03-customizing.html
@@ -3,7 +3,7 @@
- Unit 1 Lab 1: Introduction to Snap!, Activity 2
+ Unit 1 Lab 1: Introduction to Snap!, Activity 3
diff --git a/sparks/student-pages/U1/L2/05-creating-a-block.html b/sparks/student-pages/U1/L2/05-creating-a-block.html
index 4d23c8ae5..27a32d5fb 100644
--- a/sparks/student-pages/U1/L2/05-creating-a-block.html
+++ b/sparks/student-pages/U1/L2/05-creating-a-block.html
@@ -32,20 +32,13 @@
Making a Block
You are creating a reporter, so the block editor opens with a block already attached to the plural hat block. Whatever input you give to the report block will become the value reported by your new block.
-
+
+ Your block will only look like that inside the Block Editor that lets you define what the block does. Once you close the Block Editor, your block will look like this: .
-
The vocab box about abstraction should be cut down considerably. --MF, 2/9/22
-
: Abstraction
-
Will they be watching a video on abstraction here? Or does Dan mention it in welcome? It feels so..abstract..here that I wonder what students will take from it. If I wasn't bound to use the term abstraction, I'd probably emphasize the benefit of reuse "When we realize we've developed a useful piece of functionality that we might want to use in other places, we can turn it into its own block." Anyway just musings from your local "abstraction" skeptic, feel free to delete. -- PF 8/20/21
I added your text at the beginning and am open to a Dan video and/or more discussion about teaching abstraction. :) --MF, 8/20/21
-
When you've developed a useful piece of code that you want to use in other places, you can turn it into its own block. This is a form of abstraction. Abstraction is an important idea in computer science. One kind of abstraction is breaking up a large problem into smaller sub-problems.
-
For example, instead of putting into an input slot of super short story, you can create a block and put random animal in its input slot.
-
This makes your code easier to read, you can use the new block again in other places, and once the block is working, you don't need to think about how it works each time you use it.
-
-
In this activity, you made a new block to use to add an "s" to the end of any word.
The vocab box about abstraction should be cut down considerably. --MF, 2/9/22
+
: Abstraction
+
Will they be watching a video on abstraction here? Or does Dan mention it in welcome? It feels so..abstract..here that I wonder what students will take from it. If I wasn't bound to use the term abstraction, I'd probably emphasize the benefit of reuse "When we realize we've developed a useful piece of functionality that we might want to use in other places, we can turn it into its own block." Anyway just musings from your local "abstraction" skeptic, feel free to delete. -- PF 8/20/21
I added your text at the beginning and am open to a Dan video and/or more discussion about teaching abstraction. :) --MF, 8/20/21
+
When you've developed a useful piece of code that you want to use in other places, you can turn it into its own block. This is a form of abstraction. Abstraction is an important idea in computer science. One kind of abstraction is breaking up a large problem into smaller sub-problems.
+
For example, instead of putting into an input slot of super short story, you can create a block and put random animal in its input slot.
+
This makes your code easier to read, you can use the new block again in other places, and once the block is working, you don't need to think about how it works each time you use it.
+
+
+
In this activity, you created a new block to perform a specific task and used it in your story.
When we revisit, I suggest renaming sort data to sort counted data (for example) as that's the only input it seems to accept. Also, we should update our block names to newer format (so the resulting expressions are sentence readable) and without all the colons. --MF, 12/10/21
I changed every "we" on this page to "you." This is probably an issue on all the other pages, too, but this is where it really hit me hard, in "We don't need to type..." after 1.3.2.2. --bh
+
Consider splitting into two pages. --MF 7/22/24
In this activity, you'll input your cleaned research data in Snap! and create a visualization of the results.
So far, you've defined your research question, collected data, and cleaned up the data. Before you can analyze your data, you'll need to import the data into Snap!.
@@ -153,7 +154,7 @@
Visualizing Your Results
Click on the block to see your pictograph. It should show up on the stage instead of in a bubble, since this is a command block. A command block changes something about the environment, like drawing on the stage, but doesn't directly report a value.
-
How does it look? Is your data as clean as you hoped? You can still clean up data now, if the graph has made some messy data more obvious than before.
+
How does it look? Is your data as clean as you hoped? You can still clean up data now, if the graph has made some messy data more obvious than before.
In the number 1023, there is a 1 in the thousands place, a 0 in the hundreds place, a 2 in the tens place, and a 3 in the ones place.
+
That means there is one thousand, the two tens make twenty, and then we have three. So, the number is one thousand twenty-three.
+
+
-
Instead of counting on ten fingers, computers count with only two options: on and off. So, computers store numbers as binary numerals. All their calculations are in binary. They convert the decimal numerals we use to interact with computers into binary numerals before performing any calculations.
+
Instead of counting on ten fingers like people, computers count with only two options: on and off. So, computers store numbers as binary numerals. All their calculations are in binary. They convert the decimal numerals we use to interact with computers into binary numerals before performing any calculations.
: Binary Numerals
A binary numeral is part of the base 2 system.
@@ -120,7 +128,15 @@
Numbers Systems for Humans vs. Machines
-
39
Find the decimal representation for the binary numeral 100111.
+
+
+
+
13, 39, 56
+
Find the decimal representation for the binary numeral 1011.
+
Find the decimal representation for the binary numeral 100111.
+
Find the decimal representation for the binary numeral 111000.
I think the above "reading" exercise should include a few more numbers and the below ITIT needs more support for writing in binary. --MF, 9/22/21
Try writing a number in binary and see if a friend can convert back to your original number. If they have trouble, go through both calculations (yours and theirs) together. If they succeed in finding your original number, try a bigger number!
+
+
+ Try writing out all the binary numerals from 1 to 16. What do you notice?
+
You might be wondering what the ones and zeros look like inside the computer, but actually, computers don't really store the digits 0 and 1. Computers store data using electricity. Generally, a 1 is stored as a positively charged electric signal and a 0 is stored as no charge at all.
-
- For example, the memory of your computer most likely stores bits by storing charge in a capacitor. Here are some capacitors of varying sizes:
-
Wikipedia claims image is in public domain: https://commons.wikimedia.org/wiki/File:Electronic-Component-Elec-Capacitors.jpg
+
Words and images are stored as numbers, and numbers are stored with bits (ones and zeros). You may be wondering what the ones and zeros look like inside the computer, but computers don't actually store the digits 0 and 1.
+
Computers store data using electricity. Generally, a 1 is stored as a charged electric signal and a 0 is stored as no charge. For example, the memory of your computer most likely stores bits by storing charge in a capacitor.
+
+
Capacitors store energy in an electric field (such as between two metal plates). Here are some capacitors of varying sizes:
+
Wikipedia claims image is in public domain: https://commons.wikimedia.org/wiki/File:Electronic-Component-Elec-Capacitors.jpg
-
-
The bits inside your computer are teeny tiny—around 20 nanometers, and a nanometer is so small that a billion of them (1,000,000,000) are in one meter! That's why computers are able to store so much information.
+
+
+
The bits inside your computer are tiny—around 20 nanometers, and a nanometer is so small that a billion of them (1,000,000,000) are in one meter! That's why computers are able to store so much information.
For the binary number 1010, we could imagine the computer storing it like this:
diff --git a/sparks/student-pages/U1/L5/05-caesar-cipher.html b/sparks/student-pages/U1/L5/05-caesar-cipher.html
index 70745f6d1..9f8543be9 100644
--- a/sparks/student-pages/U1/L5/05-caesar-cipher.html
+++ b/sparks/student-pages/U1/L5/05-caesar-cipher.html
@@ -33,7 +33,7 @@
Exploring Unicode
- You can right-click (or control-click on a Mac) either block and select "help..." from the down-down menu to see more details of how the block works.
+ You can right-click (or control-click on a Mac) either block and select "help..." from the drop-down menu to see more details of how the block works.
Open this Für Elise Example Song, click the Visible Stepping button (), click the script to play the song, and watch how Visible Stepping shows how the program moves through the nested repeat blocks.
-
It feels like Snap speeds up the playback in each subsequent repeat, maybe due to having the audio cached? I felt like it was getting faster and faster. Not sure if thats in my head or not! Also, another Snap music bug- it seems like the final note sometimes persists for way longer, perhaps related to me being in a separate tab. -PF 3/3/22
Yes, that's by design. ;) There is a change tempo block inside the repeat. I was hoping that students would discuss this script and realize what is happening. I do generally experience weird sound stuff, but not a long last note; I get shortened first notes! I believe Michael thinks that has to do with the way sounds are implemented. --MF, 3/6/22
TODO: change set tempo to 60 instead of 100 so it builds up more slowly. --MF, 7/6/23
+
It feels like Snap speeds up the playback in each subsequent repeat, maybe due to having the audio cached? I felt like it was getting faster and faster. Not sure if thats in my head or not! Also, another Snap music bug- it seems like the final note sometimes persists for way longer, perhaps related to me being in a separate tab. -PF 3/3/22
Yes, that's by design. ;) There is a change tempo block inside the repeat. I was hoping that students would discuss this script and realize what is happening. I do generally experience weird sound stuff, but not a long last note; I get shortened first notes! I believe Michael thinks that has to do with the way sounds are implemented. --MF, 3/6/22
TODO: change set tempo to 60 instead of 100 so it builds up more slowly. --MF, 7/6/23
Repeating the same set of commands (such as with repeat or forever) is called looping or iteration.
-
If you haven't already, try using the block to repeat a note or a sequence of notes in a song. Play your song with Visible Stepping turned on.
+
+ If you haven't already, try using the repeat block to repeat a note or a sequence of notes in a song. Play your song with Visible Stepping turned on.
+
+
Try nesting one repeat inside another as in the "Für Elise" example above.
- Try using a block to repeat a command (or group of commands) forever, and play your song with Visible Stepping on.
-
The sequence of blocks inside the forever block will repeat until you stop it. You can click the red stop sign () to stop all scripts in your project from running, or you can click an individual script to stop it.
+ Try using a forever block to repeat a command (or group of commands) forever, and play your song with Visible Stepping on.
+
+
The sequence of blocks inside the forever block will repeat until you stop it. You can click the red stop sign () to stop all scripts in your project from running, or you can click an individual script to stop it.
-
In this activity, you used iteration to repeat a set of commands.
-
What? You used iteration by repeating a set of commands, if anything. Does this box really mean "In this activity you learned the word 'iteration'"? (And, Mary, aren't you the comma minimalist in our gang?) --bh 3/3/22
I'm not sure what the issue is here, Brian. Could you please suggest an alternative? --MF, 3/6/22
-
+
In this activity, you used iteration by repeating a set of commands.
diff --git a/sparks/student-pages/U2/L2/06-importing-own-images.html b/sparks/student-pages/U2/L2/06-importing-own-images.html
index 7c15bb0cb..cda9a6278 100644
--- a/sparks/student-pages/U2/L2/06-importing-own-images.html
+++ b/sparks/student-pages/U2/L2/06-importing-own-images.html
@@ -36,7 +36,7 @@
Select the stage icon or a sprite icon depending on where you want the image to go.
-
Drag the image file from your computer anywhere into the Snap! window.
+
Drag the image file from your computer anywhere into the Snap! window. (If you want to use an image from the internet, you'll need to download it first and then drag in the saved image file.)
Click the "Backgrounds" or "Costumes" tab, and select the new background or costume.
- There is a for each block at the core of the oscilloscope code. In order to plot the microphone volume intensity (loudness) over time, the sprite should go to each microphone volume sample.
+ There is a for each block at the core of the oscilloscope code. In order to draw a plot of the microphone volume intensity (loudness) over time, the sprite should go to each microphone volume sample, tracing our the intensities across the Snap! stage.
-
As you've seen, every time microphone (samples) runs, it reports a set of samples recorded over a brief period of time. For our oscilloscope, we want to plot that set of samples across the stage, then replace it with the next set of sound samples detected, then replace it again, and so on in order to visualize the signal intensity over time.
+
As you've seen, every time microphone (samples) runs, it reports a set of samples recorded over a brief period of time. For our oscilloscope, we want to plot that set of samples across the stage, then replace the drawing with the next set of sound samples detected, then replace it again, and so on in order to visualize the changing signal intensity over time.
Since we'll plot the samples across the stage horizontally, we need to keep track of how much space each sample gets on the stage.
@@ -36,6 +36,7 @@
Writing Code to Draw One Set of Samples
Create a global variable called sample width to store the amount space each sample gets on the stage. Set it to the width of the stage divided by the microphone resolution (the number of values in the sample set). Click for an example of how to set the value of this variable.
+
Why set sample width to the width of the stage divided by the microphone resolution?
Since we need to know how much space each sample gets on the stage, we need to divide up the stage width into enough pieces for all the microphone samples to fit.
The sprite needs to draw the set of volume samples across the stage. For each sample, the sprite should move forward horizontally (the width of one sample) and move vertically to the intensity (loudness) of that sample. Create the for each code by copying the code shown above and completing the inputs to the go to block.
diff --git a/sparks/student-pages/U3/L4/01-make-it-move.html b/sparks/student-pages/U3/L4/01-make-it-move.html
index 74e2a406e..54850979c 100644
--- a/sparks/student-pages/U3/L4/01-make-it-move.html
+++ b/sparks/student-pages/U3/L4/01-make-it-move.html
@@ -25,26 +25,26 @@
Collect Materials
-
Get Started
Motors are one way to add movement to your projects. There are many different types of motors, including one called a servo motor.
-
+
A servo motor provides position control, so it can be told to move into an exact spot. Its position can be selected from 0 to 180 degrees.
-
+
Insert your micro:bit into the Bit Board, pins facing down.
-
Connect a servo to the pins on the Bit Board, making note of which pins. Use the following image as reference for setup.
-
-
+
Connect a servo to the pins on the Bit Board, making note of which pins. Use the following image as reference for setup.
+
+
-
+
The direction you plug things in matters! The LEDs on the micro:bit should be facing out when plugged into the Bit Board. The colors of the servo wire should match the colors of the pins on the Bit Board. And if you are using the battery pack, the red wire should be plugged in to the "+" side and the black wire should be plugged in to the "-" side.
+
-
-
-
Add the servo library in MicroBlocks by selecting Library, and then Servo.ubl.
+
+
+
Add the servo library in MicroBlocks by selecting Library, and then Servo.ubl.
Trouble shooting: If students are having trouble with the circuits, have then try closing the circuit without any materials by directly connecting and disconnecting the ends of the two alligator clips and checking that their code is responding the way they would want if the circuit were closed/opened with their physical materials. If it doesn't work with the alligator clips, try checking the connection between the clips and the micro:bit board. If it does work with the alligator clips, try connecting one alligator clip at its intended connection point and touching the second clip at various points along the path of the circuit to identify the problem spot. (Also need to be clear about what a circuit is and what matters/doesn't matter in setting up the aluminum foil, etc.) --MF, 7/27/23
-
Students pair up to create their own games to play with other classmates. They can just the micro:bit or additional craft materials (see Activity 1 for details). Students are introduced to variables and the input/output (I/O) pins on the hardware. After completing their games, students introduce their projects to one for feedback to iterate on their design.
+
Students pair up to create their own games to play with other classmates. They can use only the micro:bit or also additional craft materials (see Activity 1 for details). Students are introduced to variables and the input/output (I/O) pins on the hardware. After completing their games, students introduce their projects to one for feedback to iterate on their design.