CPSC 329 Software Development Fall 2017

CPSC 329 Schedule

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

Dates for things in light gray are for planning purposes and may be adjusted slightly.

 Assignments

Week 1: 8/28-9/1

Topics: introduction; good software; the software development process; working in teams

   

Mon Slides:    

Tue   lab 1
Preliminaries
 

Wed Class Prep: available on Canvas

Slides:

 

Fri Class Prep and Reading: available on Canvas

Slides:

 

Week 2: 9/4-9/8

Topics: version control; understanding what the software is to do

 

Mon Reading:
  • Version Control with Subversion (version 1.8), chapters 1, 2, and 4
    This is a lot of technical material, and it covers the commandline SVN client (we'll primarily be using a plugin for Eclipse instead). What this means: 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.
  • Subversive User Guide This is also rather a lot of technical material, this time about Subversive, one of the Eclipse plugin SVN clients. It will also be less meaningful until you are sitting in front of Eclipse actually using Subversive (which will happen in lab), but it is still worth reading through it for the concepts - how the SVN operations import, update, commit, etc and the typical workflow translate into the Subversive interface.

Slides:

  project 1
Wa-Tor
(software)

Tue   lab 2
Introduction to Subversive

Wed Slides:

Fri Slides:

Week 3: 9/11-9/15

Topics: understanding what the software is to do; basic program design


Mon Slides:

Tue   lab 3
More Subversive

Wed Slides:

Fri Slides and Handouts:

Week 4: 9/18-9/22

Topics: program design


Mon Slides and Examples:

Tue   lab 4
PlantUML

Wed Slides and Examples:
  • program design (responsibilities and collaborators - use cases example, refining the organization of classes and responsibilities, sequence diagrams)
  • Klondike example: CRC cards, version 2 (many responsibilities and collaborators included - is this complete?)

Fri Slides and Examples: project 1
Wa-Tor
(reflection)

Week 5: 9/25-9/29

Topics: program design; basic design principles


Mon Slides and Examples: project 2
Game!
(understanding and code design)

comments

Tue   lab 5
Papyrus

Wed Slides and Examples:

Fri Slides:

Week 6: 10/2-10/6

Topics: UI design


Mon Reading:

Class Prep: available on Canvas

Slides:


Tue   lab 6
Swing

Wed Slides:

Fri Slides: project 2
Game!
(UI design)

comments

Week 7: 10/9-10/13

Topics: implementation strategies and coding practices; verification and validation


Mon fall break
(no class)

Tue

Wed Slides:

Fri Slides:
  • implementation (coding practices - defensive programming; assertions)
project 2
Game!
(software)

Week 8: 10/16-10/20

Topics: testing; threads


Mon Slides:

Tue lab 7
JUnit

Wed Slides:

Fri Reading: Slides and Examples:

Week 9: 10/23-10/27

Topics: threads; networking and streams


Mon Slides and Examples:

Tue   lab 8
Threads

Wed -- meet in Rosenberg 009 --

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

Slides and Examples:


Week 10: 10/30-11/3

Topics: networking and streams; code review


Mon -- meet in Rosenberg 009 --

Tue   lab 9
Client/Server Networking

Wed Slides and Handouts:

Fri Slides: project 2
Game!
(reflection)

Week 11: 11/6-11/10

Topics: designing client-server programs; designing for flexibility


Mon Slides: project 3
Ultimate Pente

Tue    

Wed Reading:

Class Prep: available on Canvas

Slides:

 

Fri Reading:
  • "The Liskov Substitution Principle", R. C. Martin
    Some of the discussion is specific to C++ (such as virtual methods), but the "real problem" (pages 5-7) applies to Java (and other object-oriented languages) as well and is the thing to focus on.

Class Prep: available on Canvas

Slides:

 

Week 12: 11/13-11/17

Topics: designing for flexibility; design patterns

 

Mon Slides:  

Tue   lab 10
Encapsulate What Varies

Wed Slides:

Fri Slides:

Week 13: 11/20-11/24

Topics: design patterns


Mon Slides:

Tue   lab 11
Elements of MVC

Wed Thanksgiving break
(no class)

Fri

Week 14: 11/27-12/1

Topics: design patterns; design exercise


Mon Slides:

Tue   lab 12
Visitor

Wed Slides:

Fri Class Prep: available on Canvas

Slides:


Week 15: 12/4-12/8

Topics: design exercise; wrapup


Mon Slides:

Tue    

Wed Slides:  

Fri Slides:   final exam (take home)
due Thu 12/14 at 10pm

(review information)

available under "Assignments" on Canvas

Reading Period: 12/9-12/11

 

Sat    

Sun    

Mon    

Exams: 12/12-12/15

 

Tue    

Wed    

Thu Don't forget the last stage of the Ultimate Pente project! end-of-semester deadline
no work accepted after 12/14 10pm

Fri      

Valid HTML 4.01!