- COURSE NUMBER AND CREDIT
CSC 380 - 3 Semester Hours
- COURSE TITLE
Software Engineering
- COURSE DESCRIPTION
Techniques for developing large software systems are
presented. Formal and semi-formal languages for
specification and design of software, verification,
and configuration management techniques are
discussed.
- PREREQUISITES
CSC 241
- COURSE JUSTIFICATION
This course is intended to provide students with an
engineering perspective to software design.
- COURSE OBJECTIVES
Upon successful completion of this course, students will be able to:
- Develop a software application based upon a set of requirements.
- Manage and/or work within a group development effort
- Verify and validate software components
- Create and communicate designs using formal and semi-formal notations
- Use software development tools to enhance design, testing, and configuration.
- Communicate and critique designs among peers
- Apply programming and analytic techniques from core computer science
and math courses in the service of constructing useful software
- COURSE OUTLINE
- Software Developemnt Process
- Classic and Agile approaches
- Managing group development
- Theory and practice of versioning, configuration,
and build tools
- Schedule estimation and monitoring
- Requirements
- Use Cases and related techniques
- Working with clients and users
- Features and non-functional requirements
- Design
- UML and related design and specification notations
- Quality and metrics: modularity, abstraction, complexity
- Common Design Patterns
- Quality Assurance
- Developing and monitoring quality objectives
- Design and code reviews
- Functionality and correctness testing
- Unit, integration, and regression testing
- Test coverage and test plans
- Using test tools and frameworks
- Performance, reliability, security, and safety testing
- Human factors evaluation
- Formal and semi-formal analytic verification
- Test automation and bug detection tools
- METHODS OF INSTRUCTION
- Lectures
- Discussion
- In-class reviews
- Projects
- COURSE REQUIREMENTS
- One or more projects covering all aspects of software development.
- Class presentations
- MEANS OF EVALUATION
- Project participation and milestones, and associated presentations.
- Oral or written evaluations or exams assessing proficiency in
underlying concepts.
- RESOURCES
No additional resources are needed.
- BIBLIOGRAPHY
R. Pressman, Software Engineering: A practitioner's approach,
McGraw Hill, 2005.
I Sommerville, Software Engineering, Addison-Wesley, 2004.
E. Stiller and C. Leblanc, Project-based software engineering,
Addison-Wesley, 2002.
M. Fowler UML Distilled, Addison-Wesley, 2003.