EECS 3550 - Software Engineering Course Syllabus
Credits/Contact Hours
3 credit hours & three 50-minute lecture contact hours per week.
Textbook
Software Engineering: A Practitioner’s Approach, 9th ed., Roger S. Pressman and Bruce R. Maxim;
McGraw-Hill Higher Education, 2019, 704 pp.
Hardcover: ISBN-10/13: 1259872971 / 978-1259872976
Loose Leaf: ISBN-10/13: 126042331X / 978-1260423310
Course Information
An introduction to the Software Engineering process. Topics include: the software
lifecycle, programming teams, user requirements, human-computer interaction, functional
specification, security and performance, software architecture, software design, objectoriented
programming, professional programming practice, software tools, testing, and modification.
A major project is assigned.
Prerequisites:
EECS 2510 with min. grade of D‐ AND (ENGL 2950 with min. grade of D‐ OR ENGL 2960
with min. grade of D‐ OR HON 1020 with min. grade of D‐) Required course for CSE
Specific Goals - Student Learning Objectives (SLOs)
The students will be able to:
- Review the models for developing software projects.
- Work in a team to build a software product under realistic constraints
and tradeoffs. - Formulate a Functional Specification from a set of User Requirements.
- Given a specification for a system, identify the required underlying
computing infrastructure, and software architecture. - Be able to define the properties of readable and reusable code.
- Conduct a specification, design, or code review.
- Make an effective oral presentation on a technical topic.
- Construct a test plan and generate test cases for a computer-based
system of medium complexity selecting appropriate combination of
tests for ensuring system quality. - Create a test dataset for use in unit testing of a module, exercise the
created dataset, and generate a test report. - Plan and execute lifecycle steps for developing a complex software
product. - Be able to critique a software design specification, identifying possible
global, societal, economic and environmental consequences and
recommending ways to minimize or avoid them. - Implement a project in a programming language that is not part of the
current curriculum, using materials they can find (printed and/or
online) to learn enough about that language to be productive. - Develop familiarity with how non-technical issues like privacy, ethics,
and legal aspects can affect the design and implementation of the code
Topics
- The Nature of Software
- Process Models
- Agility and Process
- Recommended Process Model
- Principles That Guide Practice
- Understanding Requirements
- Requirements Modeling: A Recommended Approach
- Design Concepts
- Architecture Design: A Recommended Approach
- Component-Level Design
- User Experience Design
- Pattern-Based Design
- Quality Concepts
- Reviews – A Recommended Approach
- Software Quality Assurance
- Software Testing – Component-Level
- Software Testing – Integration-Level
- Software Metrics and Analytics
- Oman’s Software Maintainability Index