Homework 1 A/B
Objective: Apportion representatives in the US House or Representatives based on Census Data
Topics:
- Ensure prerequisite Java knowledge
- Designing a system
- using git, GitHub and gradle
- Planning for change
Homework 1C
Objective: Evolve your Java program to respond to new requirements, adding new features to Homework 1
Topics:
- Responding to change
- Evolving a code base
- Using an external Java library (poi)
Homework 2
Objective: Given an imcomplete Wordle program, fix a bug or two, refactor existing methods, and write tests for a planned featured.
Topics:
- Refactoring with Extract Methods and Extract Class
- JUnit 5
- White-box Testing
- Debugging
- Black-box Testing
Homework 3
Objective: Given a professor written solution to Homework 1B, reimplement Homework 1C adhering to design constraints. Refactor several complicated functions with Java Streams. Test existing code for an unfinished feature.
Topics:
- Understandability and Refactoring
- Practical usage of polymorphism
- Java Streams and Lambda Bodies
- Starting to nail down what we mean by “good design”
Homework 4
Objective: Begin developing the Business Logic of a Course Registration System. You won’t have real data, so you will need to use Mockito to help you develop.
Topics:
- Testing with Mockito
- OO Design Principles
- Refactoring/Rewriting code to fix design issues
- UML Class Diagrams
Homework 5
Objective: Implement an alternative GUI for a completed command line UI Wordle Game from HW2 using JavaFX
Note that this assignment is released while we are covering JavaFX. However, you will still have two weeks after Homework 4 to complete it.
Topics:
- JavaFX
- MVC
- Portability
Homework 6
Objective: Building the Business Logic Layer and the Data Layer of a replacement for a Bus Routing System.
Topics:
- Web APIs and JSON
- Design patterns
- Data persistence with JDBC and SQLite
Homework 7
Objective: Build a command line User-Interface course review application from scratch. The program uses a Three-Layer Architecture with SQLite for Persistence. Extra Credit: All features of the app function with a GUI
Topics:
- A “capstone” assignment on the course
- Building a large, multi-feature system
- Three-layer architecture
- Design Patterns
- JDBC or Hibernate