Loop Measures Definition Why We Are Looking at it What it looks like
Students may have placed forever
loops into the Scratch code area that There is a forever loop in the Scratch they are not/are no longer using. empty forever loops code area that does not have any The line goes down Having many empty forever loops may blocks in it. show that the student does not know how to use them very well.
When students place other
There are forever loops in the coding appropriate blocks inside of forever nonempty forever loops The line goes down sandbox that have blocks in them. loops, they are showing that they know how a forever loop can be used.
Although this measure is a
combination of the two above, the forever Total forever loops, empty or not idea is to see if the student has made The line goes up their project more complicated by using more forever loops.
When students place other
There are repeat loops in the coding appropriate blocks inside of a repeat nonempty repeat loops The line goes up sandbox that have blocks in them. loop, they are showing that they know how a repeat loop can be used.
Students may have placed repeat loops
into the Scratch code area that they There are repeat loops in the coding The line goes down are not/are no longer using. Having empty repeat loops sandbox that do not have any blocks (Combined with below for many empty repeat loops may show in them. "repeat loop errors") that the student does not know how to use them very well.
Students placed a repeat loop into the
Scratch code area, but changed the default "10" to repeat to a number that does not repeat. May show that The line goes down There are repeat loops with a repeat repeat 0 or 1 the student does not know how to use (Combined with below for of 0 or 1. "repeat" very well. (In our case studies, "repeat loop errors") we had the unique instance of this purposely being used to get around requirements for a project. )
Nesting loops shows a deeper
What is the most complex/deep use understanding of how programming max nested loop depth The line goes up of loops via nesting? works in Scratch. Shows a "leveling Up" in programming skills.
Forever if blocks are more difficult to
put into use/understanding than the forever if The [forever if] block is used Shows if using at all traditional "forever" block. Shows a "Leveling Up" in programming skills. Loop Measures Definition Why We Are Looking at it What it looks like
Repeat until blocks are more difficult
to put into use/understanding than the repeat until The [repeat until] block is used Shows if using at all traditional "repeat (10)" block. Shows a "Leveling Up" in programming skills. Initialization Measures Definition Why We Are Looking at it What it Looks Like Many variables need to be set to a specific "state" or number; if not repeating the scratch project will Compared to the total of make it not work as intended. The variables used, how many ratio of how many variables have been variable initialization ratio The line goes up have the initial state of the initialized to how many have not can variable set? show how many variables students are initializing to work correctly compared to how many they have not initialized.
This measure can show how many
variables are being initialized. When variables are used, is Compared to the measure above, it initialized variables the variable set to an initial does not show how many variables The line goes up state? are not being initialized, therefore missing part of the student variable use picture.
Some graphic effects may reset to
initialized graphic effects their initial state when a project is When using a graphic effect started again. In cases where they do (within the Looks blocks: color, not reset, the student has to manually Over time, the uninitialized fisheye, whirl, pixelate, add programming to cause that reset line goes down, and the mosaic, brightness, and ghost), to an initialized state. In general when initialized line goes up is it set to an initial state in the set, it shows clean programming uninitialized graphic effects program? practices, tying up lose ends that may/have cause/d a bug problem.
Most projects require an initial
location for a sprite. If there is no sprites with position init initial location set, when the project is started a second time, the sprite will When a sprite moves, is the not be in the intended location. There Over time, the uninitialized location set to an initial state are two reasons this might not apply: line goes down, and the in the program? 1. the sprite never moves. 2. it does initialized line goes up not matter where the sprite begins (example, a ping-pong game, it does sprites missing position init not have to have the ball start in a specific location).
Most projects require an direction
initialization for a sprite. If there is no sprites with direction init direction set, when the project is When a sprite changes the Over time, the direction started a second time, the sprite will direction that it is facing, is the initialization line goes up, not be facing the intended way. There direction set to an initial state the missing direction are two reasons this might not apply: in the program? initialization goes down 1. the sprite never moves. 2. it does sprites missing direction init not matter if the sprite is facing a direction. (example, a ball) Initialization Measures Definition Why We Are Looking at it What it Looks Like Some projects use the "change size by sprites with size init Over time, the size 10" to change the size of the sprite When a sprite changes size, is initialization line goes up, from the original. If there is no initial the size set to an initial state in the missing size size set, the sprite will keep the program? initialization line goes sprites missing size init growing/shrinking on successive down project repeats.
Some projects use the "change tempo
sprites with tempo init by 20" to change the tempo of the Over time, the tempo When a sprite changes tempo, sprite. If there is no initial tempo set, initialization goes up, and is the tempo set to an initial the sprite will keep missing tempo initialization state in the program? sprites missing tempo init increasing/decreasing tempo on goes down successive project repeats.
Some projects use the "change
sprites with volume init Over time, the volume volume by -10" to change the volume When a sprite changes initialization line goes up, of the sprite from the original. If there volume, is the volume set to and the missing volume is no initial volume set, the sprite will an initial state in the program? initialization line goes sprites missing volume init keep getting quieter/louder on down successive project repeats.
Many projects require a sprite to hide
sprites with show hide init (example, during a scene change) or Over time, the show/hide show (example, after a scene change). When a sprite shows or hides, initialization line goes up, If there is no initial state of "hide" or is the initial state of "show" or and the missing show/hide "show" set, when the project is "hide" selected? initialization line goes started a second time, the sprite will sprites missing show hide init down. not be hiding/showing the intended way.
Some projects use the "go back (1)
sprites with layer init layers" to change the layer of the sprite (example, if the sprite needs to be behind another sprite, not in front Over time, the layer When a sprite changes layers, of it). If there is no initial layer set, the initialization goes up, and are the layers set to an initial sprite will keep moving back a layer. If the missing layer state in the program? a sprite is being used as a background, initialization goes down sprites missing layer init the layer changing sprite can get lost behind that background sprite. (This was rarely used)
Some projects use the "pen" blocks to
sprites with pen init create a sprite that draws a trail behind it. If using pen blocks, a sprite Over time, the amount of When a sprite uses the pen, is must have a "pen down" block to "pen down" blocks is more the pen set to an initial state in achieve results. Without that block, than the lack of "pen down the program? the student is missing part of their blocks. sprites missing pen init understanding on how to use the pen blocks. Initialization Measures Definition Why We Are Looking at it What it Looks Like Many projects have more than one backdrop on the "Stage". If a specific program has scene init backdrop is not set to start with Over time, the has scene When a program changes (initialization), upon a repeating the initialization line goes up, scenes, are the scenes set to project, the backdrop may not be as and missing scene an initial state in the program? intended. Looking at this will show if initialization line goes the student understands how to down program missing scene init correctly program a backdrop that they want.
This measure shows a ratio of the
above measure, displaying how many sprites change costume vs. how many only have multiple costumes, but do Over time, the student may not change them. This shows a Out of sprites with multiple use more costume clearer picture of student use of sprites that change costumes costumes, how many change changes, and the line will sprites with multiple costumes. Do costumes? go up. This could show they change the costumes? If so, are more complex projects. they changing the sprites costume a few times or many times? Changing a costume many times can show a more complex a project.
Many projects have sprites that use
more than one costume. If the initial sprites with costume init state (i.e. the first costume) is not set, Over time, the has When a sprite changes upon repeating the project, the sprite costume initialization line costumes, are the costumes costume will not be as intended. goes up, and the missing set to an initial state in the Looking at this will show if the student costume initialization line program? can change a sprite costume to what goes down they want, and that the costume will sprites missing costume init be correct once the project is repeated. Event-Driven/ Parallelism Measures Definition Why We Are Looking at it What it Looks Like Many projects have sprites that begin action when the green flag is clicked. Sprites that don't have a "When green Compared to all sprites, how flag clicked" block hat tend to mean proportion of sprites with many have a green flag? (Does that the project is not working/yet. The line goes up green flag not include starter blocks that are (This does not take into account the not green flags, like key presses) other event blocks, such as when key is pressed, when sprite is clicked, when backdrop switches, etc.)
We are looking at this measure
because it can show that a student has a basic understanding of how to run two+ code stacks at the same time (parallelism), i.e. movement and sprites with multiple green How many sprites have more than costume change on two different code The line goes up flags one green flag block used? stacks so a sprite appears to be walking. Preferably there are more than 1-3 blocks connected to each stack, and not simply the addition of another green flag to handle something like initialization only.
When more sprites have multiple
green flag hat blocks, the complexity of Compared to all sprites, how the code increases. This can show proportion of sprites with many have more than one green further development of understanding The line goes up multiple green flags flag block used? of Scratch programming, and putting that understanding to use with more complicated projects.
When a student learns how to do
broadcast, often they do not use it successfully at first. A common reason that causes a broadcast not to work as expected is that the broadcast does not have a corresponding Receive hat block. Understanding that broadcast How many broadcasts have a works to communicate code within a broadcasts received The line goes up complete pairing with a receive? project to different sprites and the stage is a step up in abstraction. No longer is the code for one sprite happening only within that sprites code screen, there now may be sections of code that it can trigger or be triggered by from outside of that sprites code screen. Event-Driven/ Parallelism Measures Definition Why We Are Looking at it What it Looks Like Understanding that one broadcast can trigger multiple receive code stacks on the same or different sprites and the Broadcasts have multiple stage is a step up in abstraction above broadcasts with multiple receives on same or different having one broadcast trigger one The line goes up receives sprites/background receive. When this line goes up, it can show more complicated or sophisticated programming techniques.
If a student is fully using broadcast,
one sprite may be triggered by multiple broadcast coming from itself or other sprites or the stage. When Sprite has multiple receives from this line goes up, it can show more sprites with multiple receives The line goes up different broadcasts complicated or sophisticated programming techniques.
(could be showing the same thing as
measure above)
We are looking at this measure
because it can show that a student has a more sophisticated (level up) understanding of how to use a Sprite has multiple of the same broadcast to run two+ code stacks at sprites with multiple identical receives starting parallel code the same time (parallelism) in the The line goes up receives with a broadcast same sprite, i.e. movement and costume change on two different code stacks so a sprite appears to be walking, triggered with broadcast receive hat blocks. Conditional Measures Definition Why We Are Looking at it What it Looks Like
Shows if the student is trying to use a
conditional statement (if, forever if, if Count of "If" or "Forever if" else), and there are more blocks complete conditionals or "If Else" blocks that have The line goes up connected below the "If"/"Forever conditions and consequents If"/"If Else" block that trigger when that condition has been filled.
Shows if the student is trying to use a
conditional statement (if, forever if, if else), but there is something that causes the conditional statement not Count of "If" or "Forever if" to work as expected. Specifically, that or "If Else" blocks missing incomplete conditionals something would be if the conditional The line goes up conditions and/or blocks are missing, or if there are no consequents "consequents" blocks connected below the(If/Forever If/If Else) block that trigger when that condition has been filled.
Count of "If", "Forever If", "If
Else", "Until", or "Wait Until" blocks having one or more of the following in the This measure looks at if a student has condition: 'xpos', 'ypos', used a Scratch variable (such as those 'heading', 'costumeIndex', to the left) within a conditional conditionals using scratch 'scale', 'backgroundIndex', statement (If/Forever If/If Else/ If used at all defined variables 'sceneName', 'tempo', Until/Wait Until). Shows advanced 'volume', 'timeAndDate', understanding and use of Scratch 'timestamp', programming concepts. 'getUserName', 'timer', 'soundLevel', 'isloud', 'getAttribute:of:'
This measure looks at if a student has
Count of user-defined used a their own variable (such as variables used in a condition health) within a conditional statement variables used in if or until If used at all in "If", "Forever If", "If Else", (If/Forever If/If Else/ Until/Wait Until). "Until", or "Wait Until" Shows advanced understanding and use of Scratch programming concepts. Conditional Measures Definition Why We Are Looking at it What it Looks Like Count of "If", "Forever If", "If Else", "Until", or "Wait Until" This measure looks at if a student has blocks having one or more of used a sensing block(touching other the following in the sprites, touching colors, mouse is at x condition: coordinate, the mouse is being conditionals using sensing 'senseVideoMotion', clicked), within a conditional If used at all 'touching:', 'touchingColor:', statement (If/Forever If/If Else/ 'color:sees:', 'mouseX', Until/Wait Until). Shows advanced 'mouseY', 'mousePressed', understanding and use of Scratch 'keyPressed:', 'distanceTo:', programming concepts. 'answer'
This measure shows if a student uses
Count of "If" or "If Else" multiple conditional statements nested conditional in statements nested within nested within each other, (e.g. {If If used at all conditional another "If" or "If Else" mouse x = 30[if mouse y=30] hide}). statement Shows advanced understanding and use of Scratch programming concepts.
Shows up when students create a
smooth user movement integration for Count of "If" or "If Else" a sprite within a project. {forever[if nested conditional in loop statements nested within a If used at all touching up(move x by 3)]}. Shows loop advanced understanding and use of Scratch programming concepts.
Shows if the student is trying to use a
conditional statement (if, if else) with Booleans (and, or, not). (Same as measure in Boolean category that is Count of "If" and "If Else" named the same) statements with an "or", conditionals with Booleans If used at all "and" or "not" in the Example of conditional with Boolean: condition For sensing the clicking of the mouse pointer on a sprite: If <<touching [mouse-pointer]> and ,<mouse down?>> Conditional Measures Definition Why We Are Looking at it What it Looks Like
When students use If/If Else
statements, it is often required that they use a loop to continually check the state of the program to see if it fulfills the statement. If the If/If Else Count of "If" and "If Else" block is not placed within a loop, it will conditionals in green flag statements not in a loop. only run once. Often this is The line goes down and not in loop The "hat" on the associated undesireable, and is a bug that a script is a green flag. student must fix. Therefore, if this line is up, and the student fixes the line will go down. This shows that the student found and fixed the bug. (one instance this may not apply is if they removed the conditional code entirely) Boolean Measures Definition Why We Are Looking at it What it Looks Like Shows if the student is trying to use a conditional statement (if, if else) with Count of "If" and "If Else" Booleans (and, or, not). statements with an "or", conditionals with Booleans "and" or "not" in the Example of conditional with Boolean: used at all condition (same as under For sensing the clicking of the mouse conditionals) pointer on a sprite: If <<touching [mouse-pointer]> and ,<mouse down?>>
Shows if if the student set up the
conditional with Boolean statement correctly. The measure above is Count of "If" and "If Else" working. statements with an "or", conditionals with "and" or "not" in the The line goes up complete Booleans Example of conditional with Boolean: condition. All necessary For sensing the clicking of the mouse arguments are present. pointer on a sprite: If <<touching [mouse-pointer]> and ,<mouse down?>>
Shows if the student did not set up the
conditional with Boolean statement Count of "If" and "If Else" correctly. The top measure does not statements with an "or", work as expected. conditionals with "and" or "not" in the The line goes up incomplete Booleans condition. One or more Example of conditional with Boolean: necessary arguments are For sensing the clicking of the mouse missing. pointer on a sprite: If <<touching [mouse-pointer]> and ,<mouse down?>>
Shows if the student has set up a
Boolean statement correctly, in the case of it being used without a Count of complete Booleans conditional. complete Booleans ("not" with one argument or The line goes up "and", "or" with two) Example of Boolean statement: Wait until <<touching blue> or <touching green>> Sensing Measures Definition Why We Are Looking at it What it Looks Like
User control blocks (such as key press
and mouse press/click) are used to trigger code within a project. When they are used, the student has added Count of key press and mouse user control block count user interactivity into a project, which if used at all press blocks can make a project more interesting. Adding user interaction often takes more planning and complicated programming of a project.
Popular code in Scratch Camp to
Count of touching blocks with touching edge prevent sprites mving off the screen if used at all "edge" argument and getting "lost".
User interaction is required to move
the mouse within the project. Adding Count of touching blocks with touching mouse user interaction often takes more if used at all "mouse" argument planning and complicated programming of a project.
If a touching block is used that does
not have the argument portion filled in (e.g. Touching [sprite]) it will not work as intended and creates a bug that a student would need to fix. If looking at touching missing Count of touching blocks with if used at all/line goes the non-cumulative plots and this line argument no argument down over time is up and then goes down, it may show that the student has found and fixed this issue. For cumulative plots, the line will go flat, since cumulative does not go down in amount.
How many sprites have a block that
Count of touching blocks with a touching sprite triggers code when a specific sprite is if used at all sprite as the argument touching it?
How many sprites have a block that
Count of touching blocks with a touching color triggers code when that sprite is if used at all color as the argument touching a specific color? Randomization Measure Definition Why We Are Looking at it What it Looks Like To create a random effect, such as the appearance of fruit in a game like Pac- Man, it takes multiple blocks to be Counts the amount of that built together to create one block (e.g the move X by (pick random # to #)) randomization [pick random (#) to (#)] Because of this extra complication o If used at all light green Operators block building up the block to do what is gets used in any way. desired in theprogram, it tends to show more complexity in the understanding of the student on how to program in Scratch.