ÃÛÌÒ´«Ã½

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Ìý