CS 6310: Software Architecture and Design

Instructional Team

Mark Moss

Mark Moss
Instructor
Spencer Rugaber

Spencer Rugaber
Creator, Instructor
Matt Carter

Matt Carter
Head TA
Buzz

Ray Reese
Head TA

Overview

Software Architecture and Design will provide students with the principles and concepts involved in the analysis and design of large software systems. The learning objectives for the course are the following:  

  • Understand and apply object-oriented design techniques
  • Develop and evaluate software architectures
  • Select and use appropriate architectural styles
  • Select and use appropriate software design patterns
  • Express the specifications and design of an application using UML
  • [Time Permitting] Discuss related issues (e.g., formal design language with OCL)

This course counts towards the following specialization(s):
Computing Systems

Foundational Course          Computing Systems Specialization Elective

Course Goals

This course teaches the principles and concepts involved in the analysis and design of large software systems. After completing this course, a student should have obtained the skills and knowledge necessary to accomplish the following:

  • Express the analysis and design of an application using UML
  • Specify functional semantics of an application using OCL
  • Specify and evaluate software architectures
  • Select and use appropriate architectural styles
  • Understand and apply object-oriented design techniques
  • Select and use appropriate software design patterns
  • Understand and perform a design review

Sample Syllabus

Fall 2019 syllabus (PDF)
Fall 2019 schedule (PDF)

Note: Sample syllabi are provided for informational purposes only. For the most up-to-date information, consult the official course documentation.

Before Taking This Class...

Suggested Background Knowledge

To undertake this course you should either have successfully taken an undergraduate software engineering course or CS 6300. Alternatively, if you have significant experience actually developing industrial software, you should be fine. You will be required to implement some of your designs using Java, so this course assumes competence with Java programming and knowledge of object-oriented techniques. There are videos available on the class resources page to refresh your knowledge of these two topics.

If you answer "no" to any of the following questions, it may be beneficial to refresh your knowledge of this material prior to taking CS 6310:  

  1. Have you taken a software engineering course before or have you had some experience working as a software engineer in a company?
  2. Are you familiar with basic software engineering concepts, such as requirements, software design, and software testing?
  3. Are you familiar with at least one object-oriented programming language, preferably Java?
  4. Are you comfortable, or even excited about, learning new technologies and working with software tools?
  5. Do you have enough flexibility to work with a team that meets (remotely) on a regular basis?
Technical Requirements and Software
  • You will be provided a VirtualBox virtual machine to use while in this course.
  • In addition, you are expected to have screen and voice capture software available to you for submitting demo materials. The class resources page provides suggested tools.
  • Browser and connection speed: An up-to-date version of Chrome or Firefox is strongly recommended. We also support Internet Explorer 9 and the desktop versions of Internet Explorer 10 and above (not the metro versions). 2+ Mbps is recommended; the minimum requirement is 0.768 Mbps download speed.
  • Operating system:
    • PC: Windows XP or higher with latest updates installed
    • Mac: OS X 10.6 or higher with latest updates installed
    • Linux: any recent distribution that has the supported browsers installed

Though the absolute minimum requirements are shown above, we highly recommend that you use an Operating System and Web Browser that are relatively recent, to ensure that your experience while working with the various software applications in the course (e.g., Integrated Development Environments, Virtual Machines) is as smooth as possible.

Academic Integrity

All Georgia Tech students are expected to uphold the Georgia Tech Academic Honor Code. This course may impose additional academic integrity stipulations; consult the official course documentation for more information.