CompSci 308
Spring 2024
Advanced Software Design and Implementation

You don’t start out writing good stuff. You start out writing crap and thinking it's good stuff, and then gradually you get better at it. That's why I say one of the most valuable traits is persistence. — Octavia E Butler

Submitting Your Work

Project deliverables must be submitted using GIT by 3:08am ET in the morning on the day after that given on the course Calendar (effectively a few extra hours grace time past midnight).


  1. Breakout (individual)
  2. Cell Society (teams of 2-3)
  3. SLogo (teams of 4-5)
  4. OOGASalad (teams of 7)
Individual Weekly Journals


Developing software is about more than just the code that makes the program run, so each project must have

Course Software

Projects in this course will use:

 Programming Language   OpenJDK
 Open Source version of Java 17 LTS which includes OpenJFX (Full version)
 GUI Framework  OpenJFX
 formerly JavaFX
 Open Source, modern, UI toolkit for Java that works for desktop, mobile, and embedded apps
 any of its add ons that build the code for you are not allowed (specifically, using FXML or SceneBuilder)
 no Swing classes should be used
 Development Environment  IntelliJ Ultimate  Integrated Development Environment (IDE) with features that support writing well-designed code
 free for students and strongly recommended, but not required
 Version Control  GIT  Open Source, industry standard, software to support working in teams
 many commercial and academic servers exist to host GIT code repositories
 Repository Host  coursework  Duke CompSci managed GIT server
 Documentation Format  Markdown  Open Source, industry standard, general purpose plain text format that can be transformed into any other document format
 supported directly within IntelliJ or using this web-based, shared, editor (sign-in required)