Advanced concepts and methods for the creation of software systems, dealing with structuring principles, design methodologies, and informal analysis. Emphasis is on process steps that are necessary in the development of large, complex software systems. Material emphasizes systems-level thinking.
Student should have some basic background in the development of software or software / hardware systems. Development of mid-sized software system using object-oriented programming languages is beneficial.