CIS 422, Spring 2004 ^

Second (final) midterm

These short questions are designed to take no more than an hour to answer if you have been attending class and reading the assigned papers.

Turning it in

This exam is due Friday of finals week at 10:00am. (That is to be consistent with our scheduled final exam time, which would be 8am Friday if we were having a sit-down final exam.) I will try to acknowledge earlier submissions as they come in. I may not have time to acknowledge last-minute submissions, so I encourage you to turn in the exam earlier.

I will be doing all of the grading on Friday, so it is essential that they arrive on time and in a consistent format. You must send your answers in a plain-text e-mail message to this address: michal+422mt2@cs.uoregon.edu; the subject line must be "422mt2", and the first part of your message must include your name. If you don't follow these directions, your score may be lowered or may even be zero.

Questions

1. What is the most important difference between a "requires" interface in an architecture description like Koala and a typical module import declaration in a programming language, like "import" in Java or "#include" in C or C++? [30 words or less]

2. When we replace a recall task with a recognition task, our purpose is usually to _____(2a)________ , but often this is gained at the price of _____(2b)____________.

Choices for 2a:
* Reduce long-term memory load
* Reduce short-term memory load
* Avoid distraction
* Prevent cognitive dissonance
* All of the above

Choices for 2b:
* sacrificing information hiding
* slowing down very frequent users
* making the program harder for novice users to learn
* $2.50 plus sales tax in New York

3. If a programmer forgets to implement a required feature, is white box testing likely to be more or less effective than black box testing in revealing that error? Why? [30 words or less]

4. Which of the following is not an advantage of designing test cases as early as possible
a) Identifying ambiguous requirements
b) Reducing schedule uncertainty near the end of a project
c) Making full use of implementation details in test case design
d) Influencing design decisions to make testing more efficient
(Optionally, you may explain your answer in 25 words or less)

5. A common mistake in performance engineering is
a) Failing to set concrete, rational performance goals based on the way the software will actually be used
b) Optimizing the wrong parts of programs
c) Wasting effort on low-level code improvements when more leverage is available in changing the specification, key data structures, or algorithms
d) all of the above


Michal Young / $Id: midterm-2.html,v 1.2 2004/06/05 18:42:20 michal Exp $