This course can be taken for credit towards
· the BS CS major as a Senior CS-related course
· the BS CS minor in Software Engineering
· the proposed BS in Applied CS in Software Engineering (starting Fall 2009)
One of the greatest difficulties for young graduates that work in software is getting the big picture. Why are things organized the way they are? Why do they behave the way they do? What can you do to change it? Architecting software is normally reserved for senior people, but this course shows you the ropes of the trade so that you too can work towards becoming a software architect.
This course teaches how to design, understand, and evaluate software systems at an architectural level of abstraction. By the end of the course, students will be able to:
· Recognize major architectural styles in existing software systems.
· Describe a system’s architecture accurately.
· Generate architectural alternatives to address a problem and choose among them.
· Design a medium-sized software system that satisfies a specification of requirements.
· Use existing tools to expedite software design.
· Evaluate the suitability of a given architecture in meeting a set of system requirements.
· working knowledge of an object-oriented language, such as Java