CPSC 329 Software Development Fall 2016

CPSC 329 Syllabus

Readings and class prep assignments are to be done for the class period where they are listed.

 Projects

Week 1: 8/29-9/2

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

   

Mon Slides:    

Tue project 0
Preliminaries
 

Wed Reading: (available on Canvas)
  • "A Spiral Model of Software Development and Enhancement", B. W. Boehm

Class Prep: available on Canvas

Slides:
  • slides (software quality, process models)
 

Fri Reading: (available on Canvas)
  • "A Survey of Agile Development Methodologies", L. Williams

Class Prep: available on Canvas

Slides:
  • slides (version control, SVN)
   

Week 2: 9/5-9/9

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

   

Mon -- meet in Rosenberg 009 --

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 (alternate link)
    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 class), but it is still worth reading through it for the concepts - how do the SVN concepts of import, update, commit, etc and the typical workflow translate into the Subversive interface.
In Class:
   

Tue Reading: (available on Canvas)
  • chapters 4-5 of "Enhancing Teamwork in Software Projects Developed in the Academia", M. R. M. Samary
Slides:
project 1
Wa-Tor
 

Wed Slides:
  • slides (understanding phase - specifications, functionality)
 

Fri Slides:  

Week 3: 9/12-9/16

Topics: understanding phase; working in teams; concurrency and threads

 

Mon Reading: (available on Canvas)
  • section 11.3 (Stock Tracker example) from Program Development in Java, B. Liskov and J. Guttag
Slides and Examples:
 

Tue project 2
Understanding
 

Wed Reading: Slides and Other Materials:

Fri Slides and Examples:  

Week 4: 9/19-9/23

Topics: concurrency and threads; UI design

 

Mon Reading: Slides and Examples:  

Tue project 3
Threads
 

Wed Reading:

Class Prep: available on Canvas

Slides:

  • slides (some comments on project 3)
  • slides (user interface design)
 

Fri Slides:
  • slides (user interface design)
 

Week 5: 9/26-9/30

Topics: GUIs in Java; program design

 

Mon Class Prep: Email by 8pm Sunday any questions you have about creating GUIs in Swing. These might be big picture questions ("What do I do?"), questions about particular aspects (layout of components, handling events), or using specific components or handling specific types of events. Try to be as specific as possible.

Slides and Reference:

 

Tue project 4
GUI Design
 

Wed Slides:
  • slides (design - decomposition, abstraction, specifications, identifying classes)
 

Fri Slides and Examples:  

Week 6: 10/3-10/7

Topics: program design

 

Mon Slides and Examples:  

Tue project 5
Program Design
 

Wed Slides and Examples:  

Fri Slides:
  • slides (project 1 teamwork comments)
  • slides (associations in the class diagram, information hiding, encapsulation, loose coupling, code to the interface)
 

Week 7: 10/10-10/14

Topics: program design


Mon fall break
(no class)

Tue

Wed Slides:
  • slides (code to the interface, mutable objects, Law of Demeter, 5 Cs)

Fri Slides:
  • slides (project 2 debrief - about elements of the understanding phase)

Week 8: 10/17-10/21

Topics: project debriefs; client-server networking

 

Mon Slides:
  • slides (project 4 debrief - about GUI design)
   

Tue project 6
Design, Continued
 

Wed Slides:  

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

Slides and Examples:

 

Week 9: 10/24-10/28

Topics: client-server networking; designing client-server programs; design review

 

Mon Slides and Examples:  

Tue project 7
Client-Server Networking
 

Wed Slides:
  • slides (designing client-server programs)
 

Fri Slides:  

Week 10: 10/31-11/4

Topics: designing for flexibility

 

Mon Reading:

Class Prep: available on Canvas

Slides:

  • slides (designing for flexibility - encapsulate what varies, Open-Closed Principle)
final project
preferences and topics

Tue

Wed 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:

  • slides (designing for flexibility - Liskov Substitution Principle, favoring composition over inheritance; ducks example)

Fri Slides:

Week 11: 11/7-11/11

Topics: design patterns


Mon Slides:
  • slides (design principles wrapup)
  • slides (design patterns - Strategy, State, Observer)
final project
proposal

Tue  

Wed Slides:
  • slides (design patterns - MVC, design principles - Don't Repeat Yourself)

Fri Class Prep: maze solver exercise

Slides:

  • slides (design patterns - Factory Method / Abstract Factory, Decorator, Visitor)
  final project
software

Week 12: 11/14-11/18

Topics: implementation, testing, and debugging

 

Mon Slides:
  • slides (applying design principles and patterns to WATOR)
 

Tue  

Wed Slides:
  • slides (implementation - approaches, defensive programming)
  • slides (implementation choices - choosing data types, data structures)
 

Fri Class Prep: principles and patterns exercise

Slides:

 

Week 13: 11/21-11/25

Topics: testing and code reviews

 

Mon Slides:  

Tue Class Prep: JUnit (due Wed 11/30)  

Wed Thanksgiving break
(no class)

Fri

Week 14: 11/28-12/2

Topics: code review

 

Mon -- meet in Rosenberg 009 --

Reading:

Class Prep: Code Review (due Mon 12/5)

exam
due Fri 12/9

information

Tue

Wed Slides:
  • slides (comments on class prep exercises - maze solver, patterns and principles - and project 3 - threads)
  • example for project 5 comments - use case, sequence diagram

Fri -- meet in Rosenberg 009 --

Week 15: 12/5-12/9

Topics: wrapup


Mon Materials from class:

Tue

Wed Slides:

Fri -- meet in Rosenberg 009 --  

Reading Period: 12/10-12/12

 

Sat  

Sun  

Mon  

Exams: 12/13-12/16

 

Tue

Wed  

Thu -- meet in Rosenberg 009 --

final project presentations
Thu 12/15 1:30-4:30pm
end-of-semester deadline
no work accepted after 12/15 4:30pm

Fri    

Valid HTML 4.01!