CS314 Midterm-2 Study Guide

The midterm exam is on Friday, December 2, in class. You get 50 minutes to answer all the questions and get 50 points. This is a closed book, closed notes exam. No cheat-sheet, computers, or any other electronic devices are allowed. Use the following study guide to prepare for the exam.

DISCLAIMER:It is possible that something is missing in the description below, but that should not prevent you from answering questions on a topic that was discussed in class.


1. Study material

Material covered from Week 8 (i.e., starting from Domain Modeling) up to December 1 (Wednesday's lecture) is included in the exam. Refer to the following materials:

  1. Course slides
  2. Articles from reading assignments, design studios, and project planning meetings
  3. Videos that were part of assigned viewing

Practice answering the questions that you attempted in the Canvas quizzes. Review the Design Studios involving domain modeling and design patterns. You will be tested on your knowledge of concepts and how you use them.


2. Topics

  1. Domain modeling

    • Elements of a domain model (concepts as classes, attributes, and no operations; relationships between concepts as associations (with multiplicities and labels or association-end role names and self-associations), composition or aggregations, and generalization-specialization relationships.
    • Check whether a given instance (object) diagram conforms to the specification in a given clas diagram.
    • Given a description of a problem domain, create a domain model.

  2. Design patterns

    • List of patterns
      • Structural patterns
        1. Adapter (both class adapter and object adapter)
        2. Composite
        3. Proxy
      • Creational patterns
        1. Singleton
        2. Abstract Factory
      • Behavioral patterns
        1. Observer
      • Architectural
        1. Model-view-controller
    • Type of questions
      • Identify a pattern given a design/code
      • Suggest what pattern to use and give a high-level solution (e.g., list the classes you need, methods that will be added/changed
      • Fill in Java code in a code skeleton to use a pattern

  3. User interface design

    • No questions will be asked on technology specific issues (e.g, Java Swing)
    • Usability goals, how to frame questions
    • User experience goals, how to frame questions
    • Awareness of general interaction design principles
    • Identify why a provided UI has a bad design

  4. Software metrics

    • Understand the definictions of metrics discussed in class.
    • Be able to calculate them given a design/code/pseudocode.
    • For a previously unseen metric, for which you are given a precise definition, discuss what the metric tells you about a software product/process, and what might be problems with interpreting the metric.


3. Types of questions

This is a non-exhaustive list of the types of questions that you may get on the exam. It is possible that not all types are eventually included.

  1. Multiple-choice questions.
  2. Short answer questions on various topics.
  3. Create a UML class diagram showing a domain model.
  4. Demonstrate the use of a design pattern by filling in code in a provided program skeleton.
  5. Suggest what pattern to use and give a high-level solution (e.g., list the classes you need, methods that will be added/changed
  6. Given the definition of a new software metric (something that you have not seen before), discuss what it may be useful to show about your software process or product, and what might the problems be with using the metric.