Friday, July 27, 2018

Scratch #GettingUnstuck #CreativeComputing Daily Challenges

I had a very rewarding time participating in the daily #CreativeComputing #GettingUnstuck challenges this month led by Harvard Graduate School of Education's Creative Computing Lab. For the last 21 days each morning I worked on and usually finished a project in response to the daily prompts posed by Scratchers karenb and paulinah. It was a great opportunity to get more involved in one of the great things about Scratch, namely a supportive community of people sharing their creative ideas and helping you figure out how to better share your own. Here is the studio I made for all the projects.
My most salient takeaways are a result of the opportunity to go deeper into learning about specific blocks, processes, and capabilities of the Scratch IDE (I think it's safe to call it that).
  • "Broadcast and wait": I've had students accidentally use this block instead of "broadcast" and never understood what it was waiting for. Now I know it waits for all responding threads to finish before going on to the next block, and I used it here, where all the sprites needed to finish animating before the first sprite could continue.
  • Variables can be represented as sliders. To enable this you right click on the variable data on the screen once the variable is created. By default the slider is given a range of 0-100. But you can change the min and max by right clicking again in the variable's data. One confusing thing I think is a bug is you can't get this latter option if the variable is displayed in the lower left corner of the screen, so you have to drag it above 0 or to the right to enable this option, then you can move it where you want. Another thing is that the min and max options don't seem to be an option in the Scratch 3.0 preview. I hope they add it. I submitted a request.
  • I learned more about controlling clones, especially how to make them aware of their own variables. To do this you create the variable in the sprite as "only for this sprite", then each clone has its own value for that variable. 
  • There's no way to easily fill a background programmatically. So I made a project that uses a few ways to do it. I wanted to do it without depending on a specific background graphic, but you could just have a solid color background and change the color effect on it.
  • I went deeper into using lists and string variables (here and here) , looping through each in different ways. Since there is no for loop Scratch requires that you set up and use an "index" or "counter" variable to keep track of iterations through a list or over the elements of a string. This could actually be a nice way to introduce loops in Python or JavaScript because it makes the process more explicit, even allows you to see the iterations.
  • I practiced modeling gravity a bit, finding a simple way to represent acceleration that I can get my head around.
  • I learned more about using trigonometric functions to position and move sprites on a circle, and even on an oval. Here a day/night cycle and drawing an oval.
A couple projects were notable because they turned out really neat and explore fascinating or fun things that just really captured my imagination:
  • I made a project to play with a color illusion phenomenon called the Menker effect. I discovered this on Twitter posted by a Professor of Engineering, David Novick, and am finding it a really interesting topic to investigate and play with. I even ended up making a version of the exploration toy with P5 on Glitch.
  • I made a room escape game that came out really fun and allowed me to think through algorithms for setting up such a process; keeping track of how many elements are found, keeping track of whether an item has been found or not, creating dummy items to animate.
So much learning happened, and it was really nice to get feedback from people and see so many interesting ideas expressed in the community of participants and discussions about solutions and learning.

No comments :