Monday, July 13, 2009

Scratch : Programming the Lego Way

This site shall be my "java container" ... , right, this still & always can be read at the right column! But now, I guess, I have to extend this definition a little bit .. :-D ... These several days, I've been exploring two interesting "programming" frameworks, which are not necessarily Java based! The first framework is called Scratch and developed by the Lifelong Kindergarten research group at the MIT Media Lab. The second one is Alice. Both of them have a nice visual interface for "visual programming" - programming in the "Lego" way. The main difference between these two frameworks is that Alice introduces programming for/in a very nice 3D world, while Scratch for/in a flexible 2D environment.

Scratch
Scratch is a new programming language that makes it easy to create your own interactive stories, games, animations, music, and art – and share your creations with others on the web.

Scratch is built on top of the Squeak (an open-source implementation of the Smalltalk-80 language) programming language. It was inspired by previous work on Logo and Squeak Etoys, but it aims to be simpler and more intuitive.

The name Scratch comes from the scratching technique used by hip-hop disc jockeys, who spin vinyl records back and forth with their hands to mix music clips together in creative ways. You can do something similar with Scratch, mixing different types of media clips (graphics, photos, music, sounds) in creative ways.

At the core of Scratch is a graphical programming language that lets you control the actions and interactions among different media. Coding in Scratch is much easier than in traditional programming languages: to create a script, you simply snap together graphical blocks, much like LEGO bricks or puzzle pieces.

Scratch makes it easier to combine graphics, photos, music, and sound into interactive creations. With Scratch, you can create characters that dance, sing, and interact with one another. Or create images that whirl, spin, and animate in response to movements of the mouse. Or integrate images with sound effects and music clips to create an interactive birthday card for a friend, or an interactive report for school.


What do we learn as we create interactive stories, animations, games, music, and art with Scratch?
  • Mathematical & computational ideas in a meaningful and motivating context; we could learn core computational concepts such as iteration and conditionals, while also gaining an understanding of important mathematical concepts such as coordinates, variables, and random numbers; In Scratch, we can use variables immediately in very meaningful ways: to control the speed of an animation, or to keep track of the score in a game we are creating

  • Process of design; Typically, a student will start with an idea, create a working prototype, experiment with it, debug it when things go wrong, get feedback from others, then revise and redesign it. It’s a continuous spiral: get an idea, create a project, which leads to new ideas, which lead to new projects, and on and on; This project-design process combines many of the 21st century learning skills that will be critical to success in the future: thinking creatively, communicating clearly, analyzing systematically, collaborating effectively,designing iteratively, learning continuously

  • Creating projects in Scratch also helps students develop a deeper level of fluency with digital technology; to be fluent with digital technology, you must learn not only how to interact with the computer but also to create with it
Of course, most students will not grow up to become professional programmers, just as most will not become professional writers. But learning to program offers benefits for everyone: it enables students to express themselves more fully and creatively, helps them develop as logical thinkers, and helps them understand the workings of the new technologies that they encounter everywhere in their everyday lives.

Key features of Scratch include:
  • Building-block programming. To create programs in Scratch, you simply snap graphical blocks together into stacks. The blocks are designed to fit together only in ways that make syntactic sense, so there are no syntax errors. Different data types have different shapes, eliminating type mismatches. You can make changes to stacks even as programs are running, so it is easy to experiment with new ideas incrementally and iteratively.

  • Media manipulation. With Scratch, you can create programs that control and mix graphics, animations, music, and sound. Scratch extends the media-manipulation activities that are popular in today’s culture – for example, adding programmability to Photoshop-style image filtering.

  • Sharing and collaboration. The Scratch website provides inspiration and audience: you can try out other people’s projects, reuse and adapt their images and scripts, and post your own projects. The ultimate goal is to develop a shared community and culture around Scratch.
Scratch offers a low floor (easy to get started), high ceiling (ability to create complex projects), and wide walls (support for a wide diversity of projects). Scratch is developed with high priority on simplicity, sometimes even sacrificing functionality for understandability.

No comments:

Post a Comment