SE 2811 - Software Component Design

3 lecture hours 2 lab hours 4 credits
Course Description
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 students to implement components and to integrate them into complete systems. As a final assignment, small teams of students conduct research on software design patterns and present & demonstrate the results of their investigations to the class. (prereq: SE 2030 , CS 2852 )
Course Learning Outcomes
Upon successful completion of this course, the student will be able to:
  • 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
  • Conduct independent research on software design patterns

Prerequisites by Topic
  • Proficiency in object-oriented programming
  • Knowledge of data structures and proficiency in their application
  • Familiarity with inheritance and polymorphism
  • Knowledge of UML diagram notation
  • Experience with source code repository tools
  • Experience with developing software in teams

Course Topics
  • Principles of object-oriented software design
  • Using design patterns to develop maintainable software systems
  • Advantages and disadvantages of applying design patterns
  • Threading and thread synchronization

Laboratory Topics
  • Application of specific design patterns (7 sessions)
  • Investigation of multi-threaded data collections (1 session)
  • Development and presentation of application to demonstrate the use of a researched design pattern (2 sessions)

Coordinator
Dr. Josiah Yoder


Print-Friendly Page (opens a new window)