View this PageEdit this PageAttachments to this PageHistory of this PageHomeRecent ChangesSearch the SwikiHelp Guide
Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007

Chris Baker

For more about me, including contact info., follow this link: Personal Site @ GT

I am working on team Flash Gordon Productions.

CoWeb Assignment 1

Class-Based Inheritance (1 point)
Classes and instances are both objects. Instances are objects that inherit from a specific class that resides in memory, again, as an object, that is an instance of a metaclass.

Class variables are not used frequently. Instance variables, on the other hand, are common, and represent data that the instance object we are working with in the Browser knows about. All instance variables are private, meaning that we must write accessor an modifier messages to get the information or set information to the variables.

Classes understand certain messages that instances do not. The simplest example is the message 'new', sent to a class's object. This is similar to a 'static' method in Java. This will actually return a new instance object. Instances do not understand the 'new' message. In Squeak, we use instance methods for most common development.

Message Passing (1 point)
'Messages' are the equivalent of 'methods' or 'functions' in other programming languages. Every object in Squeak has a determined set of messages that it can understand and that you can call.

The strongly object-oriented nature of Smalltalk allows you to use messages nearly anywhere. You can even call a message on a number that isn't in a variable. Since message names are objects themselves, we can use them as such and reference them as symbols (#message_name).

Tracing Code (1 point)
1 - initializes two local variables, 'data' and 'onlyPositiveNumbers'
2 - sets 'data' equal to an OrderedCollection object where the elements (unordered) in the Collection are {1, 2, 3, -4, -5, 'error', 6, -7, 999, 2}
3 - sets 'onlyPositiveNumbers' equal to a block, that defines elements of a set where the elements are numbers, and are positive numbers on top of that.
4 - 'data' is set equal to the subset/'select'ion of itself that is defined by the 'onlyPositiveNumbers' block. At this point, 'data' equals {1, 2, 2, 3, 6, 999}. The 'select' message takes in a block object.
5 - 'data' is set equal to the subset of itself that equals less than 999. 'data' at this point equals {1, 2, 2, 3, 6}
6 - prints out the average of the numbers in 'data' to the screen/Transcript Window, which is (1+2+2+3+6)/5 = 2.8. Average is a message inherited from the Collection object.

CoWeb Assignment 2

Using the Debugger

Seemingly Spontaneous
Without a doubt, you'll come across this lovely pink box as you're develping in Squeak:
Uploaded Image: debugger_does_not_understand.jpg

This is the debugger tool, which is useful for finding and fixing bugs in your code. This is also one of the most common error messsages you will come across: "does not understand"/"message not understood". Basically, it's saying that the message/method that was called does not exist. Often, the bug won't be directly in your code, but might show up as if it were a bug in some code that has already been written. Usually, it's still a bug in your code, though.

There are many system messages that are called with your code, so it takes some patience to find exactly how data is moving through Squeak! One of the most important things to note about Squeak is that you can write code in the debugger, because it is a late-binding language.

Need to bring up the debugger yourself? Just add
self halt.
into your code:
Uploaded Image: debugger_self_halt.jpg
It will bring up the debugger for you!
Uploaded Image: debugger_halt.jpg
Click on the "Debug" button to open up the main debugging window (below). This allows you to view the current state of your object while the program is paused. Here, in the circled area, there is an instance variable called "name", which has been set as "Dude" (you can make changes to your object, so I could rename this object "Dudette" if I wanted to). The area at the top shows the call-stack, so you can see a list of which methods are calling other methods. To the right of the instance variables (circled) is the actual data passed into the method that is selected in the call-stack.
Uploaded Image: debugger_halt_expand.jpg

The Buttons

Using the debugger can be frustrating, but it becomes more useful, the more experience you have with it. Practice using it whenever it pops up and you'll find it will save you time later on.

CoWeb Assignment 3

Frameworks (2 points)

Usability (2 points)

Heuristic Evaluation and the "Think Aloud"/Observation approach are both useful for usabilty analysis and testing.

Strengths: Heuristic Evaluation is a relatively inexpensive and effective method. A small set of evaluators individually examine an interface and judge it based on certain principles (the "heuristics"). This method is best implemented after a prototype is produced. The results can then be used to further develop the interface. The Observation method is the best method to study how an actual end user will use the program. It directly follows the user's mental models. The user will "think aloud" as he/she attempts to do specific tasks with the interface.

Weaknesses: The bugs discovered in a Heuristic Eval. are filtered to find the most severe bugs. Therefore, it is not a completely thorough process. A Think Aloud session is relatively difficult to setup: First, you must have a finished version of your program ready. Second, you must find a user that most closely resembles the target audience. Then, a computer must be setup with an observer noting the user's expression and reactions. Also, a camera may need to be setup in order to capture and save the session, which adds extra cost. This method is best used when you have the resources to execute it and when you have a well-working, or "finished" program.

Links to this Page