As software has become more pervasive and is responsible for the large majority of functionality in most systems of interest, it is important to understand the differences between engineering a large software system and the traditional view of software engineering as design and coding. The idea of “greenfield” software systems has evolved to “brownfield” systems created as a mix of COTS, legacy and new components. This course addresses the history of the growth of software importance, the risk profiles inherent in large software systems, the importance of process in large software systems, approaches to the definition, management and execution of large scale developments, and new ways to think about complexity and size.