Skip to main content

CS 3100: Program Design and Implementation II

Lecture 39: Final Review

©2026 Jonathan Bell, CC-BY-SA

This deck reflects one section’s final

Final exam structure and topics can differ by instructor. What follows is specific to Prof. Bell’s section—other sections should follow their instructor’s guidance.

Before We Start: Assignment Reminders

GA2: Feature Buffet — due TONIGHT at 23:59. Process over product. A well-documented partial feature with meaningful PRs, design evolution, and thoughtful reflection scores higher than a complete feature with no documentation. Submit what you have.

GA3: Final Report — due Monday April 20 at 23:59. This is your team's final submission: demo video, final reflection, sustainability assessment, and individual reflections. The reflection questions must be in your own words (not AI-generated). Start the video and reflections this weekend — don't leave it to Monday.

Final Exam: What to Expect

Details
WhenApril 22, 1:00–3:00 PM
WhereWest Village F 020
Format25 multiple choice + 3 open-ended case studies
CoverageCumulative (L1–L36), emphasis on material since Exam 2 (L23–L36)
What to bringJust a pen or pencil. No notes, no devices.

Multiple choice: Same style as Exam 1 and Exam 2. One best answer. Designed to test understanding, not memorization — you won't need to know exact API signatures.

Case studies: Extended scenarios (like the practice exam). You read code, analyze designs, propose improvements. Partial credit for reasoning — show your thinking.

Parsons problems: Some questions give you scrambled lines of code and ask you to put them in the correct order. You don't need to write code from scratch.

Warm-Up: Where Do You Need Help?

Open Poll Everywhere.

Practice Exam Walkthrough

Let's work through a few problems together. These are representative of the kinds of reasoning the exam tests.

Strategy: For multiple choice, eliminate wrong answers first. For case studies, name the concept before applying it — "this is a coupling problem" or "this violates LSP" — then explain why.

Example: The Race Condition (Practice Q15)

private int deviceCount = 0;
public void registerDevice() { deviceCount++; }
// 10 threads each call registerDevice() once

deviceCount++ is three operations: read → increment → write.

StepThread AThread BdeviceCount
1reads 33
2reads 33
3writes 44
4writes 44 (not 5!)

Answer: D. Two threads read the same stale value → one increment is lost. Fix: AtomicInteger or synchronized.

Example: The Latency Budget (Practice Q22)

A profile shows: hub computation 5ms, 15 sequential Zigbee commands 3000ms, state update 2ms, network round-trip 50ms. A developer proposes optimizing hub computation from O(n) to O(log n).

ComponentTime% of total
Hub computation5ms0.16%
Zigbee commands3000ms98.1%
State update2ms0.07%
Network round-trip50ms1.64%

Answer: D. Zigbee commands dominate at 98%. Optimizing 5ms → 2ms saves 3ms out of 3057ms. The developer is optimizing the wrong thing. Profile before you optimize (L34).

Example: Case Study Approach (Practice CS1, Part D)

"Explain why the MVVM ViewModel is more testable than the MVC Controller, using the terms observability and controllability."

Template for answering case study questions:

  1. Name the concept: "Testability requires observability and controllability (L16)."
  2. Define it briefly: "Observability = can I see the output? Controllability = can I set the inputs?"
  3. Apply it: "The ViewModel exposes servingsProperty() (controllable — set it to any value) and getFormattedIngredients() (observable — read the result). No JavaFX needed."
  4. Contrast: "The MVC Controller requires a running JavaFX Application Thread to access @FXML fields — low controllability, low observability."

On the exam: Name the concept → define it → apply it → contrast if asked. Partial credit comes from the first two even if you get the application wrong.

Your Questions

What do you want to go over?

Ask about specific practice problems, concepts, or exam strategy.

Course Retrospective: Help Us Build Next Year's Version

This was the first semester of CS 3100. Nearly everything was new — lectures, labs, assignments, tools. We want to tell you what we're considering changing, and hear what you think.

This is not hypothetical. We will use your input to decide what changes for next year. The end-of-semester survey gives us data. This conversation gives us context.

Ideas We're Considering — React to These

What we might changeWhy we're considering itWhat we'd lose
Make A2–A5 pair-optional (work alone or with a partner)Solo assignments are isolating; pair work builds collaboration skills earlierIndividual accountability — harder to ensure both partners learn
Start the group project 2 weeks earlierTeams felt rushed; more time for design sprint and iterationSomething else gets cut or compressed — what?
Rework Labs 1–3 to better prepare for assignmentsToo many students hit avoidable issues (.Java vs .java, project structure, tooling)Current lab content (polymorphism exploration, dev toolkit)
Add a "checkpoint" system for individual assignmentsCatch struggling students earlier; provide feedback before final submissionGrading load increases; may feel like micromanagement
Reduce the number of individual assignments from 5 to 4Free up a week for the group project or for a deeper architecture exerciseLess individual practice before team work

What Else Should Change?

Open floor: what worked, what didn't, what should we add, what should we cut?

Some prompts if you're not sure where to start:

  • What was the most useful lab? The least useful?
  • Was there a lecture that clicked — or one that felt like wasted time?
  • How did the AI policy progression (restricted → structured → encouraged) work for you?
  • Was the CookYourBooks domain interesting enough to sustain 5 assignments?
  • What do you wish we'd told you in Week 1?

Final Poll: The Semester in Review

Open Poll Everywhere. Last time this semester.

Q1: What was the single most valuable thing you learned in CS 3100? (Word cloud — type one thing)

Q2: If you could go back to Week 1, what advice would you give yourself? (Open response)

Q3: Would you recommend CS 3100 to a friend?

  • Absolutely — one of the best CS courses I've taken
  • Yes, with caveats — good content but [something] needs work
  • Neutral — it was fine
  • Probably not — I didn't get much out of it

Thank you.

You built software that works. You learned to think about software that lasts.

That's software engineering.

Good luck on the final. You're ready.

End-of-semester survey: please complete it — your feedback builds next year's course. Please consider completing TRACE, too.