Day 4: Scratch intro
Logistics
- Roll
- Wonderings? Comments?
Hopefully, everyone joined my class and in the process joined Scratch. Sorry for the confusion. Any remaining issues? [ Address responses ]
We'll start today with information about Scratch that should set the stage for a more successful learning experience.
General Scratch Background/Information
- Scripts
Scripts are collections of blocks that can get executed as a group. All sprites and the stage can have one or more scripts. Scripts start execution when some event occurs. (Look under the Events palette to see the possibilities.) A script can be tested by clicking on it but that is not the same as running the entire program (all the scripts of all the sprites).
Typically programs start by having the user press the green flag.
- Each action/block runs until completion
Within a given script, the first block begins executing when the controlling event occurs. (That is mostly true. The play sound __
, say __
, and think __
blocks start and the next block will start immediately—these are non-blocking actions.) Thereafter each block starts when the previous one is finished. (That is mostly true. The play sound __
, say __
, and think __
blocks start and then the following block will start immediately—these are non-blocking actions. You may find others.)
For example if wait 10 secs
is used the block after it will not start until the (approximately) 10 seconds has elapsed. If glide 5 secs to x:240 y:0
is used the block after it cannot start until (approximately) 5 seconds has elapsed.
- Scripts run in "parallel"
Scripts of different sprites or different scripts for the same sprite will all run in parallel—at the same time. An individual sprite can have two scripts, each to execute when green flag clicked
. Running in parallel means they will both start when the green flag is clicked and run simultaneously. (Actually, true parallelism does not occur. Each script runs for a minute amount of time, then another, then another, etc. until the one that started gets another turn—this is called time-sharing. That's why the times noted above were "approximate".)
You will want to be aware of parallel execution when you plan and debug your programs.
- My Stuff (& the "cloud")
The Scratch system has a record for each user and stores all the programs for each user. The programs are stored/saved on servers (computers) at MIT. You have control of those programs, i.e., can modify program code or the names; share programs (or unshare them); or delete programs (assuming the Scratch folks don't find them offensive in which case they will delete them). However, you have no control over back-ups of the programs and you cannot access them if MIT's server is down or you have no internet access.
So, you may wish to download copies of programs to your computer to work on offline or to have available permanently.
One advantage of the cloud is that the server being used is supposed maintain a current copy, i.e., be constantly saving the latest version of the program. However, the server getting very busy or your internet connection going down or ... can interfere with the saving process. You may wish to occasionally go to the File menu in Scratch and select Save now (or click "Save now" in the upper right corner of the screen).
Also, be aware that if you change the name of the program, the copy under the old name is no longer available. If you wish to have copies of both the old and the new, you will want to use File | Save as a copy, then acces the "copy", enter a new name, and use File | Save now. And, be aware that when you load one of your shared program, you are making changes to the shared program—if you want to make changes without affecting the original, you'll need to save a copy.
To gain access to My Stuff, click on your username (top right of the window) then click on My Stuff.
- The ending state is the starting state
Generally when a program runs, things change. Those changes remain if you run the program again. So, in order to be able to run the program again (and have it work correctly) you need to reset it. Unfortunately, unlike the code.org course, there is no reset button in Scratch. You will need to either set things back to the starting state when the program is done or set everything to the starting state when the program is run. (See the green flag test discussion below.)
- Trouble with right-click on a Mac?—use Shift-Click
Storytelling Background
The specifications for the first Scratch assignment are: 1) multiple sprites, 2) animation, 3) sprite interaction, 4) sound, and 5) passing the green flag test. Some further information about those specs is provided below.
- Multiple sprites
Scratch programs/projects always start with the cat sprite. You can add new sprites by picking some (one at a time) from the library or drawing your own, or uploading (to Scratch) some image that you have or downloaded from the internet. [ Show the icons for doing each. ]
- Animation
There are a variety of ways to produce animation. Most of them are listed and briefly discussed below.
- moving
- the
move __ steps
block
This approach requires that the sprite be pointing in the direction of the desired movement. It is most useful when moving left, right, up, or down or a readily determine direction.
- altering X- and Y-coordinates
This approach requires either changing the X- and Y-coordinates or setting the X- and Y-coordinates. Doing either of those by itself will not show animation. You will need to repeatedly set or change the coordinates in small increments to show animation.
- the
glide __ secs to x:__ y:__
block
Using this block incorporates repetition implicitly. The speed of motion is determine the by combination of time and distance. A possible problem with this approach is that the same script cannot be used to have the sprite take any action during the motion. It must occur before or after the glide...
block. You can take advantage of parallelism by writing another script that would occur simultaneously and cause other actions.
Moving requires repetition. Thus, all the above, except the glide...
block must include some sort of loop. Often the loop is a repeat __
and you will likely need to either repeat small changes many times or slightly larger changes fewer times. You may need to add a wait __ secs
block in the loop to be able to see/perceive the changes (they can happen almost instantaneously).
- (repeatedly) pointing in different directions
If a sprite looks left then looks right some animation occurs. Doing so repeatedly allows the animation to occur over time. Use the point in direction __
or the point towards ____
block to accomplish this. With the former you will need to repeatedly change the direction. With the latter, the thing being pointed towards will need to be moving. In either case the instruction must be repeated (be in a loop).
- (repeatedly) changing costumes
The most obvious example of this is to appear to be walking. A sprite would need two costumes, one with feet in a particular position and another with feet in a different position. Repeatedly swapping between the two costumes would produce animation.
You can use either the next costume
or the switch costume to ____
block. With next costume
, when you get to the last costume, the next one is the first one.
- (repeatedly) changing size
You can use the change size by __
or set size to __
blocks to accomplish this (the former is more straightforward). Of course, the block would need to be in a loop to cause animation. Using a negative number in change size by __
will decrease size and a positive number would increase size.
(Assuming you start at normal/100% size) Using a change size by -10
block repeatedly, results in sizes of 90%, 80%, 70%, etc. rather than actually setting the size to be 10 percent less. There appear to be maximum and minimum sizes (perhaps dependent on the sprites). For the cat the max and min are 535 and 5.
- other stuff
You could repeatedly change color effect by__
of a sprite to accomplish animation (perhaps back and forth). Also, drawing or leaving a trail might be considered animation—use some sort of motion with the pen down
block (from the pen palette). Periodically changing colors of the track/trail would show animation also.
- combining various of the above
Much animation will be some combination of the above actions.
For example, if you have a sprite repeatedly point towards mouse-pointer
and move 10
you have a sprite that follows the cursor. Alternatively, you could have a fish point toward shark
and then turn 180
and move 10
producing a fish that swims away from the shark.
- Sprite interaction
The simplest form of sprite interaction is to have them take turns saying or thinking or doing something. You could, however, have other actions that occur in concert either together or in opposition to each other, e.g., following or moving away from (as in chase or dancing).
- Sound
Sounds can be played, played until end, or played for some duration. A few sounds are built in. You can also get sounds from the library or record them yourself or upload them from your computer (perhaps after downloading them from the internet).
- Green flag test
Passing the green flag test means that your program will always run correctly when the green flag is pressed. I recommend you accomplish this through the following process.
- Have the stage act as director
The director tells everyone to take their places. When s/he see that everthing is ready, s/he hollers "action". Effectively you can do the same thing in a program. Assuming the sprites all do what is needed the program will always start correctly.
- Have each sprite perform initialization
Each sprite will need to do its own initialization, i.e., have a script that sets all aspects of the appropriate state of the sprite when the program starts. The example to the right uses modularization to create a new instruction, called initialize (that works for this sprite only, I think). The new instruction must be defined. In this case the definition includes position, direction the sprite faces, and the sprite's size. Various other actions could be added if needed. The initialization happens when the "Places!" signal is received. If a sprite would normally run a script when the green flag was clicked, it will need a script that occurs when it receives the "Action!" signal. Who knows what that might be (I did not worry about defining it).
Any questions, comments, wonderings?
I created and shared (in the class studio) my knock knock program. Hopefully, you got a chance to look at it. In any case we will review it quickly [ run it, and respond to questions ].
Pair Programming Reminder
As noted elsewhere, I think, pair programming is a particular way of working together in programming. There are two roles, driver and navigator. The driver sits in front of the computer and types code, runs tests, etc. The navigator watches carefully asking questions, making suggestions, noting possible problems etc. After a bit they swap roles. I suggest swapping occur after about 30 minutes or about half-way through the remaining class time. Questions? Wonderings? Comments?
Each pair will want to agree to ground rules about: whether there are two copies of the work and how that happens, what individual work, if any, is acceptable and if so, how does the absent partner get brought up to date, when you can meet outside of class, howe you will contact each other, etc.
Next Time:
- work on your storytelling program
- To prepare for class:
- finish planning your story-telling
- record ideas for or start the PAC part of the assignment
Day 5: Work on Storytelling Project
Logistics
- Roll
- Gradebook posting is available. Questions? Comments?
- Wonderings? Comments?
Scratch Programming Activity
The main activities for today are:
- Address questions about Scratch Questions?
- Address questions about the simple-story assignment Questions?
- [ student pairs work on the storytelling program/project ]
Note: Students who have completed the project and their PAC commenting should briefly show me their program and then consider leaving. It seems pointless to hang around here unless you are doing class related work. If you are done, you might consider what would improve your program and then work to make it so.
Next Time:
- discuss the storytelling programming experience
- start on the initials assignment
- To prepare for class:
- finish your story-telling program and the PAC commenting
- examine my initials program if you have time
Questions? Comments? Wonderings? — Have fun! See you Thursday.
Day 6: Introduce Initials Project
Logistics
- Roll
- Wonderings? Comments?
Something I forgot
I took some notes when I read your PAC comments regarding the code.org course but forgot to discuss them last time. They are:
- puzzle nature of the code.org lessons
We talked about this some in class and my discomfort with both the code.org activity as programming and the code.org activity as not programming. I suggest you be a little careful using these or similar activities and calling them programming.
- blocks versus the JavaScript code
Several of you mentioned looking at the code. Sometimes those comments included thinking that using the blocks was different than producing the JavaScript code and not really programming. Graphical or block-oriented languages are certainly different than text-based programming languages and using them is different but they are both programming. Having the blocks in front of you means you don't have to remember in your head all the possible instructions and you do not have to worry (very much) about misspelling things or leaving pieces of instructions out when you type them (or putting extra characters in). The thinking and planning parts (the harder parts of programming) for both are the same.
Please do not think this is a toy language or that you are writing toy programs. You are/will not be doing toy programming.
- web development vs programming
On the other hand, web development (producing HTML and CSS code) is not programming (in my view). Programming creates a set of instructions for computers to follow. Web-page development provides information for the computer to process and indicates how the computer should present the information. It does involve "coding". However, no instructions for the computer are produced (unless you include some JavaScript code). Thus, no programming is done.
That does not mean that producing web pages is simple or somehow not worthy of doing. Producing good web pages can be exceptionally complex and hard. It's just not programming.
- using code.org with your students
A number of you mentioned that you thought it would be useful/appropriate/important to use code.org stuff with your students. I agree! Please, be aware, however, that code.org has a number of courses like the one you did. Some of them or some parts of them may be more useful that the course you did. code.org also has and is developing more courses all the time. So, take a fairly careful look around their site before choosing something. And, be aware that other folks have and are developing courses for K-8 aged kids.
Comments? Wonderings?
The Storytelling Experience
I like to encourage/allow students to share what they learned from each assignment. So, What did you learn while doing the storytelling program? Anything you wish to share. [ Accept & discuss student responses ]
Next: Initials
The next "simple" task will be to draw initials—UNI's and hopefully your own (for at least one partner). The learning activity description provides more information about the task. I will present some information today that should help you prepare and perhaps get started.
Initials Discussion
The initials assignment uses what is called "turtle graphics" to draw something (initials in this case). Turtle graphics originated with the Logo programming language in the 1960's. Essentially you give the turtle, sprite, robot moving instructions mixed with putting the pen down and picking it up to leave behind a trail of where you went. In Logo, the computer was a hemispherical robot with a pen mechanism in its middle. It was called a turtle because of its looks. As an aid to help their thinking children were told to pretend they were the turtle when trying to figure out how to get it to do what was needed. You might keep that in mind as you try to have the computer draw initials.
As with storytelling, planning before coding is a very good idea with the initials project but the planning may seem different because the problem context is different. What do you think we might want to consider before we start programming? [ Accept and discuss student responses ] [ Ensure that those below are included. ]
- What initials to draw?
The assignment specifies "UNI" and something else. What else do you plan?
- What will they look like?
Block letters or curved? (Curved, I hope.)How fat or thin? Color used?
- What do I know about typography?
Is there some relationship between height and width? What? Are they all the same? How much space (if any) should I leave between the letters?
- Where on the screen? How big?
I tend to consider these questions together. If there are multiple letters then where you place the first one affects where you place the second one. The size/height of the letters affects the width and those measurements will affect where you want to put the letters.
For this assignment, you need not be exacting in the size and placement considerations but you certainly should pay some attention to it.
Think about whether you want the letters to line up either vertically or horizontally. Perhaps consider having the top-left of the second one start at the bottom-right of the first one. Maybe put them in circle (on the edges of an imaginary equilateral triangle). Design your program!
Build your own blocks
I will briefly demonstrate the process of making your own blocks using the idea of drawing an "A with a height of 100 in the color blue using a pen width of 10. I want to be able to specify where the letter gets positioned. Some aspects of the plan are:
- Have the point of the A be on the Y axis (x-coordinate is 0)
- Have the width of the A be 60% of the height
- Have the cross bar be in the middle (but check to make sure it looks okay)
- Things that have nothing to do with drawing the A should NOT be included in the block, e.g., setting the color or pen size.
- Use a parameter
The process for creating my "draw-A" block is provided below. (I will be using the
- Create a block
Click on Make a block in the More Blocks palette—a pop-up appear should appear.
- Name block
The cursor should already be in the appropriate position. Just enter the name you wish for the block.
- Add parameters (inputs) if needed
Click on the solid triangle before the word Options. You can add numeric, string, and Boolean input as desired (as many as you want/need). You can also add a label to the blocks name (not sure why). Do so by clicking on the icon to the right of one of the options. When you do …
- name the parameter/input
Clicking an icon produces a placeholder for a value that you need to name. The default name is something like number1 or string1. You should type a descriptive name for all your block parameters/inputs.
- add more parameters if needed
- speed up the process
if you want to speed up the process you can click the "Run without screen refresh option which will cause the sprite to carry out all the work, then show it rather than showing the work during the process.
- Click OK or Cancel
If you click OK a header block (curved top with a connector at the bottom for other blocks) should appear in the script area. It will have the name you provided and show the inputs you requested. Additionally, a new instruction block is placed in the More Blocks palette. You use it like you would most other instruction blocks (just place it in a script) but remember to provide values for the inputs when you do.
- Test the block
To test your definition, drag its instruction block from the More Blocks palette, enter appropriate values for the inputs, and click on the block. If you need to change the actions it uses, just edit the script for it like you would any other script.
You can edit the header block to add or remove inputs or to change their names. Right-click on the header block and select edit. A pop-up should appear showing the name and inputs for the instruction. To change one of them, select it and either click on the little x that appears (to delete it) or type a different name. To add more inputs, click the Options arrow and select the appropriate icon.
Any questions, comments, wonderings?
Approaches to Drawing Letters
There are two main approaches drawing letters—relative and absolute. In relative motion the sprite moves from where it is. Of course it must first point in (face) the appropriate direction. In absolute motions the sprite goes to a particular location. The code (script blocks) for each is somewhat different and the values needed to accomplish the task are somewhat different. A prospective math teacher might choose an approach in order to address particular mathematical ideas or calculations. With respect to drawing letters, each likely uses ratio and proportion as height and width of letters are related.
Location
Also with both approaches, we can think of having the letters drawn at some particular location. It is probably useful to think about location in terms of a box/rectangle that encloses the letter. The box will be of a given height and width—with width dependent on height and on the particular letter (an I is much narrower than a W and a P is somewhere between them).
Knowing the height and width and location of the box may not explicitly identify a starting location for drawing the letter. It seems likely that some letters can use the upper left corner as both the location and the starting position for drawing the letter, i.e., B, D, E, F, H, K, L, M, N, P, R, T, U, V, W, X, Y, Z. Others might want to use the top center of the box as the starting location, i.e., A, I, J, O, Q. And some will be very individualized, i.e., C, G, S. This can allow for (require) substantial thinking and planning before coding a solution.
Questions, comments, wonderings?
Relative motion
Relative motion requires the sprite to get to a starting location, face in a particular direction, put the pen down, move a particular amount, and (perhaps) pick the pen up. Often the next step can be accomplished by turning some amount and moving again. Sometimes drawing part of a letter would be followed by moving to a different position to continue the letter rather than turning and moving again. The data requirements for this approach include (at least):
- Location values (X- and Y- coordinate values)
This can seem relatively straightforward—just determine the location of the letter's box or its starting location. However, if multiple letters are being drawn then not only do you need to know this value for one letter, but you will need to be able to determine the location of the next letter which will be affected by the location and width of the current letter.
- Direction to face
Often this can be very straightforward—right, left, down, or up. However, for some letters (A, K, M, N, Q, R, V, W, X, Y, Z) direction for some parts of the letters can be difficult. It would certainly be reasonable for a high school geometry or trigonometry class to determine these. However, we might not want elementary students to do so.
- Distance to move
Again, some are easy some are not. If the direction is up, down, left, or right the distance is relatively straightforward—when the height and width are known. However, any movement in some other direction is again a calculation for the HS geometry or trigonometry class. Or, the formula for the calculation could be supplied to K-9 students by the teacher.
Questions, comments, wonderings?
Absolute motion
For absolute motion one can plan and plot the lines for letters and incorporate height and width values while doing so. The knowledge needed is the starting and ending locations for each line. It (mostly) doesn't matter what direction the sprite is moving or how far apart the two points are. All the sprite has to do is get to the starting location, put the pen down, move (or glide) to the ending location, and pick the pen up.
For most of us this seems like the simplest solution. However, the location of the second point in line will usually be a calculation that involves either the height value or the width value (which may already be in terms of the height value. So, maybe it is not the simplest approach or easiest to understand.
And, for some people including (it seems) children it is more natural to think in terms of moving and turning instead of using the coordinate system. In any case, there are a number of considerations for deciding which approach to take. I suggest you choose the one you understand best (or the one you think your students will understand more easily).
Questions, comments, wonderings?
Circular elements
For some letters, parts of circles are needed, i.e., B, C, D, G, J, O, P, Q, R, S, U. In these cases a mechanism for drawing arcs or perhaps half-circles (perhaps connected by lines) is appropriate. My examples include the definition for a half-circle instruction/block whereby reasonable curves can be drawn. The half-circle may not be precisely what is called for but we can usually get by with it.
The example given here is a 20-sided regular polygon (not a circle) but it looks like circle unless the diameter gets very large. The circular parts of the letter may need some additional straight lines with them to work properly. For example, the diameter of the circular part of a P should be about half the height but that alone leaves the rounded looking too narrow left-to-right.
Questions, comments, wonderings?
Other considerations
If the code for drawing a letter includes a glide…
block or drawing part of a circle, that part typically takes longer than just moving from one place to another with either the move…
or the go to…
block. This makes part of the drawing occur instantaneously and part of it be visible. That is not good. Making all the parts instantaneous seems not to be the answer so we need to slow down the move…
and go to…
blocks. We do this by including them in a loop.
If we need to move 100 steps
, instead of doing that we move only 5 or 2 steps at a time and repeat that instruction 20 or 50 times. Instead of go to x:-100 y:-80
followed by go to x:<100-height> y:<-80+width>
we might replace the second go to…
block with glide 0.25 secs to x:<100-height> y:<-80+width>
block.
Questions, comments, wonderings?
Next Time
- Continue with initials project
- To prepare for class:
- read these notes (particularly if I did not get to them all in class)
- start your initials program, bring questions to class—class time will be used to work on/finish the project
- note ideas for the PAC assignment during the process (or go ahead an make them)
Questions? Comments? Wonderings? — Have fun! See you Tuesday.
Day 7: Scratch Workday (Initials)
Logistics
- Roll
- Today is a work day
- Wonderings? Comments?
The main activities for today are:
- Address any questions you have, difficulties you encountered (and not overcome). Got any questions/problems?
- Work on, perhaps finish, your initials project
Next Time:
- discuss the initials programming experience
- introduce gaming
- To prepare for class:
- finish your initials project
- complete the PAC reporting
- think about the game you want to play, it needs controlled repetition and data recording
Questions? Comments? Wonderings? — Have fun! See you Thursday.
Day 8: Introduce the Game Project
Logistics
- Roll
- Wonderings? Comments?
Discuss Initials Project
I like to encourage/allow students to share what they learned from each assignment. So, What did you learn while doing the initials program? Anything you wish to share. [ Accept & discuss student responses ]
Games Background
Most of us have played simple little games on the computers. That will be our next learning activity. In the process we will gain additional experience with variables, see how to use indefinite repetition/looping, do some more animation (can't have a game without it, can you?), see how to use the cloning feature of Scratch, use the if …
statement for various purposes, use modularization, and hopefully have a lot of fun.
The assignment/learning activity description contains information on many of the topics we'll address. Hopefully, you've read that. Do you have any questions on anything addressed there? [ Respond to student responses. ]
You were asked to consider ideas for your game. What ideas for games did you consider/come up with? [ Note & respond to student responses. ]
The first step in developing a program is to plan the program's activity. As we have discussed before, in Scratch, this will often include:
- background(s)
- sprites involved/used
- interactions between sprites
- action of each sprite
Any questions or wonderings with respect to those?
Something we might not have talked about earlier is identifying data and data manipulations as a general task in program planning. In this case we probably need to explicitly consider that because one aspect of the activity is to have some "score keeping" capability and using it to provide progression of difficulty in the program. Any questions or wondering about that at the moment?
And, it is often the case that novice programmers have some particular action in the program that they have no idea how to accomplish. That is not unusual, but it sometimes leaves the programmer in a quandary as to how to proceed. Are there any issues like that with respect to your game that you would like to discuss? [ Respond to student issues. ]
My sample game (pretty simplistic)
While finalizing the game activity description, I developed a program as an example. The plan for the program was to:
Have a star move across the top of the screen occasionally dropping a copy (clone) of itself toward the bottom of the screen. The cat sprite can move about on the screen in response to the arrow keys in an effort to "catch" the falling stars before they get to the bottom of the screen (or near it). I want to keep track of the number of falling stars and times they are caught to have a percentage of catches as the score. When a star is caught and the score (percentage of catches) is greater than 75% (or .75) I want to "level up" or add 1 to the level. Whenever the level gets higher the speed of the star's movement and of the falling stars will get higher (as will the cat's speed).
Any questions or wonderings about my plan? [ Respond to student responses. ]
Demonstrate the program ... Any questions or wonderings about the program?
Work Time
If there are no more questions or issues, we'll spend the rest of the class working with your partner on planning and developing your game program.
Next Time:
- work on the game program — due at the earliest, next Wednesday
Questions? Comments? Wonderings? — Have fun! See you Thursday.
Day 9: Scratch Workday (Game)
Logistics
- Roll
- Today is a work day
- Wonderings? Comments?
Discussion RE storytelling comments
- A number of people mentioned needing more "direction" — Is that still true? I wonder how many folks did the tutorial?
- RE direction—do code examples help (programs in the studio or snippets in the assignment descriptions)?
- Reset button is green flag code, right?
- How to see just part of a program? Click on the script (but variables may pose a problem)
- Pair programming—navigator is not just sitting and watching.
Building off the pair programming comment above, pair programming is an expected part of this class. The navigator is supposed to watch and make sure s/he understands everything the driver is doing and to spot problems with what the driver is doing. And roles should be swapped about every 30 minutes or so. The only reason not to do pair programming is if you are the odd person out (i.e., Katy at this time). From now on, not utilizing pair programming will negatively affect your A & P score.. (You and your partner are free to discuss the possibility of someone swapping places with Katy.) Any questions, comments, wonderings, ... ?
Also, please remember that you are not to use cell phones during class or use your computer to read email or surf the web for anything that is not class-related, etc.
The main activities for today are:
- Address any questions you have, difficulties you encountered (and not overcome), etc. for the game assignment. Got any questions/problems?
- Determine whether additional time is needed for the assignment
- Anyone near finishing? Anyone wanting a lot more time?
- [ During work time, assess need to extend time on the assignment. ]
- Work on, perhaps finish, your games project
Next Time:
- If needed work continue the game, else discuss the game programming experience, and introduce programming with lists (data collections)
Questions? Comments? Wonderings? — Have fun! See you Thursday.
Day 10: Scratch Workday (Game)
Logistics
- Roll
- Today is a another work day
- Wonderings? Comments?
The main activities for today are:
- Address any questions you have, difficulties you encountered (and not overcome), etc. for the game assignment. Got any questions/problems?
- Work to finish or improve you projects. For those of you who feel you are done, could the program be improved? If so, you have a whole class period to improve it (and probably earn a better score, in addition to expanding your experience and knowledge).
Next Time:
- The next assignment will be mad-libs. Be thinking about the what you want to do and
- identify one or two scenarios you might use
- identify several categories for making substitutions
- produce some words or phrases for each category
- Questions? Comments? Wonderings? — Have a good weekend. See you Tuesday.
Day 11: Scratch Lists & Mad Libs
Logistics
- Roll
- Wonderings? Comments?
Discuss Game Project
I like to encourage/allow students to share what they learned from each assignment. So, What did you learn while doing the game program? Anything you wish to share. [ Accept & discuss student responses ]
Mad Lib Learning Activity
We are going to start the next project today. It will be a mad lib generator that also allows users to enter new data for the mad lib (and then use the new data in mad libs). The main new thing is the use of lists, but there will likely be some complexity issues also. Hopefully the demo today and the discussion in the assignment description will will allow fairly smooth sailing. I anticipate having two work days on this assignment and that it will be due next Tuesday evening. Any questions, comments, wonderings before we start?
Make a plan
The project will be much simpler if you do some planning. I used "Hey diddle diddle" as the basis for my mad lib. In doing so, I first laid out how I thought the mad lib might go. It is shown below.
My final product was not exactly like this but having the plan sure made working on the project less confusing to me than it would have been otherwise. So, ... Make a plan!
Demo program
I am going to show you my mad lib program which should provide insight into how you can go about producing your own. I will not be "sharing" the project because I feel it is important that you begin relying on my code less and less (if you have not already done so). [ Run the program, exercising all (kinds of) parts. ] Any questions, comments, wonderings? [ Address questions. ]
Review assignment description content
I want to review the information in the assignment description. You need to be trying to understand what is in there and wondering about things that are not present, i.e., trying to identify trouble spots and stuff I might have left out. [ Display the assignment description and scroll down discussing aspect of it. ] Any questions, comments, wonderings? [ Address questions. ]
Next Time:
- Work day for the mad lib program. Come to class with at least a full set of plans for the program—sprites, backdrops, mad lib plan with list and variables defined, etc.
Questions? Comments? Wonderings? — Have fun! See you Thursday.
Day 12: Scratch Workday (Mad Libs)
Logistics
- Roll
- Today is a work day
- Wonderings? Comments?
The main activities for today are:
- Address any questions you have, difficulties you expect/encountered, etc. Got any questions/problems?
- Work on the mad lib project
Next Time:
- another work day—if done, discuss programming
Questions? Comments? Wonderings? — Have a good weekedn! See you Tuesday.
Day 13: Scratch Workday (Mad Libs)
Logistics
- Roll
- Today is a work day
- Wonderings? Comments?
The main activities for today are:
- Address any questions you have, difficulties you expect/encountered, etc. Got any questions/problems?
- Work on the mad lib project
Next Time:
- discuss PAC comments
- more drawing: polygons and spirals
Questions? Comments? Wonderings? — Have a good weekedn! See you Thursday.
Day 14: More Drawing with Scratch
Logistics
- Roll
- Wonderings? Comments?
Discussion RE initials comments
- "Shouldn't we be working on what our students will be working on?"
Yes but ...
- "initials too hard for 2nd graders"—perhaps but you may teach 3rd or 4th graders and some 2nd graders can probably do this. I think all could if some "guidance", not directions, is provided and students share their problems and solutions
- remember, kids will take to this and work through frustration much better than you do
- "I will need to give them more direct instruction"—I disagree. They will need help as they do it and some suggestions about how to proceed but as little telling "how to" as possible
- We would benefit from more discussion/instruction before starting to work on such projects
You would feel more comfortable but probably would learn less. I try to provide examples that you can apply. I think that is how you should work with your students. You might need to work through some of the examples. I consider you better able (than elementary students) to read/study my examples and apply them to your work. (I think elementary students would happily copy/imitate my examples and do guess and check coding. Guess and check coding is probably okay for them.)
- Allow more creativity with letters or something beyond initials
Seems a bit at odds with statements saying doing initials was hard. Whatever is more creative than initials, you can use with your students :-)
- "Show us future teachers how programming and coding is being used in classrooms today and in the future"
Programming is only now starting to appear very broadly in elementary classrooms. Actually I am showing you how you can use programming in your classrooms. I think you should be wary of prescribed curricula as they tend to limit the problem solving and thinking of students/kids. Some of you have mentioned how drawing could be used in math classes. Think similarly about story telling, exploring language, etc. Teachers have great ideas about how to use programming. Let yourself go.
- "we need to realize how hard it is for some learners and easier for others"
I agree whole-heartedly. That is one reason to use pair-programming. Allowing work in class where you can question me or peers also helps. There is even more freedom in K12 education than college education, I think. Unfortunately, until we start using a totally differentiated instructional system we are stuck with this and you do the best you can.
- "to do any of these types of cool programming, the math comes first"
I disagree. Address the math as you need it. Don't teach it out of context so people will use it at some point in the future. Think of programming as a new tools that can help students learn to apply math through examples of such application. Avoid teaching the math, then trying to apply it. You will end up focussing on the abstract math, not on applying math to solve problems.
- "the math is simple, applying it is hard"
Yes! That's why we need to explicitly teach applying it, rather than teaching the math itself. But, there are a lot of people who will suggest that the math is not that simple.
Any other comments or questions?
A Note about Scratch
Scratch sprites can draw while hidden and stamp and create clones. I had always thought that being hidden caused those things not to happen, but it looks like I was wrong (it could be that they changed scratch but probably I assumed and was wrong.)
Extra Credit Project
I have prepared an extra credit project in Scratch (I still need to proof read/finalize it). It asks you to use polygons and spirals to draw a scene. Let me know if you have questions about it.
Polygons
Discuss and demonstrate the following.
- Circle of given size
[ Discuss relationship between various elements — diameter, number of repetitions, amount of turn, time to draw, size, location ]
- Triangle
[ Discuss relationship between various elements — side size, figure size, number of repetitions, amount of turn, location ]
- Square
[ Discuss relationship between various elements — size size, number of repetitions, amount of turn, location ]
[ Discuss what would be needed to do a rectangle ]
- Pentagon
Can you produce a block to draw a pentagon? What would you want to be able to specify? What parameters would you use/need?
- Polygon
Can you produce a block to draw a polygon? What does that mean? What parameters would you use/need?
Questions? Comments? Wonderings?
Spirals
There are at least two ways to do spirals. One way is to draw a polygon, turn a bit; then repeat those two steps. Another way is to mess up your polygon a bit by turning too little (or too far) and to increase the side length with each turn. [ Demonstrate both ]
Next Time:
- practice programming quiz
- Introduce Logo
Questions? Comments? Wonderings? ... Have a good weekend! See you Tuesday.
Day 15: Sample Exam
Logistics
- Roll
- Wonderings? Comments?
The main activities for today are:
- Students complete the sample final exam items
This sampling is not for the whole exam, just for a part of it that I want to use as a baseline for comparing classes. Thus, it has do tasks similar to those in other classes that we do not encounter as we do story telling, initial drawing, gaming, etc.
So, please read the items carefully and feel free to ask questions about things you do not understand. Remember, this will not be part of your grade but the questions on the final will be, so work carefully and ask questions as we go over the exam solution (probably) next time.
- If time allows, go over exam solution, otherwise introduce Logo (see NetLogo notes)
- Ask students to read Sante Fe Institute's core concepts document (a PDF) and download NetLogo to their computer and install it—see the NetLogo site at Northwestern
Next Time:
Questions? Comments? Wonderings? ... See you Thursday.