Skip to main content

CS 364 Syllabus

Software Engineering

Revised: August 2018

Course Description

The course will encompass rigorous approach to software engineering of software including the software development lifecycle, the Unified Modeling Language (UML), requirements specification, systems analysis, implementation, user interface design, testing, design patterns and change management. This will be achieved by utilizing the Java programming language for the specification, design, development, test and review of a long running project in small development teams. Many of these soft skills relating to software engineering cannot be obtained by programming alone. Therefore the aim is not only to provide software development experience but also to provide an accurate simulation working in small customer focused development teams under the supervision of manager.

Prerequisite & Notes

  • CS 253.
  • 3 Credit Hours


  • Appreciate the need for each of the stages of the software development lifecycle.
  • Understand the real world 'in practice' implications and application of the SDLC.
  • Gain applied skill in specifying, implementing, and testing a non-trivial software project in small development teams.
  • Learn and apply the Unified Modeling Language (UML) to a concrete programming problem.
  • Build an application of significant size utilizing object oriented design patterns.
  • Develop skill in designing user interfaces for modern GUI based computing systems.
  • Design and put into practice test plans and unit tests to validate a software engineering work product.
  • Learn the implications of co-dependence when working on small to medium sized projects in teams.


Bernd Bruegge and Allen H. Dutoit, Object-Oriented Software Engineering Using UML, Patterns, and Java, Third Edition, Prentice Hall, 2010.

Grading Procedure

Grading procedures and factors influencing course grade are left to the discretion of individual instructors, subject to general university policy.

Attendance Policy

Attendance policy is left to the discretion of individual instructors, subject to general university policy.

Course Outline

  • Background – What, and why, core concepts, and activities.
  • Modeling techniques via the Unified Modeling Language (UML) including: use cases, class interaction, state machines, and activity diagrams.
  • Project organization, communication and management.
  • Designing complex systems including: requirements gathering, systems analysis, and design.
  • Designing object oriented systems using tried and tested patterns and well defined interfaces.
  • Change management, version control, and testing.
  • Software Development models and approaches (time permitting)
Office of Web Services