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

Wu Zhan

External Image

Hey Everyone. I'm Wu, and I'm a fourth year CS/Public Policy major. My favorite pastimes are watching movies, playing tennis, and of course sleeping, which I feel like doing now. ^_^ Below are some case pages that I found useful.

Living in an OO world
This pages gives a very nice introduction to why OOD is used and why it is helpful. It starts out with topics we are all familiar with like classes, objects, and inheritance then goes on to talk about maybe why we use OOD like for maintainability and division of labor. What is also good about this page is that it gives real life examples on each topic so that it is better understood. Over all this is a good mini-review before starting 2340.

The Basics of User Interface Design
This is an interesting page on designing a good user interface system. It gives a brief introduction on why HCI is used, then in the next section talk about picking a certain kind of user group you're designing for and how you would go about designing for them. And of course in the last section it talks about get down into the design of the UI and making prototypes. Over all it has a nice organization to the page and step by step tutorial.

Video Professor: Because reading is HARD.
This page works well for people who learn better at being shown what to do instead of reading about what to do. It has videos on basic features and functionality of squeak. The videos show yo step by step on what to do. Very nice in that it would probably save you a lot of time on having to play around with squeak and figuring out everything yourself.

Mid-Term Review

Tracing Code (1 point)
The following Smalltalk statements are written in a Squeak Workspace. In order from top to bottom, you execute each statement with Alt-p to print its result. Next to each statement, write the result.
1 + 2 3 - 4 factorial -15

a := #(1 2 3 4 5) #(1 2 3 4 5)

a select: [:i | i odd] #(1 3 5)

b := a #(1 2 3 4 5)

a := a reversed #(5 4 3 2 1)

b collect: [:i | i i] #(25 16 9 4 1)

a perform: #at: withArguments: #(4) 2

Message Passing (1 point)
Smalltalk is built on a few uniform design principles. One of these is that computation happens through message passing: An object gets sent a message (perhaps with some arguments) and returns an object. Even traditional control structures (while loops, for loops, if/then/else) are implemented through message passing. For each of the control structures below, translate the Java code into Smalltalk. For each part, indicate what is the object, what is the message, and what are the arguments.

while loop

while (aBooleanTest)
// do stuff

[aBooleanTest] whileTrue: [do stuff].

[aBooleanTest] is the object
whileTrue: is the message
[do stuff] is the argument

for loop

for (i = 1; i = 10; i++)
// do stuff

1 to: 10 do: [i | do stuff].

1 is the object
to: is the message
10 is the argument
do: is the message
[i | do stuff] is the argument


if (aBooleanTest)
{ // do stuff
{ // do stuff

[aBooleanTest] ifTrue: [do stuff] ifFalse: [do stuff].

[aBooleanTest] is the object
ifTrue: is the message
[do stuff] is the argument
ifFalse: is the message
[do stuff] is the argument

Final Review

Usability (1 point)
Don Norman provides a simple framework for explaining the interaction between people and the physical world. As part of that framework, he identifies two “gulfs”: the gulf of evaluation and the gulf of execution. Describe these and provide an example of each gulf in a situation of a user interacting with a computer application.


One of the tenets of human-computer interaction is that “you are not your user.” Explain what is meant by this maxim.

What is the difference between a mistake and a slip when classifying user errors?

What is an example of a natural mapping in user interface design?

Extreme Programming

Describe in detail how pair programming is done. What is the role of pair programming in extreme programming?
What is the role of unit testing in extreme programming?

Links to this Page