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

Fall 2001 Midterm Review

A midterm in CS2340 is typically 4-5 questions like each of the below. Most of the questions below are from actual midterms. I won't post answers, but I will correct any mistakes I notice. If you don't post, I won't post.

You're welcome to post answers, questions about the answers, critiques or questions about answers that are already posted, etc.


String to Hex


Write a method stringToHex: that takes as input a string of positive integers separated by spaces (e.g. 12 13 14) and returns a collection of the hexadecimal equivalents of each of the numbers in the string (e.g., an OrderedCollection('16rC' '16rD' '16rE')). Hints: Strings understand findTokens: which inputs a string of delimeters (e.g., to specify a space) and returns a collection of strings that were separated by any of those delimeters (e.g., (12 13 13). Hint2: Integers understand hex. Hint3: Strings understand asNumber.


Put your answers/comment/questions at Fall2001 Midterm Review: String to Hex

Help the MVC Novice


One of the members of a CS2340 team unfortunately missed all of the lectures on UI because of his European vacation. Hes trying to get his first MVC interface to work, and hes asking you for help. Answer his questions below.

a. (4) "Okay, Ive got this Clock object, and Ive got this ClockText thats going to display the time. When Im first setting up the text area, how do I tell Clock that this instance of ClockText is a view for it?"

b. (5) "Now, the time has changed. How does the ClockText find out that it has to display a new time?"

c. (6) "That seems like an awful lot of work! Why not just have the Clock display the correct time at each second? Why involve ClockText at all?!?"

Put your answers/comment/questions at Fall2001 Midterm Review: Help the MVC Novice



Historical Context

  1. Who first used the word "object-oriented" to talk about programming systems?
  2. How is the development of C++ and Smalltalk similar? Different?
  3. How did ideas in a drawing program influence OO development?
  4. Name another programming approach that was popular when OO was first developing, and name a language of the time that exemplified it.

Put your answers/comment/questions at Fall2001 Midterm Review: Historical Context

Changed/Update mechanism


In the third Clock user interface, a Clock instance forms the model and a ClockText instance forms part of the user interface. Describe the sequence of messages that occur when a second of time passes by, such that the Clock is updated and the updated time is displayed by the ClockText.

Put your answers/comments/questions at Fall2001 Midterm Review: Changed/Update


OO Theory

  1. What is a class? What is an instance?
  2. What is the difference between a class and instance method?
  3. What is the difference between a class and instance variable?

Put your answers/comments/questions at Fall2001 Midterm Review: OO Theory

Design Critique


A friend is designing a problem for his job, and they have asked you to critique it. What's going wrong in each of the following situations?


  1. "Here are my CRC cards. This class here is named MapLinkedList and it is a collection of all the Map objects in the system..."
  2. "Here is my object ProcessMap. It knows its Map and it does the basic processing needed to get it on my website..."
  3. "But everything is controlled here by the MapManager object. No other object processes without confirming it with the MapManager."

Put your answers/comments/questions at Fall2001 Midterm Review: Design Critique


Hotel Doors OOA/D

You have been hired to design a door lock and tracking system for a hotel. These are doors that are opened with a key card that contains an encoded number of some sort. NOTE: The keys have no processor nor network connection. You can't "talk to" a key.


  1. Name at least two classes that you would need in the design for this system, and two classes that you might consider but would reject. Give your reasons for rejecting those two classes.
  2. On the back of this sheet or on a separate sheet that you attach to the exam (remember, each problem will be graded separately!), draw the CRC cards for this scenario:
A customer gets a card key, takes it to the door, puts it in the door lock which checks if it's valid, then the door opens because it is valid.


Put your answers/comments/questions at Fall2001 Midterm Review: Hotel Doors OOA/D

Write Smalltalk Code



Write workspace code (something I can select and say DoIt in the workspace) to draw the below figure. Don't worry about exact sizes–just draw two rectangles with the text inside. (To remind you, Pens know how to up, down, go:, turn:, and north:. Strings know how to displayAt: a given point.)

Uploaded Image: cs2340.gif

Put your answers/comments/questions at Fall2001 Midterm Review: Write Smalltalk Code

UML Class Diagramming



Draw a UML class diagram for the set of classes described below.

Put your answers/comments/questions at Fall2001 Midterm Review: UML Class Diagramming

Analyze Student/Classroom Code


Imagine that I have a Student object in a Classroom object, something like this.

| s c |
c := Classroom new name: 'CS2390'.
s := Student new name: 'Fred'; section: 'a'; number: '123456789'.
c addStudent: s.
s := Student new name: 'Wilma'; section: 'b'; number: '3456789012'.
c addStudent: s.
s := Student new name: 'Barney'; section: 'a'; number: '012345678'.
"...More code here..." 


a. (7 points) What would you say is the relationship between Student objects and the Classroom object is? Why?

b. (10 points) What attributes and services do you think that the Student and Classroom objects have, based on what you see in the above code?

Put your answers/comments/questions at Fall2001 Midterm Review: Analyze Student/Classroom Code

Reading Code

| anArray aString |
anArray := #('abc' 'def' 'ghi','jkl').
aString := ''.
anArray do: [:each |
aString := aString, each.].
Transcript show: aString.



| i test |
i := 1.
test := (i < 10).
[test] whileTrue: [Transcript show: 'hello'.
i := i + 1.].


Put your answers/comments/questions at Fall2001 Midterm Review: Reading Code


Simulate a Motorcycle


Imagine an object-oriented simulation of a motorcycle.

  1. What instance variables are you going to need for each of the key, engine, and wheel classes?
  2. Write the methods insert for key; start and run for engine; and turn for the wheel.
  3. Write whatever accessor methods you need to make the above example work.
  4. Write the workspace code that you'd use to create the above scenario

Put your answers/comments/questions at Fall2001 Midterm Review: Simulate a Motorcycle



More Drawing in Smalltalk


  1. Using Pen, write the code to draw an equilateral triangle.
  2. Using the Box class, write the code to draw a pyramid of three boxes.
  3. Explain what this code will do:
| joe |
joe := Box new.
30 timesRepeat: [joe turn: 12.]


Put your answers/comments/questions at Fall2001 Midterm Review: More Drawing in Smalltalk

Explaining the Booms


(This problem is actually harder than I'd put on a midterm, but thinking through the issues are reasonable for the midterm)

Smalltalk provides a huge amount of flexibility...and a huge amount of danger. For each of the situations below, explain what you think will happen after it. "Smalltalk goes boom" is obvious and incomplete. Think carefully about how the system might react.

  1. Smalltalk := nil.
  2. You redefine class SmallInteger's method for "+" in a way that's correct but different than what's currently in the system.
  3. You set Box's superclass to nil, then execute Joe := Box new.

Put your answers/comment/questions at Fall2001 Midterm Review: Explaining the Booms

Links to this Page