Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Final Exam - Spring 2005
I will posting some sample questions for the exam here soon. If you want to get a head start, then take a look at the previous semester's exam pages above. The final in 2340 is comprehensive however: I will most likely NOT ask you to do any Smalltalk coding or anything on history of OO.
The exam will focus heavily on the material in the second half of the course. There will be questions like 3-4 on the midterm, but we will now expect much better answers that show an understanding of design patterns and more advanced concepts than was looked for at midterm.
Some of the questions below are from actual final exams in 2390 and 2340. I recommend working together to figure out the solutions. I will check up on the discussions, but I won't provide answers where no questions or answers to the samples are posted.
Sample Questions :
For each of the below applications, you are to pick the object-oriented language of your choice for implementing the application (e.g., Smalltalk in general, Squeak in specific, Java, C++, Eiffel, etc.) and provide your rationale! We don't have a right answer in mind for each of these, but we are looking for true, reasonable statements in your rationale. (E.g., ``I'm going to pick C++ because it gives me the most robust implementation'' would be a bad answer.)
A. You're building a claims-entry system for a large insurance firm. You're not using the Web because you're using your own proprietary secure networking protocol. You have to run on whatever platform the insurance agent may purchase. New claims forms are defined by the company fairly frequently-usually several a month. This requires new GUI forms and new processing code to be implemented for each new form.
B. You're building a new adventure game based on the movie Shrek to run only on Windows boxes with hardware acceleration. You're going to be distributing the code on CD. You'll have a small, hand-picked group of developers who are expert in your language of choice. There is intense pressure to have the game out by summer's end, so you only have a month or two to implement the complete game.
C. The Bell operating companies have decided to finally rewrite TIRKS, the massive multi-million line database system that keeps track of all the phone lines in the country, including keeping track of change records, etc. TIRKS is currently written in PL/1 and System 360 assembler. This rewrite is a huge investment, and it's not expected to be rewritten again for another 30 years-but it must be maintained. It's going to be done in an object-oriented language with a team of hundreds of programmers.
D. You're building an MPEG library for a set-top box. MPEG decoding, of course, is a numeric code that is very compute intensive. The library will be burned into ROM and executed from an embedded ARM processor running only a single application. You expect to sell millions of these boxes, and the library is expected to change very, very little, if at all, after it's finished, since the MPEG spec is cast in stone.
E. You're building a distributed Doom-like game, intended to support players on home PCs and Macs, that tie into a central server over the internet (possibly via a slow link, like a phone line). The game requires heavy, compute-intensive 3D rendering. Players are allowed to define their own characters and weapons; the 3D models and behavioral code for these entities are uploaded to a central server. Instead of running the behavioral code and rendering the models on the central server, they are broadcast to all the other players' computers, where they are executed locally. This allows for crisp interaction over slow communications links-when Felicia fires her laser blaster at George, the laser-gun simulation runs and renders locally on George's computer.
F. You need to choose a language & language implementation to allow people to define the programed behaviors for game characters and weapons-i.e., the bits of code that get shipped around between players.
Post comments, discussion, answers at S02 Final Exam Review: Language Choices.
a. Give three reasons that one might use a virtual machine (and compiling to native code) instead of a compiler to compile directly to machine code.
b. Give three good and frequent reasons that one might add a primitive to a VM.
c. How are the Java and Squeak VM's similar. How are they different?
d. Why are VMs so often stack-based architectures? Why not have registers?
Post comments, discussion, answers at S02 Final Exam Review: Virtual Machines
User Interface Design
Your junior developer comes to you with two different layouts (A & B)for an important piece of the GUI. You and the other developers like A the best. Your boss likes B. Describe a plan using principles we discussed in class to evalute the UI and choose the best one.
Post comments, discussion, answers at S02 Final Exam Review: UI Design.
a. How can use of Mock Objects aid in testing OO network applications?
b. Discuss a design technique that can help with performance constraints in designing a network application?
c. You are designing a distributed game. Discuss 2 design considerations that impact design of an appropriate protocol.
Post comments, discussion, answers at S02 Final Exam Review: Network.
a. Why does XML have two programmatic interfaces (SAX and DOM) in Smalltalk?
b. What are some good and bad design consequences of XML-based serialization as implemented in .NET?
c. What is the relationship between an XML schema and an object?
Post comments, discussion, answers at S02 Final Exam Review: XML.
a. What are design patterns? How do these differ from architectural styles? From language idioms?
b. I am building a Word Processor and need to support unlimited undo of actions. What design pattern might I use to assist me in designing a good solution?
c. The final will also have a question like #3 on the midterm. You will be given a partial design to critique, and will be asked to apply one or more design patterns to improve that design.
Post comments, discussion, answers at S02 Final Exam Review: Design Patterns.
a. Your company has asked you to design a new framework for 3D object mapping. Discuss 2 design issues that would impact designing this framework.
b. Show the derivation of a domain architecture for this framework.
Post comments, discussion, answers at S02 Final Exam Review: Frameworks.
a. What is wrong with the following quote, "We have already tested the guidance software on the F15, so we if we reuse it on the F15A1, we can save a lot of time in testing."
b. Briefly describe how UML class diagrams aid in OO testing. How about state diagrams? How about sequence diagrams?
Post comments, discussion, answers at Spring 2003 Final Review: Testing.
How did a knowledge of the target user population drive the design decisions make in Alice 3D?
Post comments, discussion, answers at S02 Final Exam Review: Squeak.
a. What mechanisms for profiling exist in Squeak/Smalltalk? How does profiling relate to improving our OO design?
b. There are a lot of issues involved in picking the correct collection for a given application. Discuss two considerations that impact the selection of an appropriate collection for use in a design.
Post comments, discussion, answers at S02 Final Exam Review: Optimizing Squeak.
a. What design constraints do you think drove MS to create the CLR. Why not just spit out high-performance native code?
b. What design tradeoffs did MS make when using XML/SOAP for serialization/IPC.
Post comments, discussion, answers at S02 Final Exam Review: Dot Net.
a. What is the relationship between Refactoring, Design, Code and Unit Testing?
b. People often criticise extreme programming as just code-and-fix. How would you respond(with concrete information).
c. The traditional development triangle is Design->code->test. What is the XP cycle?
Post comments, discussion, answers at S02 Final Exam Review: XP.
there will most probably be a design question like Q4 on the midterm that makes you do a high level design of something. Here is a typical problem:
Design an Alarm System
Design an alarm system for installation in homes or businesses. You may assume that someone else is creating sensors and the mechanism to trigger alarms. You have to create the software to respond to alarms and to alert authorities.
For any kind of alarm, you need to send all the alerts necessary for a given alarm. For example, for all fire alarms, the fire department is always called. The head of the house or business is always called for all alarm, and one or more "local experts" might also be called. For example, if there is a fire or intruder in the warehouse, the warehouse manager should also be called.
You need to respond to Intruders by sounding the audio alarm in the vicinity. Assume that you just send the message trigger to the audio alarm object and it will sound.
You need to respond to Fire by triggering the sprinklers in the vicinity, if available. Assume that you just send the message trigger to the sprinklers object.
Your system is pretty sophisticated with respect to alerting authorities. It can handle IP or phone messaging. You can assume that the messaging is handled by another piece of the system. You need to provide the address of the authority (i.e., either a phone number or an email address) and the message to be sent (which should include, for example, the kind of alarm and the alarm vicinity).
Draw the UML class diagram for this class structure. (You don't have to add more features than what's described.) Note: Partial credit will be given, so err on the side of too much, not too little. In your analysis, be sure to address:
What classes do you need? What service do each need to provide? What attributes do each need to know?
Where are there generalization-specialization relationships? Where are there part-whole relationships?
Post comments, discussion, answers at S02 Final Exam Review: Design.
Link to this Page
- Reviews last edited on 24 July 2007 at 2:44 pm by balladeer.cc.gatech.edu