Electrical Engineering and Computer Science

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:

  1. Review the models for developing software projects.
  2. Work in a team to build a software product under realistic constraints
    and tradeoffs.
  3. Formulate a Functional Specification from a set of User Requirements.
  4. Given a specification for a system, identify the required underlying
    computing infrastructure, and software architecture.
  5. Be able to define the properties of readable and reusable code. 
  6. Conduct a specification, design, or code review.
  7. Make an effective oral presentation on a technical topic.
  8. 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. 
  9. Create a test dataset for use in unit testing of a module, exercise the
    created dataset, and generate a test report.
  10. Plan and execute lifecycle steps for developing a complex software
    product.
  11. Be able to critique a software design specification, identifying possible
    global, societal, economic and environmental consequences and
    recommending ways to minimize or avoid them. 
  12. 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. 
  13. Develop familiarity with how non-technical issues like privacy, ethics,
    and legal aspects can affect the design and implementation of the code


Topics

  1. The Nature of Software 
  2. Process Models 
  3. Agility and Process 
  4. Recommended Process Model 
  5. Principles That Guide Practice  
  6. Understanding Requirements 
  7. Requirements Modeling: A Recommended Approach 
  8. Design Concepts
  9. Architecture Design: A Recommended Approach 
  10. Component-Level Design 
  11. User Experience Design 
  12. Pattern-Based Design 
  13. Quality Concepts 
  14. Reviews – A Recommended Approach 
  15.  Software Quality Assurance 
  16. Software Testing – Component-Level 
  17. Software Testing – Integration-Level 
  18. Software Metrics and Analytics 
  19. Oman’s Software Maintainability Index 
Last Updated: 6/22/23