CS121 Midterm Exam

Spring 2011




This is a take-home closed-book and closed-note exam. You are allowed one hour and fifteem minutes from the time you first view the exam until the time you complete the exam. Please email me an electronic version of your solutions in a text file or a word document. Include your name and the date/time when you started and finished the exam. Each question is worth 10 points. Keep your answers brief and to the point.

  1. Explain the major differences between the waterfall process and agile methods and the types of projects for which each is most appropriate.

  2. What types of requirements are there beyond functional ones?

  3. How can "big requirements up front" (BRUF) lead to waste?

  4. Describe four design principles for user interfaces.

  5. Briefly describe UML and why it is useful in software design.

  6. What does it mean to encapsulate change? How does following this principle lead to better software?

  7. Explain what "low coupling and high cohesion" means. How does following this principle lead to better software?

  8. Describe one design pattern other than the singleton. What problem does it solve? How can it help improve design?

  9. Explain the differences between white box, gray box, and black box tests? What are their advantages and disadvantages?

  10. What is code coverage? Can we achieve 100% code coverage? Is that good?