CPSC 329 Software Development Fall 2018

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/27-8/31

Topics: course introduction; how to develop good software; working in teams

   

Mon Slides:    

Wed Class Prep: available on Canvas

Slides:

 

Thu   lab 1
Preliminaries

due Mon 9/3
 

Fri Class Prep and Reading: available on Canvas

Slides:


Week 2: 9/3-9/7

Topics: version control; basic program design

 

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 the "Team support with SVN / Actions" section in particular for the concepts - how the SVN operations import, update, commit, etc and the typical workflow translate into the Subversive interface.

Slides:

  project 0
Wa-Tor

due Fri 9/21

Wed Slides and Examples:

Thu   lab 2
Introduction to Subversive

due Mon 9/10

Fri Examples:

Week 3: 9/10-9/14

Topics: program design


Mon Slides and Examples:

Wed Slides and Examples:

Thu   lab 3
UML Tools

due Thu 9/20

Fri Slides and Examples:

Week 4: 9/17-9/21

Topics: program design; how to write GUI programs: elements of requirements engineering


Mon Slides and Examples:

Wed Slides and Examples:

Thu   lab 4
More Subversive

due Thu 9/27

Fri Slides and Examples: project 0
Wa-Tor

reflection and peer evaluation due Mon 9/24

Week 5: 9/24-9/28

Topics: how to write GUI programs: basics of requirements engineering, event-driven programming and Swing


Mon Slides: project 1
Game!

team organization

Wed In Class: project 0 debrief / discussion of working in teams project 1
Game!

understanding phase due Mon 10/1

Thu   lab 5
More UML Tools

due Thu 10/4

Fri 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 Swing (chapter 6). Chapter 13 covers more advanced aspects of Swing - it's worth looking through to see what is there, but it is optional material and you don't need to read/learn it as carefully as chapter 6.

Slides:


Week 6: 10/1-10/5

Topics: how to design GUI programs; how to design GUIs


Mon Slides: project 1
Game!

design phase due Fri 10/5

Wed Slides:

Thu   lab 6
Swing

due Thu 10/11

Fri Reading: Read for the key ideas, not to learn all of the specific points (at least not yet).

Class Prep: available on Canvas

Slides and Examples:

Week 7: 10/8-10/12

Topics: how to design GUIs


Mon fall break (no class)

Wed Slides: project 1
Game!

UI design due Mon 10/15

Thu   lab 7
GUI Builder

due Thu 10/18

Fri Slides:

Week 8: 10/15-10/19

Topics: implementation strategies and coding practices; implementation choices (data structures)


Mon Slides: project 1
Game!

due Fri 11/2

Wed Slides:

Thu   lab 8
Design Critique and Code Review

due Thu 10/25

Fri Slides:

Week 9: 10/22-10/26

Topics: testing


Mon Slides:

Wed Slides:

Thu   lab 9
JUnit

due Thu 11/1

Fri Slides:

Week 10: 10/29-11/2

Topics: threads; client-server networking


Mon Reading:

Slides and Examples:


Wed Slides and Examples:

Thu   lab 10
Threads

due Thu 11/8

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

Slides and Examples:

project 1
Game!

reflection and peer evaluation due Mon 11/5

Week 11: 11/5-11/9

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


Mon -- meet in Rosenberg 009 --

Wed Slides: project 2
Ultimate Pente

planning phase due Fri 11/16

Thu   lab 11
Client-Server Networking

due Thu 11/15

Fri -- meet in Rosenberg 009 --

Week 12: 11/12-11/16

Topics: designing for flexibility


Mon Reading:

Class Prep: available on Canvas

Slides:


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:


Thu   lab 12
Encapsulate What Varies

due Thu 11/29

Fri Slides:

Thanksgiving Break: 11/19-11/23


Week 13: 11/26-11/30

Topics: design patterns

project 2
Ultimate Pente

due Mon 12/10

Mon Slides:

Wed Slides:

Thu   lab 13
Elements of MVC

due Thu 12/6

Fri Slides:

Week 14: 12/3-12/7

Topics: design patterns


Mon Slides:

Wed Slides:

Thu   lab 14
Other Patterns

due Tue 12/11

Fri -- meet in Rosenberg 009 --

Week 15: 12/10-12/11

Topics: wrapup


Mon -- bring a device (laptop, tablet, phone) if you can --

Slides:

project 2
Ultimate Pente

reflection and peer evaluation due Tue 12/11

Reading Period: 12/12-12/14

 

Wed office hours 12-2pm  

Thu office hours 1-3pm  

Fri office hours 1-3pm  

Exams: 12/15-12/18

 

Sat
final exam
12/15 8:30-11:30am
end-of-semester deadline
no work accepted after 12/15 11:30am

Sun    

Mon  

Tue      

Valid HTML 4.01!