Photo Booth
Experience: 1st year, 2nd quarter
Practice: Creating computational artifacts, Developing and using abstractions, Fostering an Inclusive Computing Culture, Testing and refining computational artifacts, and Communicating about computing
Concept: Algorithms and Control
Length: 30+
Overview and Purpose
Coders apply their understandings of broadcasting and receiving messages to create an interactive photo booth. The purpose of this project is to reinforce understandings of messages through a remix project focusing on adding user controls.
Objectives and Standards
Process objective(s):
Statement:
- I will learn how to add user controls to a remix project.
Question:
- How can we add user controls to a remix project?
Product objective(s):
Statement:
- I will remix someone else’s project to create an interactive photo booth.
Question:
- How can we remix someone else’s project to create an interactive photo booth?
Main standard(s):
1B-AP-10 Create programs that include sequences, events, loops, and conditionals
- Control structures specify the order (sequence) in which instructions are executed within a program and can be combined to support the creation of more complex programs. Events allow portions of a program to run based on a specific action. For example, students could write a program to explain the water cycle and when a specific component is clicked (event), the program would show information about that part of the water cycle. Conditionals allow for the execution of a portion of code in a program when a certain condition is true. For example, students could write a math game that asks multiplication fact questions and then uses a conditional to check whether or not the answer that was entered is correct. Loops allow for the repetition of a sequence of code multiple times. For example, in a program that produces an animation about a famous historical character, students could use a loop to have the character walk across the screen as they introduce themselves. (source)
1B-AP-12 Modify, remix, or incorporate portions of an existing program into one's own work, to develop something new or add more advanced features.
- Programs can be broken down into smaller parts, which can be incorporated into new or existing programs. For example, students could modify prewritten code from a single-player game to create a two-player game with slightly different rules, remix and add another scene to an animated story, use code to make a ball bounce from another program in a new basketball game, or modify an image created by another student. (source)
Reinforced standard(s):
1B-AP-11 Decompose (break down) problems into smaller, manageable subproblems to facilitate the program development process.
- Decomposition is the act of breaking down tasks into simpler tasks. For example, students could create an animation by separating a story into different scenes. For each scene, they would select a background, place characters, and program actions. (source)
1B-AP-15 Test and debug (identify and fix errors) a program or algorithm to ensure it runs as intended.
- As students develop programs they should continuously test those programs to see that they do what was expected and fix (debug), any errors. Students should also be able to successfully debug simple errors in programs created by others. (source)
1B-AP-17 Describe choices made during program development using code comments, presentations, and demonstrations.
- People communicate about their code to help others understand and use their programs. Another purpose of communicating one's design choices is to show an understanding of one's work. These explanations could manifest themselves as in-line code comments for collaborators and assessors, or as part of a summative presentation, such as a code walk-through or coding journal. (source)
Practices and Concepts
Main practice(s):
Practice 5: Creating computational artifacts
- "The process of developing computational artifacts embraces both creative expression and the exploration of ideas to create prototypes and solve computational problems. Students create artifacts that are personally relevant or beneficial to their community and beyond. Computational artifacts can be created by combining and modifying existing artifacts or by developing new artifacts. Examples of computational artifacts include programs, simulations, visualizations, digital animations, robotic systems, and apps." (p.80)
- P5.2. Create a computational artifact for practical intent, personal expression, or to address a societal issue. (p.80)
- P5.3. Modify an existing artifact to improve or customize it. (p.80)
Reinforced practice(s):
Practice 1: Fostering an Inclusive Computing Culture
- "Building an inclusive and diverse computing culture requires strategies for incorporating perspectives from people of different genders, ethnicities, and abilities. Incorporating these perspectives involves understanding the personal, ethical, social, economic, and cultural contexts in which people operate. Considering the needs of diverse users during the design process is essential to producing inclusive computational products." (p.74)
- P1.2. Address the needs of diverse end users during the design process to produce artifacts with broad accessibility and usability. (p.74)
Practice 4: Developing and using abstractions
- "Abstractions are formed by identifying patterns and extracting common features from specific examples to create generalizations. Using generalized solutions and parts of solutions designed for broad reuse simplifies the development process by managing complexity." (p.78)
- P4.2. Evaluate existing technological functionalities and incorporate them into new designs. (p.78)
Practice 6: Testing and refining computational artifacts
- "Testing and refinement is the deliberate and iterative process of improving a computational artifact. This process includes debugging (identifying and fixing errors) and comparing actual outcomes to intended outcomes. Students also respond to the changing needs and expectations of end users and improve the performance, reliability, usability, and accessibility of artifacts." (p.81)
- P6.1. Systematically test computational artifacts by considering all scenarios and using test cases." (p.81)
- P6.2. Identify and fix errors using a systematic process. (p.81)
Practice 7: Communicating about computing
- "Communication involves personal expression and exchanging ideas with others. In computer science, students communicate with diverse audiences about the use and effects of computation and the appropriateness of computational choices. Students write clear comments, document their work, and communicate their ideas through multiple forms of media. Clear communication includes using precise language and carefully considering possible audiences." (p.82)
- P7.2. Describe, justify, and document computational processes and solutions using appropriate terminology consistent with the intended audience and purpose. (p.82)
Main concept(s):
Control
- "Control structures specify the order in which instructions are executed within an algorithm or program. In early grades, students learn about sequential execution and simple control structures. As they progress, students expand their understanding to combinations of structures that support complex execution." (p.91)
- Grade 5 - "Control structures, including loops, event handlers, and conditionals, are used to specify the flow of execution. Conditionals selectively execute or skip instructions under different conditions." (p.103)
Reinforced concept(s):
Algorithms
- "Algorithms are designed to be carried out by both humans and computers. In early grades, students learn about age-appropriate algorithms from the real world. As they progress, students learn about the development, combination, and decomposition of algorithms, as well as the evaluation of competing algorithms." (p.91)
- Grade 5 - "Different algorithms can achieve the same result. Some algorithms are more appropriate for a specific context than others." (p.103)
Vocabulary
Algorithm
- A step-by-step process to complete a task. (source)
- A formula or set of steps for solving a particular problem. To be an algorithm, a set of rules must be unambiguous and have a clear stopping point. (source)
Broadcast
- A message that is sent through the Scratch program, activating receiving scripts. (source)
Debugging
- The process of finding and correcting errors (bugs) in programs. (source)
- To find and remove errors (bugs) from a software program. Bugs occur in programs when a line of code or an instruction conflicts with other elements of the code. (source)
Event (trigger)
- An action or occurrence detected by a program. Events can be user actions, such as clicking a mouse button or pressing a key, or system occurrences, such as running out of memory. Most modern applications, particularly those that run in Macintosh and Windows environments, are said to be event-driven,because they are designed to respond to events. (source)
- The computational concept of one thing causing another thing to happen. (source)
- Any identifiable occurrence that has significance for system hardware or software. User-generated events include keystrokes and mouse clicks; system-generated events include program loading and errors. (source)
Scripts
- One or more Scratch blocks connected together to form a sequence. Scripts begin with an event block that responds to input (e.g., mouse click, broadcast). When triggered, additional blocks connected to the event block are executed one at a time. (source)
Sprite
- A media object that performs actions on the stage in a Scratch project. (source)
Video sensing
- A Scratch feature that makes use of video from a webcam to detect motion or display video input on the stage. (source)
More vocabulary words from CSTA
Connections
Integration
- Potential subjects: Art, history, language arts, media arts, social studies
- Example(s): This project could include historical, contemporary, or fictional fashion and accessories, which could integrate with lessons on history, social studies, or language arts. Click here for a studio with similar projects.
Vocations
- Thinking through user experience design is a common practice for software engineers (and even teachers/facilitators if we change some of the terminology). Click here to visit a website dedicated to exploring potential careers through coding.