The Scratch Programming Environment
This week, we’ve discussed the fundamental principles of interaction as presented by Norman and applied them to a variety of designs. When applying them to programming languages, however, we are left wanting. It does not appear that a programming language is very usable according to these principles! However, just as we should not just consider an object in isolation from its surrounding environment, we should not consider a language on its own. Instead, we should look at the entire development environment surrounding that language which can help alleviate the usability issues of traditional programming languages.
As an exemplar of usability, we’ll apply the principles of interaction to The Scratch Programming Language, a visual language designed for novices to learn programming. Scratch has inspired a host of research into visual programming and block-based programming, for example, the IEEE Symposium on Visual Languages and Human-Centric Computing and the Blocks and Beyond Workshop.
Principles Applied To Scratch
We’ll approach our analysis of Scratch in two ways: as a regular user of the system and a student of user-experience (UX) and programming concerns. To the first point, Scratch is freely available as a web-based programming environment:
Jump right in! Try out the tutorials and challenge yourself to build something non-trivial with Scratch. As you go through this process, take notes on how Scratch succeeds or falls short regarding the principles of interaction we have explored so far.
To the second point, read this research paper about the design of Scratch’s language and environment.
- Maloney, Resnick, Rusk, Silverman, and Eastmond. The Scratch Programming Language and Environment. ACM Trans. Comput. Educ. 10, 4, Article 16 (November 2010), 15 pages. DOI:https://doi.org/10.1145/1868358.1868363. Available at http://web.media.mit.edu/~jmaloney/papers/ScratchLangAndEnvironment.pdf.
While reading, all take notes on how the authors portray the system and how their description aligns (or not) with the principles of interaction. You may find it useful to skim chapters 4 and 5 of TDET which discusses constraints, feedback, and errors in more detail. We’ll cover these chapters in depth later, but you might it useful to be able to preview some of these details for your analysis.
For this deliverable, produce an analysis of Scratch and how well it adheres to the principles of interaction. Ultimately, your work should address the question:
How well does the Scratch Programming Environment obey the principles of interactions as presented by Norman.
- Present relevant affordances and signifiers of Scratch that do not appear in traditional languages and their programming environments.
- Present the most interesting mappings and constraints of the system (at least two) that you found most useful or believe to be of most importance to the user.
- Discuss Scratch’s feedback modes contrasted with the feedback modes of traditional languages.
- Discuss any shortfalls of the principles that you encounter in Scratch.
- Make an overall assessment of how well Scratch addresses the principles of interaction.
To complete this analysis, you will need to explore Scratch in some amount of detail. Using your initial exploration as a starting point, imagine how a novice might use Scratch in erroneous, go through those motions, and see what Scratch does or provides to put you back on track, if at all. Build sample programs and look at other people’s code to get a real, concrete sense of how Scratch works.
Your final analysis should take the form of a report with a standard layout (e.g., 12 point font, 1 inch margins) and be at least 2 pages in length.