Spring
4
The software systems we often find the most useful and magical are also the largest and most complex to build and understand. In order for these systems to be reliable, maintainable, and secure, they must be built according to disciplined and well-founded methods. This course examines these methods—both in the large (defining requirements, system design, architecture patterns, software process, etc.) and in the small (version control, testing, benchmarking, code review, etc.). At the same time, students will engage in the construction of a large software system or feature.