Current Catalog Description

The software life-cycle; life-cycle models; software planning; testing; specification methods; maintenance. Emphasis on team work and large-scale software systems, including oral presentations and written reports. Prerequisite: CSE 17.

Instructor: Mark Erle, Stephen Lee-Urban (Fall 2022)

Textbook

No book

References:

  • UML Distilled, Martin Fowler, Addison Wesley
  • Design Patterns: Elements of Reusable Object-Oriented Software, by Erich Gamma, Richard Helm, Ralph Johnson, and John M. Vlissides, Addison-Wesley 1994.

Course Outcomes

Students will have:

  1. Understanding of:
    • basic software engineering terminology
    • the software life-cycle
    • the roles and responsibilities of the various stakeholders in a software project
    • the role of software process in facilitating development and ensuring software quality
  2. Ability to prepare a requirements specification.
  3. Ability to create control-flow graphs, and compute simple quality metrics.
  4. Ability to use CASE tools.
  5. Ability to design interfaces.
  6. Ability to use the Unified Modeling Language.
  7. Gain experience working in a team.
  8. Appreciation of the issues that make large-scale software engineering challenging.

Relationship between course outcomes and Student Outcomes where CSE 216 substantially supports the Student Outcome #5 and #6:

SO5: Function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline. 
SO6:Apply computer science theory and software development fundamentals to produce computing-based solutions. [CS]

 

Prerequisites by Topic

  •  Fluency in writing code in JAVA.
  •  Ability to effectively use classes to construct medium-scale software.

Major Topics Covered in the Course

  1. Software Development Process
  2. Project Management (including Project Planning, Cost Estimation, and Configuration Management)
  3. Requirements Engineering
  4. Software Architecture
  5. Object-Oriented Analysis
  6. Object-Oriented Design
  7. System Modeling using UML
  8. Software Complexity
  9. Software Quality
  10. Software Testing
  11. CASE Tools

Assessment Plan for the Course:

The students are given seven homework assignments, five pop quizzes, a midterm examination, and a final examination. Students are also divided into teams of 5-6 students. Each team goes through four iterations to design and implement a medium-sized software project. Each iteration has different sets of deliverables (e.g. requirements documents, analysis and design documents, UI sketches, implementation code, tests, and written reports). Teams are also asked to give in-class presentations about their projects. The performance of the students on homework assignments, pop quizzes, course projects, and the examinations are tracked. I also conduct in-class anonymous surveys (after the midterm and before the final examination) to collect feedback.