CPSC 329 Software Development Fall 2020

CPSC 329 Schedule

Daily lessons are due by 8pm the night before the class/lab period where they are listed.

Things in light gray have not been assigned yet; they are listed for planning purposes and dates may shift slightly.

 Assignments

Week 1: 8/24-8/28

Topics: course introduction; review of OOP concepts; basic OOAD; approaches to implementation; choosing data structures

   

Mon    

Tue   lab 1
Preliminaries


should be completed by 8/31
 

Wed Daily lesson: on Canvas - "OOP and OOAD basics" in the "OOP review" module

Materials from class:

 

Fri Daily lesson: on Canvas - "data structures and implementation approaches" in the "OOP review" module

Materials from class:

 

Week 2: 8/31-9/4

Topics: debugging strategies and tactics; version control; JavaFX

 

Mon Daily lesson: on Canvas - "debugging and version control" in the "OOP review" module

Materials from class:

  • slides - debugging, version control
  project 1: Darwin's World
(OOP review)

Tue   lab 2
SVN


due 9/8 at the start of lab

Wed Daily lesson: on Canvas - "JavaFX" in the "GUI programming" module

Materials from class:


Fri Daily lesson: on Canvas - complete "JavaFX muddiest points I" in the "GUI programming" module

Materials from class:

  • slides - muddiest points (SVN and JavaFX)

Week 3: 9/7-9/11

Topics: JavaFX; GUI design principles and process


Mon Daily lesson: on Canvas - complete "JavaFX muddiest points II" in the "GUI programming" module

Materials from class:

  • slides - muddiest points (JavaFX)

Tue   lab 3
JavaFX


due 9/15 at the start of lab

Wed Daily lesson: on Canvas - complete "screen design principles" in the "GUI programming" module

Materials from class:

  • slides - screen design principles
  • slides - screen design examples

Fri Daily lesson: on Canvas - complete "UI design principles" in the "GUI programming" module

Materials from class:


Week 4: 9/14-9/18

Topics: uncovering UI requirements; working in teams; networking in Java


Mon Daily lesson: on Canvas - complete "uncovering UI requirements" in the "GUI programming" module

Materials from class:

  • slides - UI design process
  • slides - klondike UI design exercise

Tue   lab 4
SVN II


due 9/22 at the start of lab

Wed Daily lesson: on Canvas - complete the "teamwork" module

Materials from class:

  • slides - teamwork considerations
project 2: Fire!
(GUI programming)

Fri Daily lesson: on Canvas - complete "client-server networking" in the "client-server networking" module

Materials from class:


Week 5: 9/21-9/25

Topics: protocols; threads


Mon Daily lesson: on Canvas - complete "protocols" in the "client-server networking" module

Materials from class:


Tue   lab 5
Client-Server Networking


due 9/29 at the start of lab

Wed Daily lesson: on Canvas - complete "threads" in the "threads" module

Materials from class:


Fri Daily lesson: on Canvas - complete "mutual exclusion" in the "threads" module

Materials from class:


Week 6: 9/28-10/2

Topics: applications of threads in client-server programs and GUI programs


Mon

Tue   lab 6
Client-Server II


due 10/6 at the start of lab

Wed Daily lesson: on Canvas - complete "GUI programs and threads" in the "threads" module

Materials from class:

skills check
GUI programming

review information

(in the Assignments section on Canvas)

Fri Materials from class:
  • slides - project 2 teamwork debrief; GUI client exercise

Week 7: 10/5-10/9

Topics: OOAD - basic principles, designing for flexibility and reuse


Mon Daily lesson: on Canvas - complete "basic principles" in the "OOAD" module

Materials from class:

  • slides - OOAD basic principles
project 3: Mastermind
(client-server networking and threads)

Tue   lab 7
OOAD Tools


due 10/13 at the start of lab

Wed Daily lesson: on Canvas - complete "designing for reuse" in the "OOAD" module

Materials from class:

  • slides - designing for reuse (loose coupling, Law of Demeter, code to the interface)

Fri Daily lesson: on Canvas - complete "designing for flexibility" in the "OOAD" module

Materials from class:

  • slides - designing for flexibility (OCP, encapsulate what varies)

Week 8: 10/12-10/16

Topics: designing for flexibility, alternatives to inheritance


Mon Daily lesson: on Canvas - complete "inheritance" in the "OOAD" module

Materials from class:


Tue   lab 8
Encapsulate What Varies


due 10/20 at the start of lab

Wed Materials from class:
  • slides - encapsulating what varies for maze solver, subclassing vs composition

Fri Daily lesson: on Canvas - complete "Strategy" in the "OOAD" module

Materials from class:


Week 9: 10/19-10/23

Topics: separation of concerns, MVC, Observer


Mon Daily lesson: on Canvas - complete "separation of concerns" in the "OOAD" module

Materials from class:

  • slides - duck pond example (encapsulate what varies)
skills check
client-server networking and threads

review information

(in the Assignments section on Canvas)

Tue   lab 9
Separation of Concerns


due 10/27 at the start of lab

Wed Materials from class:
  • slides - project 3 teamwork debrief
project 4: Cellular Automata
(OOAD)

Fri Materials from class:
  • slides - project 4 notes, MVC, Observer

Week 10: 10/26-10/30

Topics: patterns for GUI and client-server programs; coding practices, clean code


Mon Daily lesson: on Canvas - complete "patterns for non-tangible classes" in the "OOAD" module

Materials from class:

  • slides - patterns for non-tangible classes

Tue   lab 10
Scene Builder


due 11/3 at the start of lab

Wed Daily lesson: on Canvas - complete "coding practices" in the "implementation" module

Materials from class:

  • slides - defensive programming, clean code

Fri Materials from class:

Week 11: 11/2-11/6

Topics: code smells; testing


Mon Daily lesson: on Canvas - complete "code smells" in the "implementation" module

Materials from class:


Tue   lab 11
Clean Code


due 11/10 at the start of lab

Wed Daily lesson: on Canvas - complete "testing I" in the "implementation" module

Materials from class:

skills check
object-oriented analysis and design

review information

(in the Assignments section on Canvas)

Fri Daily lesson: on Canvas - complete "development process" in the "implementation" module

Materials from class:

  • slides - teamwork and process
final project: Hedgehogs in a Hurry

Week 12: 11/9-11/13

Topics: testing; patterns - Decorator, Visitor


Mon Daily lesson: on Canvas - complete "testing II" in the "implementation" module

Materials from class:


Tue   lab 12
JUnit


due 11/17 at the start of lab

Wed Daily lesson: on Canvas - complete "Decorator" in the "advanced topics" module

Materials from class:


Fri Daily lesson: on Canvas - complete "Visitor" in the "advanced topics" module

Materials from class:


Week 13: 11/16-11/20

Topics: patterns - Factory; thread coordination


Mon Daily lesson: on Canvas - complete "Factory" in the "advanced topics" module

Materials from class:


Tue   lab 13
More Patterns


due 11/24 at the start of lab

Wed Daily lesson: on Canvas - complete "thread coordination" in the "advanced topics" module

Materials from class:

  • slides - thread coordination
  • in-class exercises (on Canvas)

Fri

Week 14: 11/23-12/2

Topics: wrapup; work on project


Mon In class: work on final project

Tue work on final project in lab

Wed Thanskgiving break
Fri

Mon Materials from class:
  • in-class exercises (on Canvas)

Tue   no lab
(Thu schedule)

Wed Materials from class:
  • slides - discussion of lab 13 in class exercises

Reading Period: 12/3-12/6


Thu  

Fri  

Sat   skills check
coding practices

final reflection

review information: skills check, reflection

(in the Assignments section on Canvas)

Sun  

Exams: 12/7-12/11


Mon  

Tue  

Wed
scheduled final exam time
12/9 1:30-4:30pm
end-of-semester deadline
no work accepted after 12/9 4:30pm

Thu

Fri