CSCI-P 532 Object-Oriented Software Development
3 credits
- Prerequisite(s): None
- Delivery: On-Campus
- Equivalent(s): CSCI 50700 Object-Oriented Design and Programming
Description
This course will help turn motivated students into superior contributors to small- to mid-sized commercial or open-source software projects. It takes a hands-on, learning-by-doing approach. Students are introduced to design patterns, tools, and teamwork strategies from the first assignment to the last project.
Topics
Fundamentals of object-oriented design
- Introduction to principles
- Importance of high-quality design
- Overview of patterns
Core patterns
- Creational: singleton, factory method, abstract factory
- Structural: adapter, decorator, composite
- Behavioral: observer, strategy, command
Advanced patterns
- Design-level: bridge, wrapper facade, visitor
- For concurrency: producer-consumer, observer pattern variants
- Architectural: model-view-controller, model-view-view-model
- Handling state: state, strategy, memento
- Interaction: chain of responsibility, mediator, interpreter
- Extensibility: open-closed, dependency injection
Distributed systems
- Patterns
- Remote proxy, distributed observer
Quality assurance and maintenance
- Anti-patterns and mistakes
- Code smells and refactoring
- Testing strategies
- Debugging techniques
Teamwork, case studies, and applications
- Collaboration strategies
- Real-world examples and workshops
Learning Outcomes
- Compare object-oriented design patterns, evaluating their suitability for specific problem domains and scenarios. CS 2
- Examine the impact of design decisions on system maintainability, scalability, and extensibility. CS 2
- Evaluate the trade-offs between design patterns and architectural choices regarding performance, flexibility, and complexity. CS 2
- Evaluate the effectiveness of design patterns in improving software quality, identifying cases where their application enhances or hinders system performance. CS 2
- Assess anti-patterns and propose alternatives to mitigate their harm to system quality. CS 2
- Assess the strengths and weaknesses of design patterns in distributed systems, considering factors like communication overhead and fault tolerance. CS 2
- Design and implement object-oriented systems using appropriate design patterns, ensuring the chosen patterns align with the project’s requirements and goals. CS 2
- Develop advanced software design solutions by integrating multiple design patterns and principles, optimizing system performance, and ensuring maintainability. CS 2
- Create a robust and scalable distributed system architecture, applying relevant design patterns and addressing data consistency and fault tolerance challenges. CS 2
- Design and execute a comprehensive software testing strategy, using patterns and techniques to ensure the reliability and quality of object-oriented systems. CS 2
Policies and Procedures
Please be aware of the following linked policies and procedures. Note that in individual courses instructors will have stipulations specific to their course.