Assignment Information

Please note that all assignment due dates for un-released assignments are tentative and subject to change.

Homework 1 A/B

  • Posted: Thursday, August 30th by 12 noon.
  • Due:
    • Part A: Monday, September 5th at 11:59 p.m.
      • Will not be marked late until Wednesday, September 7th for people who add the course late.
    • Part B: Friday, September 9th at 11:59 p.m.

Assignment: 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

  • Posted: Friday, September 9th at 11:59 a.m.
  • Due: Thursday, September 15th at 11:59 p.m.

Assignment: 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

  • Posted: Thursday, September 15th by 12 noon
  • Due: Thursday, September 29th at 11:59 p.m.

Assignment: 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

  • Posted: Friday, September 30th by 12 noon
  • Due: Friday, October 14th at 11:59 p.m.

Assignment: 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

  • Posted: Friday, October 14th, by noon
  • Due: Friday, October 28th, at 11:59p.m.

Assignment: 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

  • Posted: Thursday, October 20th, by noon.
  • Due: Thursday, November 10th, at 11:59 p.m..

Assignment: 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

  • Posted: Thursday, November 10th, by noon
  • Due: Tuesday, November 22nd, by 11:59 p.m.

Assignment: Building the Business Logic Layer and the Data Layer of a replacement for the Lou’s List Application

Topics:

  • Web APIs and JSON
  • Design patterns
  • Data persistence with JDBC and SQLite

Homework 7

  • Posted: Thursday, November 17, by Noon
  • Due: Tuesday, December 6, by 11:59 p.m.
    • No late submissions accepted after Friday, December 9th at 11:59 p.m.

Assignment: 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