        |
Concept Nuggets Listing
This page starts to flesh out the individual "concept-nuggets" that correspond to basic units of information that people will need to know as they learn to program. Although really this is best represented with a partial order (as in the yellow/green/blue tree), we will try to linearize things in the best way, since a linear progression is less disconcerting to the novice (and to me). It is simpler to type in as well.
There are two main columns, corresponding to the programming concept, and the squeak skills (e.g., learn about using forward or turn or the player data type). Since I don't expect anything like a one-to-one correspondence, I've purposely not linked the two columns together via rows. Rather, the right column will just have a listing by number, and the left column can refer to the number to indicate which any project exemplifying the concept will likely cover. Note the right column is barely started.
As mentioned in class, there are additional things to weave in besides these two themes. The "CS Concepts" are recommended as project ideas to drive the programming lessons and squeak skills. But other topics are fine as well.
Our goal will be to make this as detailed as possible, and to tie each nugget to part or all of a squeak programming experience.
For Wednesday Mar 30, please add five items to the left column, five items to the right column, and create a lesson or lessons that cover five topics, linking at least a text-representation of the project (a verbal description, along with expected code to be produced, what is to be drawn, order to do things, motivation for idea...) to the entries in the table.
In class, we will decide on whether to create a visually rich set of lessons as we go, with images, etc., as in the .dmu stuff, or whether we want to focus on just getting the ideas up in text (e.g. some of our better described "how-to" material), and have a "make it all pretty" party later.
Start at Chapter 3 , and assume that they know the basic painting and handles tutorial. Furthermore, assume that they've had an overview lesson like the car lesson, or perhaps something better (like pong), but without a lot of focus on concept, but rather a "do as I do" tutorial that is a bit more involved than the car, but which doesn't really push the underlying concepts.
Programming Concepts
|
Squeak Skills
|
|---|
1 Welcome
Special Note for Beginning Programmers
Special Note for Experienced Programmers
2. Getting Started
Setting up Squeak
Avoiding Squeaky Problems
Beginning Tutorials
Include paint, handles, car, first experience with scripting, publishing.
Objects overview
Summarize basic tutorials, introduce idea of an object, and its properties, and its scripts,
basic flow of control, including conditionals, and ways to start/stop scripts under program control.
As lessons progress, we'll learn more about all the properties, creating new properties (variables), and writing scripts.
START HERE
3. Everything is an Object
What is an object
- an object is something that you draw
- an object is something that you pull out of a bin
- an object is something more complex that you can create
- analogy with physical world objects.
- ultimately, we will create objects that don't have a physical manifestation, e.g., your conscience, which may still act in and affect things, but you may not be able to see it.
4. Properties and Variables
- Squeak has predefined properties, also called variables, for all objects.
- Properties that all objects have:
(insert explorations about objects and their predefined properties, no assignments)
think of real-world motivating examples, have them draw or construct the objects, and use squeak to model the physical properties such as size, location, color, etc.
- SolarSystem Properties Demo (Dave)
- Some types of objects have special properties (insert explorations about special objects and their special predefined properties that come in special category panes)
- There are different types of variables (data types)
(explorations and exposition of different data types)
- Some properties correspond to observable attributes. Some properties are present even though not visible immediately (pendown (but can tell if you move it) others..?
- Using a viewer
5. Simple scripting (built-in methods, no variable assignments)
- squeak has some predefined actions (methods, or built-in-scripts) such as foward, make sound, etc. (include explorations using predefined actions only, on a single object).
- You can create your own scripts by composing one or more predefined actions together. These will execute one after another.
- A script can be made to run through exactly once.
- Or they can go over and over
- It is possible to control how fast, or how many times through per "tick".
- A single object can have multiple scripts controlling it.
- A single script can control multiple objects
- Interesting things can be done with multiple objects and multiple scripts
- Objects can be made to relate to eachother via drag/drop tiles. (still no variable assignment)
- scripting practice while exploring panes.
- scripting practice while using objects from supplies bin.
- Scripts that point to one another
6. Variables and assignments
- we can change a property of an object manually
- a script can change a property of an object while it is running.
- a property can only take on the type of values that correspond to its data type
- explorations and fun excursions using various data types and assignment statements under program control.
- the arrow operator
7. Tests and Conditionals
- can test whether a property has a given value, and take an action as a result MouseAndCheeseDemo (Dave)
- can test whether a property has a given value, and change another property as a result
- can test whether a property has a given value, and execute an arbitrary sequence of statements (or an entire script...) as a result
- can test various conditions provided for by the squeak interface, including mouse events, keyboard events, "colorsees" and do whatever as a result.
- Can combine tests to create "and" and "or" statements
- Assignments and executions belong in the "yes" and "no" parts, booleans belong in the "test" part (this is enforced by squeak)
Extensions of Easter Egg Coloring
At this point there are enough tools to create lots of explorations. We saw some examples in class. The alarm clock didn't need anything more than the above. Introduce randomness, some of the math panes, and you can have a horse race. Make the car stay on the road.
ENUMERATE HERE the different variety of tests available...
- color sees
- isOverColor
- isUnderMouse
- obtrudes
- overlaps
- overlaps any
- value is true
- value <, <=, =, ~=, >, >=, isDivisibleBy
- can use math (but only on the right side of the comparison operator)
LIST HERE all the creative projects you can do with a small number of objects, no user-defined variables, and simple scripts with a single test here or there.
8. Exploring Squeak More Deeply
Introducing more panes, and supplies
LIST HERE creative examples of using above ideas while introducing the variation of panes, supplies available. Don't get into complex scripting (no "scripting" pane).
- User input other than the mouse
9. User-defined Variables lesson9-1
- Sometimes objects have properties we cannot see
- Sometimes in life we create properties or define them and gain power from this...
- We can create any type of property or variable we need. (lots of motivating examples in different contexts. Speed of a car, agression level of a character, growth rate of a daisy, score of a gameplayer, number of questions answered correctly so far on a computerized test, color of a part of the screen, graphic of an object...
- We can even represent other objects
- Usually variables have a type, integer, floating point, graphic, etc.
- We can change and assign these new properties as we'd like. (explorations)
- We can test these properties, as in (7) above, and take actions as a consequence.
- Variables storing a random value Dice Lesson (Dave) Also, A spinner (no lesson)
- TicTacToe Demo (Dave)
Erik's Project Idea
I started working on a sort of tutorial for concepts 3-7. It takes the user through the creation of objects, changing of varialbes, scripting, variables, and conditionals. Any thoughts on how to make this more informative/interesting/useful/etc. would be appreciated. Project: Concept Nuggets
-Ben
Had to stop here and leave town
Fill in things you think are missing from 3 through 9 above.
Create explorations. Be creative. Don't just demo the simple property. At this point, enough skills have been built up to do some really interesting things. But you can do really interesting relatively simple things. Don't get carried away with too much complexity (yet). We'll need to build up some tools for how to plan projects carefully before we want them writing lots of interacting scripts with lots of different variables.
Some of the "widgets" and squeak how-to's might make sense here.
Erik's Second Project
Haunted Maze Lesson (Steve)
10. More Advanced Scripting
Including more tests, sequencing, control, tickers, timers, delays, randomization.
11. Simulations
Use of variables to capture relationships.
Erik's Rabbit Sim
12. Programming Widgets (how-to's)
lots of little pieces like scoreboxes, shooting stuff, bouncing, chasing, animation,...
13. Advanced Programming
Including object creation and deletion under program control, using menu items commands, multi-instance techniques, recursion, complex conditionals.
14.. Complete Tour
Everywhere you want to be, and where you don't.
15. More Sections I Haven't Thought of Yet
Index
Notes and materials to be incorporated somehow.
For now I've dumped here random notes to myself, postings to a previous class, beginnings of "how-to" guides, etc. It needs to be sorted, spiffed up, revised, added to, and integrated into the book above.
Book Coverage and Ideas
Squeak Wish List
Squeak How-To
Squeak Troubleshooting
Squeak Other
|
Each of following is category that should be expanded out
- color and border pane
- basic pane
- scripts pane
- drag one object onto another of the same type (scripting)
- motion pane
- pen use pane
- pentrails pane
- geometry pane
- graphics pane
- tests pane
- scripting pane
- miscellaneous pane
- observation pane
- drag&drop pane
- input
- playfield
- collections
- iteration through collections
- stack navigation
- menu commands
- connectors and pins
- customized flaps and maker buttons (and the difference between the two)
- variables flap
- creating new variables
- changing the type of the variable
- value assignment (purple arrow thing)
- set value (default)
- increase by (Incr:)
- decrease by (Decr:)
- multiply by (Mult:)
- random number tiles
- math functions
test as you go
|
(c) members of CS 498lbp 2005. Permission to use and reproduce for educational purposes only is granted, provided this notice is included, and no fee is charged other than to recover reasonable copying fees.
concept3.pr
concept4.pr
concept5.pr
concept6.pr
concept7.pr
concept9.pr
concept9plusConditionals.pr
Iteration.pr
conceptNuggets.pr
Easter Egg Coloring 1a.pr
Easter Egg Coloring 1b.pr
Easter Egg Coloring 2.pr
Easter Egg Coloring 3.pr
Haunted Maze Lesson.pr
Lungs.pr
PhysicsCarnival.pr
Link to this Page
- hw-3-20 last edited on 30 March 2005 at 4:48:45 pm by csil-cbt6.cs.uiuc.edu
|