Scratch+Programming+Concepts

=**SPECIFIC PROGRAMMING CONCEPTS**=

In the process of creating interactive stories, games, and animations with Scratch, students learn important computational skills and concepts The following 3 tables summarize the computational thinking framework and define its components.
 * Programming Concepts and Skills Supported in Scratch**
 * Computational Thinking Connections**


 * **Computational Practices** ||
 * **Practice** || **Description** ||
 * being iterative and incremental || developing a little bit, then trying it out, then developing some more ||
 * testing and debugging || making sure that things work – and finding and fixing mistakes ||
 * reusing and remixing || making something by building on what others – or you – have done ||
 * abstracting and modularizing || building something large by putting together collections of smaller parts ||

“I can create.” || “I can do different things when I have access to others.” || “I can (use computation to) ask questions to make sense of (computational things in) the world. ||
 * **Computational Perspectives** ||
 * **Perspective** || **Description** ||
 * expressing || realizing that computation is a medium of creation
 * connecting || recognizing the power of creating with and for others
 * questioning || feeling empowered to ask questions about the world

numbers or strings. Scratch supports both global and object-specific variables. || an be considered a “dynamic array.” || allows synchronization. ||
 * **Concepts** || **Explanation** ||
 * **sequence** || To create a program in Scratch, you need to think systematically about the order of steps. ||
 * **iteration (looping)** || **forever** and **repeat** can be used for iteration (repeating a series of instructions) ||
 * **conditional statements** || **if** and **if-else** check for a condition. ||
 * **variables** || The **variable** blocks allow you to create variables and use them in a program. The variables can store
 * **lists (arrays)** || The **list** blocks allow for storing and accessing a list of numbers and strings. This kind of data structure
 * **event handling** || **when key pressed** and **when sprite clicked** are examples of event handling – responding to events triggered by the user or another part of the program. ||
 * **threads (parallel execution)** || Launching two stacks at the same time creates two independent threads that execute in parallel. ||
 * **coordination and synchronization** || **broadcast** and **when I receive** can coordinate the actions of multiple sprites. Using **broadcast and wait**
 * **keyboard input** || **ask and wait** prompts users to type. answer stores the keyboard input. ||
 * **random numbers** || pick random selects random integers within a given range. ||
 * **boolean logic** || and, or, not are examples of boolean logic. ||
 * **dynamic interaction** || **mouse_x, mouse_y,** and **loudness** can be used as dynamic input for real-time interaction ||
 * **user interface design** || You can design interactive user interfaces in Scratch – for example, using clickable sprites to create buttons. ||