Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Usability (2 Points)
Heuristic evaluation: the aggregation of evaluations done by a small set of judges using a set of predetermined characteristcs.
Cognitive walkthrough: uses exploration to evaluate ease of use through the four questions of:
- Will the user be trying to produce whatever effect the action has?
- Will the user be able to notice that the correct action is available?
- Once the user finds the correct action at the interface, will she know that it is the right one for the effect she is trying to produce?
- After the action is taken, will the user understand the feedback given?
Observing users: watching how–through direct or indirect means–a user interacts with the system. May often be augmented with think-aloud, post-hoc verbal protocol, critical incident logging, or structured interviews to get the most usefulness from it.
|heuristic evaluation||observing users|
|requires no outside resources||requires bringing users in to test the system|
|offers point of view from developers only||offers perspective of those who will be using the system|
|extremely structured and objective||subjective and open|
|useful for cheap, rigorous testing||used for more esoteric testing of a system|
Design Patterns (2 Points)
- problem: tells you when the pattern is applicable
- solution: gives you the elements of the design pattern, their relationships, responsibilities, collaborators.
- consequences: tells you what will happen when the pattern is applied and any side effects of applying it.
- problem: class canít anticipate the class of objects it will create, wants its subclasses to specify the objects it creates, or want to localize the knowledge of which specific class gets created for a specific purpose.
- solution: Have a factory method (that, perhaps, take a parameter that tells you the kind of object you want) decide which object to give you.
- consequences: You have to have a ConcreteCreator class for every product you create, and it Connects parallel class hierarchies.
- problem: You are unable to alter useful classes directly.
- solution: Convert the interface of a class into another interface clients expect by wrapping an adaptor class around it.
- consequences: dapter adapts for all subclasses of adaptee and makes it harder to override adaptee behavior.
Brother, Phi Kappa Sigma.
"There's no freedom to be found lying face up in the ground."
Tracing Code (1 point)
The following code solves the rainfall problem, which you may have seen in previous CS classes. For each line, describe what the Smalltalk code does. Be as specific as possible. In particular, what is data at the various points in the code?
| data onlyPositiveNumbers |
"creates two temporary variables named data and onlyPositiveNumbers"
data := OrderedCollection withAll: #(1 2 3 -4 -5 'error' 6 -7 999 2).
"puts an OrderedColledtion into data containing the given data"
onlyPositiveNumbers := [:i | (i isKindOf: Number) and: [i positive]].
"makes onlyPositiveNumbers a function that returns true if i is both a number and positive"
data := data select: onlyPositiveNumbers.
"runs onlyPositiveNumbers on data which removes -4, -5, 'error', and -7"
data := data copyUpTo: 999. "not including"
"copies data into itself leaving only values that are less than 999 (1 2 3 6 2)"
Transcript show: data average
"prints the average of all the values in data (4.8) to the transcript"
Language Features (1 point)
Squeak is perhaps the least well documented programming language you will ever use; however, Smalltalk and the Morphic GUI compensate for this by being pokable (easy to explore). There are many language features and tools for exploring Squeak. For four of these, name them, describe how you use them, and explain why they are useful.
How to use: Select a class category from the first pane. This will bring up the availible classes in the second. You can choose to create a new class or click on one of the method categories or availible methods. clicking on the method categories allows you to create a new method in the repsective category or view/edit one of the existing ones.
Why use it: This is the main avenue of writing code in Squeak, useful because all the classes and methods are displayed neatly categorised. You can also choose between class and instance variables with the click of a button. In addition to what is visible, right clicking each pane brings up a menu with a host of other functions such as finding, adding, renaming, and removing classes and methods.
How to use: Type in the name (whole or partial) and it will tell you which classes implement that method.
Why use it: The method finder allows you to see what classes have a particular functionality. With this knowledge, you can see which classes will be most useful in particular situations or where you may need to add extra functionality that will prove beneficial to the situation.
How to use: Alt-click on any morph and click the wrench or highlight an object and click "inspect it" to bring up the inspector. From here you can see what the morph's variables are at any particular moment.
Why use it: In addition to inspecting variables to check if they contain desired values, you can also (using the lower pane of the inspector) send any message to the object and see how it will repsond.
How to use: Bring up the halo menu on any morph and click the eye icon. From here you can change the morph's variables and write scripts to control certain aspects of the morph.
Why use it: The viewer is extremely useful in prototyping GUI functionality is simple enough that it can be useful for introducing younger people to programming.
Links to this Page