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
There will be plenty of time in class to ask me questions, but if you need more:
- Write to the course email list 24/7
- Make an appointment to see me or drop by my office
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.
Course Policies
Class Notes
Pythonorama
Teams
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.
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.
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.