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