The path¶
Fourteen weeks, four modules, and one application that grows the whole way. Each module opens the week we reach it, so you can always see where you are and what is coming.
Objects and State¶
You stop writing lists of instructions and start building things that hold their own data.
Tools and first codeClasses and objectsState and behaviourHolding many objects
By the end you can
- Turn a description of a problem into a set of classes
- Explain what a reference actually points at, and why that matters
- Keep a collection of your own objects and work through it
Open module Sprint 1 opens in week 4
Designing with Objects¶
One class is easy. The skill is deciding how classes relate to each other, and knowing when the popular answer is the wrong one.
Objects working togetherOne job per classInheritance, and when not toInterfaces and polymorphism
By the end you can
- Decide which class owns a piece of work, and which only asks for it
- Make two objects holding the same data count as equal
- Choose between inheritance and composition, and say why
- Write code against an interface instead of a specific class
Opens in week 5
Sprint 2 opens in week 8
Robust and Modern Java¶
Code that survives bad input, saves what it made, and proves it works. This is where your programs start behaving like real software.
When things go wrongProving it worksData that outlives the programLambdas and streams
By the end you can
- Fail honestly with a clear message instead of crashing
- Write tests before you claim something works
- Save your data and load it back next time
- Do in three lines what used to take fifteen
Opens in week 9
Sprint 3 opens in week 12
Building an Application¶
You put a window on the program you have been growing all semester. If the design underneath is good, this part is quick. That is the whole lesson.
Maven and your first windowConnecting it, then shipping it
By the end you can
- Build a desktop application people can open and use
- Connect what happens on screen to the objects underneath
- Package it so it runs on someone else's machine
Opens in week 13
Sprint 3 due in week 14
The three sprints¶
One application. You do not start over, you keep going.
-
Sprint 1 · weeks 4 to 7
Your first working program, built from classes you designed yourself. It runs in the console and it does something real.
-
Sprint 2 · weeks 8 to 12
The same program, redesigned now that you know what a weak design costs. It saves your data, it handles mistakes, and it has tests.
-
Sprint 3 · weeks 12 to 14
The same program again, with a window on top and packaged so you can send it to someone.
What you walk away with¶
-
Thinking in objects
- Turn a problem description into classes
- Know what a reference points at
- Read an error and find the cause
- Keep and work through collections
-
Design judgement
- Identity and equality that behave
- Inheritance or composition, on purpose
- Program to an interface
- Model a domain with records and enums
-
Software that holds up
- Handle failure honestly
- Test your own work with JUnit
- Read and write files safely
- Process data with streams
-
Shipping it
- Build and manage dependencies with Maven
- Build a desktop application
- Package it so others can run it
- Keep a project on GitHub worth showing
Ready to start?