I'm not going to lie - I found this week's assignment really, really difficult. More on that later.
Nearly all of the coding I've done has been in front-end web development. I like playing with HTML structure and seeing what I can do with CSS. Lately, I've been creating a blog template which added some significant PHP and jQuery. I enjoy working in text editors, the command line, and the development tools in Chrome. I like text.
Scratch is the complete opposite. Everything you do is represented with graphics. Loops are large brackets which take blocks of code, operators modify events as different shapes...I didn't find it very intuitive, to be completely honest. I spent most of my time trying to remember which color corresponded with which shape so I could get into the correct menu. There was a lot of clicking, a lot of eye rubbing, and more than one trip away from the computer to clear my head.
The entire process of programming in Scratch is rooted in abstraction and decomposition. I know what actions I want the sprite to make, but in order to get that to happen, I need to think through each and every step leading up to the result. Once I had an idea of what steps needed to be accomplished, it was time to put them into sequence and think about how to chunk the project up.
I started with a small drawing program. It isn't very advanced...but it took me a while to get through because I had to think through each block and what it was doing step by step.
After adding each command, I would test the program...then debug. Rinse. Wash. Repeat.
It still amazes me how much the final product changes from the initial idea. At first, I wanted the sprite to jump around the page, drawing random lines to see what could be generated by chance alone. That isn't much fun for the user, so I moved it to a follow-the-mouse game. A concept I remember from my art classes is continuous-line drawing, where you draw without lifting the tip of the pencil. I always enjoyed that style, so I decided to put it into a little game you can play.
Now that I have some chops, I went back to the game-of-chance idea. This game is based on luck alone, and it came from the "do something surprising" prompt in the Creative Computing handbook.
This project threw a new loop at me (get it? loop?) and I really struggled with writing separate scripts for each individual sprite in the editor. I expected one main editing interface, and was really confused about where my scripts would go as I added sprites and backdrops. Again, I think this goes back to my experience with written code and managing everything in the flow of one document. (If you're curious, this is called "object-oriented programming," something I'm familiar with, but not nearly competent in.) So, this exercise turned into a major learning experience for me.
I found myself - again - digging through, step by step, experimenting and testing, until I found patterns that I could build off of.
It's important to remember that Computational Thinking is all about the problem-solving process.
I was sketching diagrams, talking out loud, and looking at other examples as I figured out where I was failing. The great thing about computers is that we can rapidly implement ideas and iterate toward a working solution...they help us quickly isolate problems and work toward solutions. So, the computer is extending not only our creative capabilities, it's helping us refine those ideas in an efficient way.
We can emulate that process in any activity, especially in the classroom.
It's important to remember the struggle
we feel I felt during this exercise is how someone feels daily in my classroom. Patience, empathy, and understanding the components of working through problems are essential for me as a leader and equally essential for students to learn.