Collaboration is an important skill for 21st century learning.  It is also a very large component of the 6th grade computer science curriculum.  Collaboration can be experienced in a variety of situations,and thanks to the inspiration of Game Designer, Jane McGonigal,  the sixth graders had the opportunity to experience to work together through the "game" Massive Multiplayer Thumb Wrestling.  According to Ms. McGonigal, games create emotions that bring people together in large groups to tackle problems. "It is about standing up and grabbing as many hands as you can and wrestling together with a really hard challenge."
The 6th graders took the challenge in stride and had a great time attempting this unique version of "thumb wrestling".  The skills that they practiced while engaged in MMTW will be used over and over again through out the rotation.  Next time you find yourself with a couple of extra thumbs, I recommend giving this "game" a try.
The end of the 6th grade first rotation is quickly approaching.   I must say that the past 12 weeks have been the fastest on record.  Hard to imagine, but I will actually miss my students!

Over the course of the rotation, we have explored a lot of computer concepts together.  Their final "task/challenge" is to combine all of the pieces into one "Mangnum Opus".  The basic premise of the culminating program is to create a game that will help students practice their math facts (addition & multiplication).  The students had the freedom to decide what format they wanted to engage the user, thus letting their creativity have free range.

The variety of projects speak for themselves.  The students learned a wide assortment of computing concepts and computational practices over during the rotation.  They have successfully begun the process of identifying themselves as computer scientists. They are now ready to begin exploring more advanced concepts.  I hope they avail themselves of the opportunity and continue to study computer science.  They now have a strong foundation for their future programming experiences in high school.

Below is a few sample programs from the final project.  Group A & Group B studios contain a link to all of the projects.   I strong recommend that you take some time to not only try out the programs but to peak "under the hood"  
Today the 6th graders spent time reviewing the benefits of pair programming. While initially hesitant about working with a partner (many of the students wanted the freedom and flexibility to write their own computer program), the 6th graders finally experienced the rewards of working closely with a classmate.  

Students spent the first 10-15 minutes of class reflecting on their individual (and their partner's) Pair Programming practices.  Some of the students rated themselves quite high, while others recognized their failings and recorded it appropriately.  After taking the time to reflect and review the roles, the students were eager to correct their mistakes and tackled the task with renewed commitment. 

The Girls Creating Games Guide to Pair Programming from Youth and Technology defines Pair Programming as follows: "Pair Programming is the most widely tested, if not the only, collaborative learning structure where two users work together on a single computer in a way that gives both a critical role in completing their IT project. In pair programming, one partner serves as the “Driver” while operating the keyboard and the mouse to execute operations. The other partner acts as the “Navigator.” In a classic code-writing situation, there are two primary roles of the Navigator: one is to actively review the code-writing and catch errors as they happen in order to prevent glitches or bugs in the software, and the other is to collaborate with the Driver to generate solutions to programming tasks or problems. We added a third primary role to the job of Navigator – that of managing all the print-based materials, including both instructional aides and project materials."

Before we make anything – a house, a dress or a computer program – we should start with a design. Because there are two important parts to most programs – the interface (how it looks) and the code – we design these separately.
  • The easiest way to design the interface is by sketching it out on paper.
  • To design the code, write out a list of steps it will have to perform in English. 
This is known as an algorithm and is just like the steps in a food recipe. Solving problems like this is what programming is really about, rather than entering 
commands on the computer. 
All good programmers design algorithms before starting to code
Learning to think out ALL the parts of the program before any coding starts is a hard concept for 6th graders.  As a way to reinforce this important concept, I shared another Computation Fairy Tale with the students - The Importance of Design in Five Course Meals. "Good design practices can save a significant amount of time, help avoid wasting effort, and prevent mistakes."

Currently the two classes are working on two different game designs - Maze Game & Chase Game.  The first step in the design process was to determine the general objective and rules of the games.  From their the pairs had to determine the specific conditions of their individual games and then identify the major components:
  • The Start
  • Movement
  • Winning/Losing

Below is a sample of their initial attempt at designing algorithms for their games:

Computer science concepts as told through fairy tales - by Jeremy Kubica
In an effort to reinforce important computer science concepts, I shared a brief fairytale with the 6th graders today.  The short-story, "The Importance of (Variable) Names", focuses on the need to create clear, meaningful variable names in writing understandable and maintainable code. 

By the time Princess Ann had reached the northernmost outpost within the kingdom, she was losing hope. Her father, King Fredrick, had sent her on a quest to save the kingdom from impending darkness almost a month ago. So far, Ann had found nothing. Meanwhile reports of roaming dragons and hordes of goblins increased throughout the kingdom. Ann felt completely demoralized.

The outpost of Garroow had been hit particularly hard by the recent chaos. The goblin attacks had been increasing in recent weeks. The commander, Sir Aat, had sent word to Ann's father that the outpost was in desperate need of reinforcements. At a loss for better stops on her quest, Princess Ann headed north to Garroow.

The situation in Garroow was worse than she had expected. During her first night at the outpost, a small goblin attack almost overwhelmed it. The fifty person garrison barely held off just three, relatively lethargic, goblins. She heard the captain shouting orders at his solders: “Ut, guard the South wall. No, I meant Ot. Ut, stay where you are.” “Drex, swap places with Plex, we need an archer on the wall not a blacksmith.” “Et, secure that door.” .........

After listening to the story, the 6th graders quickly identified the important concepts and were able to make strong connections with their Scratch programs.  In addition to realizing the need to assign descriptive names to variables, it is also important to do the same for other pieces of code (messages in the broadcast command, names for sprites, costumes and backdrops).

6th Grade Scratch Projects - demonstrating loops and variables

The sixth graders spent the week working on their "What's My Number" program.  For many of the students it was their first time working with loops and conditional statements.  

Below is a list of Computational Concepts that students were exposed to while working on the Random Number Guessing "Game":
A common refrain from the students was - "Its not working".  What does that mean?  Computers only do what the programmer (which in this case was the students) tells it.  Was it a case of the computer not listening, or more accurately, the programmer not communicating clearly? Or, did they not understand the concepts I was trying to teach?  Since this was their first time working with loops and conditionals in Scratch, I would bet that for many of the students the answer would be a mixture of the two. 

One of the major skills necessary for writing good code, is the ability to break a problem down into smaller parts and to then translate it into commands that the computer can follow.  This important 21st Century Skill is known as Computational Thinking.

CSTA and ISTE define Computational Thinking as:
  • Formulating problems in a way that enables us to use a computer and other tools to help solve them.
  • Logically organizing and analyzing data
  • Representing data through abstractions such as models and simulations
  • Automating solutions through algorithmic thinking (a series of ordered steps)
  • Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources
  • Generalizing and transferring this problem solving process to a wide variety of problems

For the purposes of this assignment (program) students had to focus on developing a solution that not only solved the problem, but solved it in the most efficient and effective way possible.  To this end, we created a rubric to help them identify the varying levels of completion (for their finished program).  To help them internalize these levels, the students had to evaluate their own programs as well as the program of one of their classmates.

The 6th graders ended the week with a lesson on problem solving.  The aim of the lesson was to have students experience computing (and computers) as tools for solving problems.  In the younger grades, students are encouraged to use computers as a tool for creative expression.  This modality enables the students to freely express themselves, and in the process they learn a variety of computing and programming techniques.  

In the 6th grade, students will be provided specific problems (with detailed goals) to solve using computers. Besides designing programming solutions, students will also learn more about how computers work.  Computing is not as frustrating as many students believe it is, however, it does require clear concise language in order to craft the appropriate sequence of commands which will yield the desired result.

This past Friday (and continuing through this week), students will be working on writing the correct computer code to solve the problem--- "What's my number?".

Below is an outline of the sequence of steps that the program needs to contain:

Step 1: The computer will generate a random number between 1 and 100
Step 2: The player (person) will make a guess between 1 and 100.
Step 3: The computer will compare the user input to the computer generated number
            (a) If the numbers don't match, provide a hint and have the person guess again
            (b) If the numbers do match, the game ends (or you can play again, if the user wants to).

Part of the learning process is coming up with the logic  (Conditional Statements) (the comparison statements) to determine if the Player has guessed the correct number.  The second part of the learning, is to determine the logic (Control Statements) which will enable the user to keep entering guesses (if needed).

Below is the skeleton code for the project:

The students found the lesson very rewarding --- "I usually do it easy, "peasy" (or ask someone else).  But this was fun and I had to think about it!".  Thank you John!
Many of the 6th graders have used Scratch before, however, Scratch 2.0 is a whole new "ball game".  While it has ALL of the same functionality of Scratch 1.4,  the developers added a wide assortment of new features enabling programmers to benefit from a more robust programming language.  For the 6th graders this means learning new vocabulary as well as navigating a new user-interface.  Please encourage your child to check out the new features.  They will be happy that  they did!

Meet Scratch 2.0
Here are some of the exciting new features:

Project Editor
  • Click Create to make a new project.
  • Your project will automatically save as you work on it (if you're logged in).
  • When you create a project, you are the only one who can see it. After you share it, anyone can see and remix it.
  • The new paint editor includes vector graphics so that images can scale to different sizes without getting jagged.
  • Your Backpack lets you copy and move sprites, costumes, backdrops, and scripts from any project to another.
         If you're logged in, you can open your Backpack inside any project (it's at the bottom of the screen)
  • You can use the webcam on your computer to interact with projects by moving your hands or body.
  • You can now make your own programming blocks.
  • Use clone blocks in your scripts to make copies of sprites.
  • Store numbers in cloud variables to create surveys and other projects.
  • Find out more about the new Scratch blocks.
  • You can see and manage all your projects in My Stuff .

Community Features
  • On the home page, you can see what others have shared recently and scroll to see many more projects.
  • When viewing a project, click  to see how it works and experiment with the code.
  • Inside any project, click  to save your own version and make changes. After you share it, the project page 
         will highlight the original creators and links to their projects.
  • Discover interesting projects by clicking on the Related Projects bar at the bottom of any project page.
  • Click your username or icon to go to your Profile page, where you can feature one of your projects and 
         tell others what you're working on.
  • People can post comments on your Profile page and  your Scratch account to see updates.
  • Galleries are now called Studios, and can be curated by you and others you invite.
  • The Search features lets you find and preview projects more easily.

Planned for Summer 2013 (still in the works)
  • Download an off-line version of the Scratch project editor to use without an Internet connection
  • Connect to external devices with new Scratch extensions (including LEGO WeDo and the ScratchBoard)

For the students first project in Scratch they were given the challenge of creating a "Dance Party".  This project enabled them to explore Scratch 2.0 (which has many new features).   There were no specific requirements for this introductory exercise, so each child was free to take the program as far as they wanted.  Some students created a "Party" with multiple sprites and a variety of backdrops, while others focused their attention on a single sprite with a collection of dance moves.

Scratch is the ideal introductory programming language for the middle school students.  Without the constraints of mastering syntax, students are free to focus their attention on learning to think creatively, work collaboratively and reason systematically.

With future projects, students will learn more advanced computing concepts (such as conditionals and loops).  All of the students' projects will be shared and readily viewed through a Scratch studio.  

Students began exploring Scratch.  We spent some time in class discussing Scratch and trying to determine what makes it special. To this end, each student wrote up a definition for Scratch. We then pulled-out the salient ideas and created the wordle on the left.  

The students impression of Scratch was very close to what the developers had in mind.  According to the website - "you can program your own interactive stories, games, and animations - and share your creations with other in the online community."

Scratch helps young people learn to think creatively, reason systematically, and work collaboratively — essential skills for life in the 21st century.  Scratch is a project of the Lifelong Kindergarten Group at the MIT Media Lab. It is provided free of charge