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

Crystal Wrenn

cwrenn[AT]gatech.edu
5th Year Computational Media

Team Double Kupcake
Uploaded Image: cupcakes.jpg


CA 1
Due: 22 May 06


1. Video Professor: Because reading is HARD. ~ This one is VERY helpful to people new to Squeak. It even helps people who have been using Squeak, but may have just been hacking out code and not worrying about how to make Squeak work for them. It has a bunch of little videos to help people get used to the system quickly and efficiently.

2. Beginner or Intermediate Squeak User's Index of Useful Cases and Tutorials ~ This one is a good index of places to look to find helpful things, like graded CRC cards and good exam reviews. This is a good place to look once you've started coding, but have no idea what makes your code good or bad.

3. Mini Java-to-Squeak Tutorial ~ This is a great place to look if you've just come from Java and need a little help changing over to Squeak. It has a lot of code examples to help newcomers understand things from the Java perspective. It gives a line of code in Java and then shows exactly what it is in Sqeuak, helping people translate things and get their minds around Squeak quickly.

4. How To Complete Your First Milestone ~ This one is a good place for some tips on how to get through the start of the big final group project in class. A lot of it is pretty basic, but the information comes in handy, like the link to the Squeak swiki.

5. Team ASDF Case Page ~ Finally, this page has a TON of information on the whole class, from tips to getting through it, to general how-to's to the WHOLE group project (all 5 milestones are broken down with pictures). The pictures are great, with screen shots of projects, UML, and Squeak as they are telling you how to do things. They also have a nice, linked index at the top of their page to help you navigate all of the information.



CA 2
Due: 14 June 06

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
}

Answer:
[aBooleanTest] whileTrue:
      [
        "do stuff"
      ]. 


Object: [aBooleanTest]
Message: whileTrue:
Arguments: [stuff in brackets].

for loop

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

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


Object: 1
Message: to: do:
Arguments: 10, [stuff in brackets]


if/then/else

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

Answer:
(aBooleanTest)
      ifTrue:
      [
        "do stuff"
      ]
      ifFalse:
      [
         "do stuff"
      ].


Object: (aBooleanTest)
Message: ifTrue:ifFalse:
Arguments: [stuff in brackets], [stuff in brackets]



Refactoring (1 point)
Answer the following questions on refactoring.


Ans:

Refactoring is basically improving your code to make it easier to understand and work with. Code should be refactored when it contains names (variable, method, class) that make no sense or are too simple (i.e. n instead of name) by renaming them according to what they actually do. Another sign that code should be refactored is when a method is very lond and contains entirely too much information. This can be fixed by abstraction.

Ans:
Unit tests are useful when refactoring code because they help the programmer fix things during the refactoring process. If the programmer has a unit test written for a method and it fails once the method has been refactored, the programmer is able to go back and change it before the code becomes more complex and the programmer is more easily lost in his/her own code.



CA 3
Due: 28 July 06

Extreme Programming (1 point)


Ans:

Pair programming is accomplished when two people code together. One person codes while the other person watches and quides the coder. The two people switch jobs frequently to get the project done. In the coding phase of extreme programming, pair programming is VERY helpful in that all the team members will know exactly what the project does, and if a team member leaves the project should not suffer too much. Also, switching pairs and members within the pairs may help individuals in the team develop better coding practices.

Ans:

Unit testing is extremely important to the testing phase of extreme programming. EVERY piece of code should be unit tested and NONE of the code should be released if it does not pass the unit tests. Whenever a bug is found, a unit test should be created specifically for it so that the bug can be avoided in the future.

HCI (1 point)

Ans:

Designers have to keep in mind that they are not designing things for themselves. They may use what they have designed, but it is for people other than themselves that they have to take into consideration when they design something. They do not have to consider every person in the world, but they should pick a target audience and design for that audience's needs.

Ans:

Mistakes happen when the user does not know what to do. Slips happen when the user knows what to do but somehow does it wrong. Designers can remove mistakes, but can only minimize the impact of slips.

Ans:

An example of a natural mapping is a home button on a web page. The user can pretty much guess that when it is pressed, they will be taken back to the home page of the website, instead of somewhere else.


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.

Ans:

The gulf of execution is the gap between the user knowing what to do and his or her ability to actually do it. This can occur frequently with computer applications the user has never seen before. The user might open a music playing application and want to play music but may not be able to find the play button anywhere. The gulf of evaluation is difference in what the user thinks an application can do and what it actually can do. The user may see a program called multimedia player and think it can play music, videos, and movies, and open it to find that it can only play videos.



Good CS Group Project Ideas

Links to this Page