Skip to content

Public course materials for CS 488 Software Development

Notifications You must be signed in to change notification settings

PeterDrake/cs488

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

63 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CS 488 Software Development

Spring 2026

Instructor: Peter Drake
Meetings: 12:30-3:30 PM Tu/Th, Olin 305
Final release party: 9:30-11:30 AM, Monday, May 5

Getting Help

There will be plenty of time in class to ask me questions, but if you need more:

Course Texts

Ko, Cooperative Software Development (online)
Refactoring.Guru, Design Patterns (online)

You will also be expected to seek out and read articles, tutorials, etc. as they become relevant to your project.

Links

Course Policies
Class Notes
Pythonorama
Teams

Overview

This course will cover some theory and give you a great deal of practice in developing a large, complex piece of software as part of a team. We will focus specifically on the eXtreme Programming (XP) process.

CS 383 Algorithm Design & Analysis is a prerequisite for this course. You are expected to be proficient with the Python programming language and common data structures and algorithms. There will be a small amount of lecture at the beginning of each day, but you will spend most of your time in class building software together.

Before launching into the main project, we will spend a few weeks on a small practice project or “spike”: implementing the dice game Qwixx (rules, scoresheet).

You will spend the vast majority of the semester working with a team to produce a single large software system. These are not the contrived projects you've seen in past courses; they are real-world problems for which our "customers" need software solutions.

Learning Objectives

Upon completing this course, you should be able to:

  • explain and use XP values and practices, including pair programming, refactoring, and test-driven development.
  • use a variety of software development tools, including a source control management system (Git), a unit testing tool (such as pytest), and a task management tool (GitHib Projects).
  • estimate the work required to complete a development task.
  • perform incremental object-oriented design using design patterns.
  • work with a customer to develop software that meets their needs.
  • work with a team on a nontrivial piece of software.
  • communicate with your fellow developers, your customer, and outsiders (including me) about the design and progress of your project.

Course Structure

There will be a short lecture, discussion, or activity at the beginning of each session. (There will be more of this in the first few days.) The rest of your time in class will be spent working with your team on either the practice “spike” project or your main project.

Each project will be broken down into “iterations”; your team will produce a working program at the end of each iteration. The iterations are one week for the spike and two for the main project:

Spike: Qwixx Main Project
Jan 27-29 Feb 17-26
Feb 3-5 Mar 3-12
Feb 10-12 Mar 17 - Apr 2
Apr 7-16
Apr 21-30
Release party: May 5

Programming will happen in class. Outside of class, there will be a variety of readings, reflections, and conferences. (I've scheduled six hours of class per week to avoid any team scheduling issues. Since you should spend the same total amount of time on this class as on others, there will be less "homework".)

You are strongly encouraged to keep a journal as you work, so you can remember what you worked on, whom you worked with, what problems you encountered, and how you resolved them. Being able to communicate these things in writing is not busywork but one of the learning objectives of the course!

There are no exams. We will hold a release party during the final exam period.

About

Public course materials for CS 488 Software Development

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages