Principles employed in the construction of large-scale distributed software systems, including languages and tools to facilitate and manage such products, and the human factors in their production. Students conceive, model, implement, deploy, document, and present a large project built using an agile development methodology. Clean code and architecture readings and videos, gust speakers, and code jams enhance the course experience. Projects are built in a public source code repository and students present to a large audience of faculty, administrators, alumni, friends, and family at the end of the course. Consent of instructor required.