CSCI-P 565 Software Engineering I
3 credits
- Prerequisite(s): None
- Delivery: On-Campus
Description
This course covers the analysis, design, and implementation of software systems. Students learn requirements specifications through data and process modeling, software design methodologies, and software quality assurance, including testing and verification. The course also covers software development processes.
This first course in the sequence explores the theoretical foundations and methodologies of software engineering, emphasizing best practices in software design, development, and initial testing phases.
Topics
Review of software engineering fundamentals
- Software development life cycle (SDLC)
- Agile methodologies and Scrum framework
- Object-oriented analysis and design (OOAD)
Advanced software design patterns
- Creational, structural, and behavioral patterns
- Patterns for distributed and concurrent systems
- Anti-patterns and refactoring
Software Architecture
- Architectural patterns and styles
- Microservices vs. monolithic architectures
- Software architecture documentation
Modern development practices
- Test-driven development (TDD)
- Behavior-driven development (BDD)
- Pair programming
Advanced testing strategies
- Unit, integration, and system testing
- Performance and stress testing
- Mutation testing and property-based testing
Software metrics and quality assurance
- Static and dynamic metrics
- Technical debt and code smells
- Code reviews and static analysis tools
Learning Outcomes
- Analyze and synthesize the fundamental concepts and methodologies in software engineering, applying them in complex and novel contexts. CS 2
- Evaluate and implement advanced design patterns and principles, innovating and optimizing solutions in diverse and complex practical contexts. CS 2
- Architect software systems considering modularity, scalability, and maintainability. CS 2
- Design and implement effective testing strategies for complex software 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.