Two of the problems that plague educators of computer programming are: fitting problems of sufficient complexity into a single course, and preparing students to work on real-world project teams. In a recent offering of a graduate-level XML (eXtensible Markup Language) programming course, the author tackled both these problems by treating the students as members of a project team that needed to develop a Web Services solution to an actual industrial problem.The XML Programming class initially introduced students to both fundamental work with SAX (Simple API for XML) and DOM (Document Object Model), and the problem domain for their project. In the second half of the course the students worked on their portion of an enterprise-wide project. The instructor, acting as project manager, described the entire project and the portion the team would work on, arranged visits by the actual client, and coordinated the activities. Students interviewed the client and conducted research in order to complete their requirements gathering.While students studied the web services protocol stack, they designed and developed the actual services. Students interacted with one another, depending on and helping one another so that the team could achieve its goal. The class team also interacted with other teams ensuring that APIs and other project standards were maintained.Students finished the course not only with a sense of true accomplishment but they also:Gained first-hand knowledge of the plusses and minuses of working with cutting-edge technologies;Worked as part of a cohesive team driven toward a common goal;Dealt with the issues of working with other teams and their products;Interacted directly with a client, dealing with fixed resources and all the ugliness and uncertainty that come with real world problems.