The+Imagination+Tool

__The Imagination Tool__ (offered both 1st and 2nd semesters) This semester-long computing course inspires students to exercise both the creative and logical hemispheres of the brain. Through fun and challenging projects, students will use their imaginations, hone their planning and problem solving skills, learn how to use media tools to tell a story, and discover fundamental concepts of computer science. Included in the course are three computer languages—HTML, Logo, and Scratch—which use creative expression to provide a basis in programming. The second half of the 7th grade computing course is designed to introduce students to the creation of digital art, graphics and animation. Projects introduce students to digital drawing and painting programs, the creation of 2D digital images and, in the culminating project, the animation of created content using Flash. The semester concludes with a robotics project that allows students to explore the ways computers can influence their real-world surroundings.
 * 7th Grade**

Logo is a graphical language in which one controls an onscreen “turtle” that can draw lines using a pen. The goal of a Logo project is to create artwork without using the mouse, but by typing commands to the turtle. I use MicroWorlds EX to teach Logo. Here are the understandings I want students to take away from this unit:
 * Logo**


 * A computer language is like a spoken language: it has a vocabulary and a grammar.
 * Defining procedures in a programming language is like defining words in a spoken language: you are expanding your vocabulary by defining new words in terms of existing ones.
 * When solving a problem, it is important to divide it into manageable pieces to solve rather than trying to work strictly sequentially.
 * Creating procedures allows programmers to create a level of abstraction--when they write code using procedures, a lot of code is hidden.
 * Abstraction is a cornerstone of computer science.
 * Procedures allow the same code to be reused many times without having to type it again and again.
 * The more general a procedure is, the more useful it is.
 * Using parameters is a way to create very general and powerful procedures.

The MIT Media Lab started the [|**Scratch**] project in 2003. It grew out of Smalltalk, a sophisticated object-oriented programming environment, and EToys, which used Smalltalk to create an environment for children to learn how to program. Scratch is much less flexible than EToys, but it has two really big advantages. First, the learning curve is much less steep. Second, there is a strong web community built around Scratch, where kids and adults post projects and share code and ideas. Scratch, like Logo, is a graphical environment. It uses some terms from the theater to describe its basic components. Sprites (actors) are placed on the Stage, and they can follow scripts to do lots of different things, like move around or change costume. Games and animations are very easy to create using Scratch. A key feature of the environment is that building scripts is accomplished not by typing, but by dragging individual script steps with the mouse and linking them together. One of the interesting things about Scratch is that it allows lots of things to happen at one time, which is pretty common on a real theater stage. Here are the understandings I want students to take way from this unit:
 * Scratch**
 * Experimentation is an important part of problem solving.
 * Open source code allows a community of programmers to learn from each other.
 * One way to program a computer is to set up a system of independent objects that are all working at the same time.
 * Variables are a way for programs to keep track of complex information.
 * A concurrent, event-driven programming model is fundamentally different than an input-output programming model.
 * Race conditions are a side effect of concurrent programming.

The web is built on HTML. It is the underlying language of all web pages, and yet it is simple enough that I can easily teach the basics in 7th grade. It is a different kind of programming language than Scratch and Logo; they are imperative languages, whereas HTML is declarative. A declarative language describes an end product in terms of basic components (what something is like), rather than describing a process in terms of basic steps (how to do something). Understandings for the HTML unit:
 * HTML/CSS**
 * Computer languages are very sensitive to small errors, and computers cannot “find their way around” mistakes like humans can.
 * The Web is built on a simple language that uses simple text and markup tags to describe web pages.
 * There are different kinds of errors a programmer can make: syntax, semantic, and logical.
 * Nesting is a common way of structuring information.
 * Separation of the code from the result or interpretation of the code

Essential Questions: **
 * Digital Graphics/Animation
 * How is digital art similar to and different from traditional forms of art?
 * What is the fundamental difference between drawing and painting applications?
 * How does choice (line thickness, fill color, etc.) impact final product?
 * How can 2D drawn or painted objects be animated?

Essential Questions: **
 * Robotics
 * How does a robot work?
 * How do robots perform assigned tasks?
 * How can sensors be used to aid a robot in completing a task?
 * How does design affect a robot’s ability to perform a task?
 * How can a robot be programmed multiple ways to complete the same task?