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: