CPSC 329 Software Development Fall 2019

CPSC 329 Schedule

Reading and class prep exercises are to be done for the class period where they are listed.

Things in light gray have not been assigned yet; dates may shift slightly.

 Assignments

Week 1: 8/26-8/30

Topics: course introduction; version control and SVN workflow; approaches to implementation

   

Mon Slides:    

Tue   lab 1
Preliminaries
 

Wed Reading:
  • An introduction to version control

  • Version Control with Subversion (version 1.8), chapters 1, 2, and 4
    This is a lot of technical material, and you do not need to read it all at once (or before Wednesday's class) - instead look at it over the next week or so, as we talk about SVN in class and you use it in lab next week. When you do read it, read it like reference material and also note that it covers the commandline SVN client rather than Eclipse plugin that we'll use. This means that you should read for the concepts - what is the key terminology, what is Subversion's approach to version control, what are the operations, what is the typical workflow, what are the best practices - rather than the details of commands and syntax.

Slides:

 

Fri Slides:

Week 2: 9/2-9/6

Topics: coding practices; verification and validation

 

Mon Slides:
  • code practices (defensive programming, code instrumentation, clean code)
 

Tue   lab 2
SVN
 

Wed Slides:  

Fri Slides: project 1A
Pente Core

Week 3: 9/9-9/13

Topics: verification and validation; elements of effective teamwork


Mon Slides:
  • testing (unit testing, test cases)

Tue   lab 3
JUnit

Wed Class Prep: on Canvas

Slides:

  • testing (JUnit, automating testing)

Fri Slides:

Week 4: 9/16-9/20

Topics: GUI programming in Java, JavaFX; basic process


Mon Reading:
  • chapter 6 and chapter 13 of Introduction to Programming Using Java, D. Eck
    Read for an understanding of event-driven programming and the fundamental concepts of JavaFX (chapter 6). Chapter 13 covers more advanced aspects of JavaFX - you should read sections 13.2.4 and 13.4.1 and look through the rest to see what is there, but for the most part the material is optional and you do not need to read/learn it as carefully as chapter 6.

Slides and Examples:


Tue   lab 4
JavaFX I

Wed Slides:

Fri Slides: project 1B
Code Review and Design Assessment

Week 5: 9/23-9/27

Topics: program design: design principles, appropriate use of inheritance, designing for flexibility and reuse


Mon Slides:

Tue   lab 5
JavaFX II

Wed Slides:

Fri Reading:

Class Prep: on Canvas

Slides:

project 1C
Pente Core - Variations

Week 6: 9/30-10/4

Topics: designing for flexibility and reuse


Mon Slides:

Tue lab 6
Encapsulate What Varies

Wed Slides:

Fri Slides:

Week 7: 10/7-10/11

Topics: designing GUI programs; GUI design principles


Mon Reading:

Slides:


Tue   lab 7
UML Tools

Wed Reading:
If you are short on time, concentrate on these first three links. Read for the key ideas rather than the details of every guideline. This is especially true for the UX checklist. This is primarily a reference - look over it briefly to see what kinds of things it has to say, but refer to the details later when you are actually making choices about these things.
  • Guidelines (detailed UX guidelines for Windows desktop applications)
The last things are worthwhile to read, but not essential if you have to prioritize.

Class Prep: on Canvas

Slides:

project 2
Pente!

(GUI design)

Fri Slides:

Week 8: 10/14-10/18

Topics: GUI program design and design patterns


Mon fall break
Tue

Wed Slides:

Fri Slides:

Week 9: 10/21-10/25

Topics: testing GUI programs; client-server networking; threads


Mon Slides and Examples:

Tue   lab 8
Scene Builder

Wed Reading:
  • section 11.4 of Introduction to Programming Using Java, D. Eck

Slides and Examples:

project 2
Pente!

(program)

Fri Reading:

Slides and Examples:


Week 10: 10/28-11/1

Topics: threads; designing client-server programs


Mon Slides and Examples:

Tue   lab 9
Client-Server

Wed Slides:

Fri Slides:

Week 11: 11/4-11/8

Topics: client-server programs; thread coordination


Mon Slides and Examples:

Tue   lab 10
GUI Client

Wed Slides and Examples: project 3
Ultimate Pente

(GUI review)

Fri In Class: project 3 - meet in Rosenberg 009

Week 12: 11/11-11/15

Topics: thread coordination; more design patterns


Mon Slides and Examples:

Tue   lab 11
Threads

Wed Slides:

Fri In Class: lab 11 (Threads) - meet in Rosenberg 009

Week 13: 11/18-11/22

Topics: more design patterns


Mon Slides:

Tue   lab 12
More Patterns

Wed Slides:

Fri Slides: project 3
Ultimate Pente

(program)

Thanksgiving Break: 11/25-11/29

Mon Thanskgiving break
Tue
Wed
Fri

Week 14: 12/2-12/6

Topics: work on project


Mon In Class: project 3 - meet in Rosenberg 009

Tue work on project

Wed In Class: project 3 - meet in Rosenberg 009

Fri In Class: project 3 - meet in Rosenberg 009

Week 15: 12/9-12/10

Topics: work on project


Mon In Class: project 3 - meet in Rosenberg 009

Tue work on project

Reading Period: 12/11-12/13

 

Wed  

Thu  

Fri  

Exams: 12/14-12/17

 

Sat
final exam
12/14 1:30-4:30pm
end-of-semester deadline
no work accepted after 12/14 4:30pm

Sun    

Mon  

Tue