Welcome to SE 2811  
Software Component Design
This course deals with the design and implementation of software subsystems. The concept of design patterns is introduced and common patterns are applied to the development of software components. Laboratory projects provide an opportunity for teams of students to implement components and to integrate them into complete systems.
Prerequisite: SE-2030, CS-2851
Freeman, E., Robson, E., Bates, B., & Sierra, K. (2004). Head first design patterns. O'Reilly Media, Inc.
Additional references:
Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design patterns: elements of reusable object-oriented software. Pearson Education.
Summerfield, M. (2013). Python in Practice: Create Better Programs Using Concurrency, Libraries, and Patterns. Addison-Wesley.
Zlobin, G. (2013). Learning Python Design Patterns. Packt Publishing Ltd.
Upon successful completion of this course, the student will:
  • apply object-oriented design patterns in software application-specific contexts

  • determine the appropriate design pattern to apply in a specific context

  • design and implement small software components and systems

  • apply UML class and sequence diagrams in the process of designing and documenting software applications

  • use computer-aided software engineering (CASE) tools in the design and software documentation process

  • conduct independent research on software design patterns

  • document software design patterns in both written and oral reports