Revised Jan. 28, 2014

CS 247: Software Engineering Principles


General description

This course introduces systematic methods for designing, coding, testing, and documenting medium-sized programs. Major topics include abstraction, modularity, software modeling, object-oriented programming and design, generic programming, and testing and debugging.

Logistics

Audience

Normally available

Related courses

For official details, see the UW calendar.

Software/hardware used

Typical reference(s)

Required preparation

At the start of the course, students should be able to

Learning objectives

At the end of the course, students should be able to
  • Design and implement data abstractions (ADTs, polymorphic objects, generic functions) in C++
  • Critique designs with regards to cohesion, coupling, generality, robustness, information hiding
  • Create software designs that are modular, general, robust, flexible
  • Express software designs and behaviour using basic UML models
  • Express the structure of an OO program as a class model
  • Express the state of a dynamic data structure as an object model
  • Express interactions between objects using a sequence diagram
  • Develop and test programs incrementally
  • Test and debug programs systematically
  • Use simple software tools effectively, including makefiles, gdb, version control
  • Typical syllabus

    Module Design (12 hours) Object-Oriented Design and Programming (12 hours) Software Engineering and Tools (5 hours) Generic Programming (5 hours)