Programming with Alice Computing Institute for K-12 Teachers Summer 2011 Workshop Session 0 Workshop Expectations This workshop is designed to introduce programming concepts through the use of the intuitive programming environment of Alice. Each of the seven Alice sessions will focus on one or more of these concepts. Throughout the workshop, there will be a chance for you to use your new skills to create teaching aids for your subject while introducing programming concepts to your students. Alice Overview Created by Carnegie Mellon in 1999 100% GUI based programming environment Object-oriented Multi-threaded Runs on Windows and Mac Free! Set up environment Let us create our first example program. This program will consist of adding an object to the world and making it move. Open Alice by doubleclicking the icon on the desktop Click the templates tab Select one of the preset environments Click open Alice Interface The Alice interface is divided into five major sections: The section on the upper left is called the object tree. This contains a list of all the objects that currently exist in the world. The lower left section is the object details area and shows information about the currently selected object. The upper center section is the world window. This provides an interactive view of how the world will look when ran. The top right corner is known as the events area. Most methods of interaction with the user occur here. The remaining section is the editor area. This is where the actual programming takes place. Objects in Alice Alice, like many other programming languages, is object oriented. Objects provide a basis for program structure and serve to organize and simplify the design. Programming with objects is often intuitive because of the nature of human interaction with the world. Objects consist of three basic elements: ◦ Properties – also known as variables, these are the characteristics of the object much like hair color and height are for us. These will be discussed in greater detail during session 4. ◦ Methods – allow objects to do things such as move, turn, resize, etc. Methods will be discussed in greater detail during session 5. ◦ Functions – allow objects to do calculations. In session 5, we will create a function that calculates the rotation of a vehicle wheel in relation to the distance it moves. Default Objects in Alice All Alice programs contain at least four objects. These are: ◦ World - think of this as the virtual universe. All other objects exist in and are “owned” by it. Unlike other objects, it is impossible to move the world object. ◦ Camera – this supplies the view used by the world window and is determined by the placement and orientation of the camera object. ◦ Light – as the name implies, this object provides a source of light to the scene and can be moved or otherwise manipulated to alter the brightness and/or shadows in the world. ◦ Ground – the xz-plane that serves as a reference point for the user to place other objects. Add Object to World To enter object management mode, click the green button in the lower right corner of the world window. Find a vehicle object with wheels (not the ambulance) and drag it to the ground in the window above. For advanced positioning instructions, please refer to the presentation notes. Object Manipulation Tools Allows you to select an object and move it on the horizontal plane Moves an object on the vertical plane Rotates an object around the y-axis of the world window Rotates an object around the x-axis of the world window A combination of the previous two tools. It is very hard to control and should probably be avoided Increases or decreases the size of an object Creates a clone of an object Renaming Object In the object tree, find the newly added object, right-click it, click “rename,” and enter a new name. The new name should be short, descriptive, and meaningful. First Program: Moving an Object Let’s learn how to use the block. Orient the vehicle so it looks as though it will be driving to the right. You probably will need to move the camera and/or adjust the size of the vehicle. Select your object and move it as far as you can to the left of the screen. It is time to close object management mode in order to open the method editor. To do this, simply click the button. To make this object move, select it by left clicking the vehicle, click the methods tab in the object details area and drag a move block to the editor area. First Program cont. A drop-down menu will appear and you can choose the direction the object will move; mouse-over “forward”. You should see another drop-down menu where you can select how far it will move, select ½ meter for now. Now we are ready to test our first program. In the top lefthand corner you will find the button. Anytime you want to test your project, simply click this button. If your object didn’t move a satisfying distance or it didn’t move in the correct direction you can edit this by left clicking the down arrow to the right of the attribute you want to change. A menu will drop down and you can choose a new value. Multithreading Now we have our vehicle moving to the right, it is time to make the wheels turn or rotate while the vehicle is moving. To make two or more things happen at once we use a programming convention known as multithreading. In order to affect only the wheels of your vehicle, click the plus button to the left of it in the object tree. This will make the sub-parts of the object visible which will allow you to manipulate them individually. For now, just select one of the wheels (preferably one that can be seen in your world window) To make the wheel turn, drag a block and place it in the editor area. Choose a direction for it to turn and test your program. If the wheel doesn’t turn properly, change the direction or try the . Multithreading cont. Even though we have the vehicle moving and the wheel rotating, it still isn’t perfect because the vehicle moves, then the wheel rotates. The reason? Alice, like most other programming languages, processes statements starting from the top and moving down one by one. In order to have the vehicle move while the wheel rotates, we must use a new block. Place a container into the method editor and place the move and turn blocks inside it. This brings up the subject of multithreading. Many programming languages take advantage of this functionality. It allows the programmer to make multiple things happen at the same time. For example, the vehicle will move at the same time the wheel is turning. Now let’s test this and make sure everything works properly. Project 0 Now that we know how to use a do together container to implement multithreading, try to get the other wheels of your vehicle spinning. They should all spin at the same time. This may take some playing around, but it is possible. You should also change the wheels rate of spin to look as realistic as possible in relation to the ground. In session 5 we will explain how to do this more efficiently.