Final Exam

Study guide for the Final Exam

Where and When

  • Where: Congdon Hall 2006
  • When: Tuesday, Dec 9, 11:30am-2:30pm
    • The exam is not designed to be 3 hours long, but you will have the entire 3 hours at your disposal.
  • Other
    • Please eat a snack before the exam. Eating in the lab is not permitted.
    • Bring a water bottle.
    • You may listen to music using headphones/earbuds at a volume that does not disturb others.

Exam Format and Rules

  • A mix of multiple choice, fill-in-the-blank, and long answer questions.
  • You may be asked to program in PyCharm or edit code snippets by hand.
  • You may use up to 4 sheets (2 pages front and back) of hand-written notes. No other resources are permitted.
  • Honor Code violations on the final exam result in a course grade of F.
  • Failure to submit the final exam results in a course grade of F.

Content

  • Describing the phases of the Software Lifecycle (Week 3) and how they are organized into Software Process Models (Week 16).
  • Describing Operating Systems concepts and using basic CLI Commands (Week 2).
  • Writing a good Problem Statement (Week 4) when provided a high-level description of the program goals.
  • Creating a control flow graph for a given function and using it to identify the unique program paths. See also Assignment 2 - Unit Testing and sample questions from Quiz 2.
  • Writing or analyzing unit tests for a given function, including:
    • assert statements
    • computing line coverage by hand
    • testing if exceptions are raised using pytest functions
    • See Quiz 2 and Quiz 4 for sample problems.
  • Identifying violations of coding and documentation conventions
  • Describing version control concepts and applying them to given scenarios:
    • Creating a visual diagram like this one showing the state of Git repos (a) after running a set of Git commands, or (b) based on git log output.
    • Entering the appropriate git command or sequence of commands for common scenarios, such as creating a new version, staging changes, creating a new branch, merging, and interacting with the remote repository.
    • Explaining the proper process of merging branches, including in the presence of merge conflicts.
    • Resolving merge conflicts in a given block of code while preserving functionality.
  • Applying the five code-level design rules as in the meteoric assignments and Quiz 4.
Last modified December 1, 2025.