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

Sangwoo Kim

I'm a third year CS major. I'm interesting in Graphics, and Database.


Useful Cases

1. Proper CRC Card Creation
This page gives a very nice introduction to why CRC Card is used and why it is helpful. Actually, I'm not familiar with CRC cards. So, it helped me to realize the differences between CRC cards and UML. He uploaded the scanned CRC card so it exactly shows why it's correct and why it's wrong. Also, he points that the biggest mistake you can make is overcomplicating CRC cards and he gives the explanation.

2. Team Real Programmers Drink Coke
This webpage shows well orgarnized milestones and some overall tips for doing better in this course. It includes squeak coding tricks so I could learn squeak coding tricks for this class. Also, it offers good screen shots for M3-M6 and and it includes good explanation for the each screen shots and it's very helpful to see and understand what they did M3 through M6.

3. Living in an OO world
This is very helpful in the fact that it introduces very well why OO is used and why it is helpful. Actually, it's not really new information, but it's something to keep in mind since Squeak takes the concept of Object Oriented to a new level of extreme. Finally, it points that Object Orietend techniques can work very well with RealWorld systems, so long as the features are mapped in the right perspective.


Tracing Code (1 point)

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] —> #(1 4 9 16 25)

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

Message Passing (1 point)

while loop

while (aBooleanTest)
// do stuff


[aBooleanTest] whileTrue: [do stuff].

[aBooleanTest] —> object
whileTrue: —> message
[do stuff] —> argument


for loop

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


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

1 —> object
to: —> message
10 —> argument
do: —> message
[i | do stuff] —> argument



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


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

[aBooleanTest] —> object
ifTrue: —> message
[do stuff] —> argument
ifFalse: —> message
[do stuff] —> argument



Extreme Programming (1 point)

Describe in detail how pair programming is done.

Two programmers working side-by-side, collaborating on the same design, algorithm, code or test. One programmer, the driver, has control of the keyboard/mouse and actively implements the program. The other programmer, the observer, continuously observes the work of the driver to identify tactical (syntactic, spelling, etc.) defects and also thinks strategically about the direction of the work. On demand, the two programmers can brainstorm any challenging problem. Because the two programmers periodically switch roles, they work together as equals to develop software.

What is the role of pair programming in extreme programming?

Pair programming increases software quality without impacting the time to deliver a method. By trading partners frequently everyone knows about the project as a whole, and the team can thus recover from somebody leaving the team.

What is the role of unit testing in extreme programming?

Unit tests are necessary in extreme programming because code is continuously refactored. Unit tests make sure that the redesigned code still does what its intended to.

History of OO (1 point)

What was the first object-oriented language? What two elements, kept separate in structured programming, did it combine?

Simula was the first object-oriented language. It combined data and functions.

Name three contributions to computing that were made at the learning research group at Xerox PARC?

The 3 contributions made at Xerox PARC were the Ethernet, The WYSIWYG idea and GUI's.

Garbage Collection (1 point)

Reference counting was one of the first implementations of garbage collection. Ultimately, it proved problematic. Why?

It was possible for a circular reference to exist, which equated to two objects pointing to each other but nothing else which will never be garbage collected.

Name two advantages and one disadvantage to using garbage collection.

First advantage is easing the programmers burden of memory management. Second advantage is an increase in security and safety.

One disadvantage is performance (not as big of an issue anymore, now the biggest problem is control).

Links to this Page