CPSC 329 Software Development Fall 2022

CPSC 329 Schedule

Daily lessons are due by 8pm the night before the class 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/22-8/26

Topics:

  • course introduction and preliminaries
  • review of object-oriented concepts (objects, classes, inheritance)
  • core process: introduction to object-oriented analysis and design, approaches to implementation, choosing data structures
   

Mon Materials from class:  

Tue before lab, make sure you can log in to your Linux account - contact Prof Eck (eck@hws.edu) if you need an account or password reset lab 1
Preliminaries


should be completed by 8/29
 

Wed Modules: on Canvas - "preliminaries" (syllabus quiz and introductory survey) and "OOP review"

Daily lesson: on Canvas - "OOAD" (in the "core process" module)

Materials from class:


Fri Daily lesson: on Canvas - "implementation" (in the "core process" module)

Materials from class:

 

Week 2: 8/29-9/2

Topics:

  • debugging strategies and tactics
  • version control
  • GUI programming and JavaFX
 

Mon Daily lesson: on Canvas - "debugging and version control" (in the "core process" module)

Materials from class:

  project 1: Darwin's World
(OOP review)

due 9/14 at the start of class

Tue Lab preparation: on Canvas - review the videos in the "subclipse" module lab 2
SVN


due 9/6 at the start of lab

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

Materials from class:


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

In-class exercises:

Materials from class:


Week 3: 9/5-9/9

Topics: GUI programming - JavaFX, GUI design principles


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

In-class exercises:

Materials from class:


Tue lab 3
JavaFX


due 9/13 at the start of lab

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

Materials from class:


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

Materials from class:


Week 4: 9/12-9/16

Topics: GUI programming - GUI design process; working in teams; client-server programs - networking in Java


Mon Daily lesson: on Canvas - "uncovering requirements" (in the "GUI programming" module)

Materials from class:


Tue lab 4
SVN II


due 9/20 at the start of lab

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

Materials from class:

project 2: Fire!
(GUI design and implementation)

due 9/28 at the start of class

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

Materials from class:

  • slides: client-server programs (networking in Java, streams)
  • examples: Server.java, Client.java can be found in the "client-server networking" daily lesson on Canvas

Week 5: 9/19-9/23

Topics: client-server programs: protocols; thread basics


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

Materials from class:


Tue lab 5
Client-Server Networking


due 9/27 at the start of lab

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

Materials from class:


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

Materials from class:


Week 6: 9/26-9/30

Topics: applications of threads


Mon Materials from class:
  • slides: threads - thread safety (dealing with caching, mutual exclusion in practice)
  • examples: in-class exercises in the "mutual exclusion" daily lesson, "threads" module (on Canvas)

Tue lab 6
Client-Server Networking II


due 10/4 at the start of lab

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

Materials from class:

skills check
GUI programming

(in the Assignments section on Canvas)

due 9/30

review information

Fri project 3: Mastermind
(client-server networking and threads)

due 10/19 at the start of class

Week 7: 10/3-10/7

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


Mon [posted late - review if you have a chance before class]
Daily lesson: on Canvas - "basic principles" (in the "OOAD" module)

Materials from class:


Tue lab 7
OOAD Tools


due 10/18 at the start of lab

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

Materials from class:


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

Materials from class:


Week 8: 10/10-10/14

Topics: OOAD - designing for flexibility


Mon fall break
Tue

Wed Materials from class:

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

Materials from class:


Week 9: 10/17-10/21

Topics: OOAD principles and patterns - LSP, favoring composition over inheritance; separation of concerns, MVC, Observer


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

Materials from class:


Tue lab 8
Encapsulate What Varies


due 10/25 at the start of lab

Wed Daily lesson: on Canvas - "separation of concerns" (in the "OOAD" module)

Materials from class:

skills check
networking and threads

(in the Assignments section on Canvas)

due 10/21

review information

Fri Materials from class: project 4: Cellular Automata
(OOAD)

due 11/4 at the start of class

Week 10: 10/24-10/28

Topics: separation of concerns, MVC; patterns for non-tangible classes; coding practices


Mon Materials from class:

Tue lab 9
Separation of Concerns and MVC


due 11/1 at the start of lab

Wed Daily lesson: on Canvas - "patterns for non-tangible classes" (in the "OOAD" module)

Materials from class:


Fri Daily lesson: on Canvas - "coding practices" (in the "implementation" module)

Materials from class:


Week 11: 10/31-11/4

Topics: coding practices; code smells; testing


Mon Materials from class:

Tue lab 10
Scene Builder


due 11/8 at the start of lab

Wed Daily lesson: on Canvas - "code smells" (in the "implementation" module)

Materials from class:

  • slides: code smells
  • in-class exercises (on Canvas, under "code smells" in the "implementation" module)

Fri Daily lesson: on Canvas - "testing I" (in the "implementation" module)

Materials from class:

skills check

(in the Assignments section on Canvas)

due 11/7

review information

Week 12: 11/7-11/11

Topics: testing; development process; patterns - Decorator


Mon Daily lesson: on Canvas - "development process" (in the "implementation" module)

Materials from class:

final project: Hedgehogs in a Hurry

due 12/2 11:59pm

Tue lab 11
Clean Code


due 11/15 at the start of lab

Wed Daily lesson: on Canvas - "testing II" (in the "implementation" module)

Materials from class:


Fri Daily lesson: on Canvas - "Decorator" (in the "advanced topics" module)

Materials from class:


Week 13: 11/14-11/18

Topics: patterns - Visitor, Factory; thread coordination


Mon Daily lesson: on Canvas - "Visitor" (in the "advanced topics" module)

Materials from class:


Tue lab 12
JUnit


due 11/22 at the start of lab

Wed Daily lesson: on Canvas - "Factory" (in the "advanced topics" module)

Materials from class:


Fri Daily lesson: on Canvas - "thread coordination" (in the "advanced topics" module)

Materials from class:


Week 14: 11/21-11/25

Topics: thread coordination


Mon Materials from class:
  • slides: threads recap
  • in-class exercises (on Canvas, under "thread coordination" in the "advanced topics" module)

Tue lab 13
More Patterns





due 12/2 at the start of class

Wed Thanksgiving break
Fri

Week 15: 11/28-12/2

Topics: work on project


Mon
meet in Lansing 310

Tue work on lab 13 or project

Wed
meet in Lansing 310

Thu
  • office hours 2:30-4:30pm

Fri
meet in Lansing 310
 

Reading Period: 12/3-12/5

 

Sat   skills check
and
final reflection

(in the Assignments section on Canvas)

due 12/6 11:30am

review information: skills check and reflection

Sun  

Mon
  • office hours 1:30-3:30pm

Final Exams: 12/6-12/9

 

Tue end-of-semester deadline
no work accepted after 12/6 11:30am

Wed    

Thu    

Fri