CS 410 Top: Extreme Programming: Principles & Practices
| Credit Hours: | 4 |
| Course Coordinator: | N/A |
| Course Description: | Extreme Programming (XP) is a methodology for producing programs that satisfy the customer's requirements as to functionality, timeliness and budget. It is one of a number of new "agile" methodologies that look at each of the things that the software engineering gurus have been telling us to do, and focus on those that actually deliver value to the customer.
The core values of XP are Communication, Feedback, Simplicity and Courage. From these values XP derives a number of principles, such as "Humanity" and "Mutual Benefit", which in turn drive the day-to-day practices of a programming team, such as "Continuous Integration" and "Test-First Programming".
This course combines lectures and exercises designed to help students master the values, principles and practices of Extreme Programming with a practicum that gives students the experience of working as a member of an XP team on a customer project, while using the practices and living the values.
Programming Tools
The primary tools will be the Java Programming Language and the Eclipse IDE. Students are expected to be familiar with the principles of Object-oriented programming, in Java or in another O-O langauge, and to be able to program in Java. |
| Prerequisites: | |
| Goals: | |
| Textbooks: | Extreme Programming Explained, Second Edition, by Kent Beck (Required)
Refactoring by Martin Fowler (Required)
One of the following books on Test-driven development:
Test Driven Development by Example by Kent Beck (Recommended) or
JUnit Recipies by J.B. Rainsberger, or
TDD: A Practical Guide By Dave Astels |
| References: | |
| Major Topics: | Week 1: The Easy to learn Skills
Planning XP1: planning game, small releases XP2: real customer involvement, slack, stories, weekly cycle, quarterly cycle Other: Requirements funnel (see http://www.jamesshore.com/Presentations/Beyond%20Story%20Cards.html)
Managing Code XP1: collective ownership, coding standards XP2: ten-minute build, continuous integration, single code base Ohter: revision control
Working Together XP1:pair programming, on-site customer, metaphor XP2: sit-together, pair programming, whole team, team continuity Other: stand-up meetings
Weeks 2 and 3: What it feels like to go fast.
Testing: (Michael Feather's Unit Testing Rules), Test Driven Development, five design skills
Developing: XP1: metaphor, simple design, testing, refactoring XP2: test-first, incremental design, shared code, code&test
Other: exploratory testing, Marick's Agile Testing Directions, FIT
Week 4: Retrospectives, dealing with management, people skills
Devlivering Software XP1: (none) XP2: daily deployment, incremental deployment,pay-per-use, negotiated-scope contacts Ohter: (none)
Thinking XP1: 40-hour week XP2: energized work, root-cause analysis, informative workspace
Other: retrospectives
Key:
XP1 = found in XP Explained 1st Edition
XP2 = found in XP Explained 2nd Edition
Other = not in XP Explained but worth mentioning |
| Laboratory Exercises: | |
| CAC Category Credits |
Core | | Advanced |
| Data Structures |
| |
| Algorithms |
| |
| Software Design |
| |
| Computer Architecture |
| |
| Programming Languages |
| |
| Oral and Written Communications: | |
| Social and Ethical Issues: | |
| Theoretical Content: | |
| Problem Analysis: | |
| Solution Design: | |
|