Final Review
"I have fought the good fight, I have finished the race, I have kept the faith." — 2 Timothy 4:7
The Final Is Next Week
If you have done the reps in Chapters 9–15 — your stewardship account, your apologetics library, your chain of witnesses, your argument case file, your Java migration — the final is going to feel like another project. One you've done many small versions of already.
If you have not, this is the same warning as Chapter 8 was for the midterm. There is no substitute for the reps. The exam room is honest in a way the rest of the semester usually isn't.
What the Final Tests (general shape)
- Define an abstract base class with at least one abstract method.
- Define two or more concrete subclasses with
@Override. - (Medium) Define one or more interfaces that cut across the hierarchy.
- (Hard) Define a container class that orchestrates a sequence of polymorphic operations.
That's Pilgrim's Journey. The exact prompt is sealed until exam time, but the shape is the widget above.
Top Bugs to Recognize
==on Strings — use.equals()- Missing
@Override— method becomes new instead of override ArrayList<int>— useIntegerNullPointerException— some reference was nullArrayIndexOutOfBoundsException— off-by-one on boundssuper(args)not first in constructor — compile error- Trying to instantiate an abstract class — make it concrete or use a subclass
- Wrong filename for a public class —
Combatant.javaforpublic class Combatant
Exam Rules
60 minutes. Closed-book, closed-internet, closed-AI. Your own textbook and project files are permitted. The exam project is P14: Pilgrim's Journey Engine.
How to Spend This Week
- Days 1–2: Re-do the 3 hardest reps from each Chapter 9–15.
- Days 3–4: Work through the combination drills in the Chapter 16 reps.
- Day 5: Do the sample final from blank. Open
code/SampleFinal.java, read the prompt, close the file, solve in 60 minutes. - Day 6: Read your Project 13 migration. Note what Java does for you and what it doesn't.
- Day 7 (exam day): Light review. Re-read the bug list. Eat. Show up rested.
Coach's Final Word — Programming, like every craft, will require practice for the rest of your life if you want it to stay sharp. The skill you have at the end of this course is real but young. The students who keep it are the ones who keep using it — side projects, internships, problem-solving puzzles, anything that puts the keyboard in their hands.
If the apologetics theme has spoken to you, the same is true there. You can finish a semester of intro apologetics readings. The questions come back, year after year, in the lives of the people around you. The skill of being able to think carefully about a hard question — and to type cleanly while you do it — is a skill you'll get to use for the rest of your life, if you keep it.
Show up rested. Trust your training. Submit something honest.
Final Self-Check
Encounter should be...name, intensity) and shared concrete methods (getName), plus an abstract engage that subclasses must implement. Pure interface would lose the shared state. A regular class would let someone instantiate new Encounter() with no engagement behavior — wrong. Trial implements Testing but not Strengthening. Companion implements Strengthening but not Testing. Mentor implements both. They don't share a parent — interfaces let them all qualify for the right code paths. engage() on each Encounter, and each subclass's override handles its own logic. The first option (instanceof + manual dispatch) defeats the whole point of polymorphism. The Project 14 rubric explicitly rejects instanceof in the main loop for the Normal tier.