Final Exam Study Guide

The final exam will cover all the material that was covered in class, and the sprints. This includes material that was presented in class, as well as all the readings.

To view the types of questions that you can expect for the exam, scroll to the end.

  1. Java

    • Know the basics of Object Oriented Programming
    • Know the fundamentals of the Java language
    • Know the SOLID design principles, and how to apply them.
  2. User Stories

    • Know the format for a user story
    • Know how to evalute user stories using the INVEST principles
  3. Testing

    • Know the difference between validation and verification
    • Know the basics of the JUnit test framework
    • Know what a unit test is, and how to write them using the JUnit framework
    • Know the difference between blackbox and whitebox testings
    • Know how to write test cases (input and expected outputs) for a system, using blackbox and whitebox testing.
    • Know the different types of coverage (statement, branch, path), and how to calculate them
  4. UI design

    • Know the Nielsen Usability Goals
    • Know how to perform a heuristic evaluation
    • Know the different types of prototypes (paper, low-res, high-res), pros and cons, and when to use them
    • Know what personas are and how to use them
  5. Code smells and refactorings

  6. CRC Cards

    • Know the format of a CRC card, and how to use them to derive an initial design of a system
  7. UML

    • Know the different types of UML diagrams we covered in class
    • Know how to draw a Class and Sequence diagram
    • Know how to interpret a UML diagram, and translate it into working Java Code.
  8. Design Patterns

    • Know the different Designs Patterns we covered in class, when and how to use them
    • Identify design patterns in existing code bases
  9. Software Architecture

    • Know the different types of Architectural Patterns
    • Know how to select an architecture, given a set of constraints
  10. Software Development Lifecycle

    • Know the different processes that are used to manage software projects
    • Know the pros and cons for each of them
    • Select a process, based on a set of constraints.
  11. Project Management

    • Know different techniques for project management (WBS, Gantt Chart, etc)
    • Know the role estimates play in project management
    • Know how to evaluate a risk
  12. Software Quality

    • Know the different metrics used to measure the quality of a product

Question types

There will be a design question. Starting from a short description (similar to the Design Fest activity in class, but smaller), you will need to design a system. This includes writing user stories (following the 3C format), CRC Cards and UML diagrams (Class and Sequence)

There we be some OO design questions. You would have to evaluate a small snippet of code (~20 lines) to see if it violates any of the SOLID principles. If it does, you will need to provide a refactoring of the code, to remove the violation.

There will be questions about testing. You will have to choose a testing techinque (blackbox or whitebox), and write a few (4-5) test cases. You also need to know different types of coverage, and how to write code to achieve a certain coverage (e.g. achieve 100% line coverage for a method).

Finally, there will be an short questions that will cover the rest of the material. The answers for these questions will be 1-2 sentences at most.