COURSE TITLE: Software Engineering
NAME OF INSTRUCTOR: Dr Andrew Tappenden
CREDIT WEIGHT AND WEEKLY TIME DISTRIBUTION: credits 3(hrs lect 3 - hrs sem 0 - hrs lab 3)
COURSE DESCRIPTION: This course is designed for students to work in groups on suitable projects to familiarize them with software engineering principles. This course will concentrate on Unified Software Development and Use Cases. Topics include: requirements specification, functional and object-oriented design, verification and maintenance, environments and engineering tools, the software lifecycle, human-computer interface, social and ethical issues.

Prerequisites: CMPT 305 and 360
REQUIRED TEXTS: Project-Based Software Engineering: An Object-Oriented Approach. Stiller, Evelyn and Cathie LeBlanc, Addison-Wesley, 2002
Individual Assignments15%
Midterm Exam15%
Group Project40%
Final Exam 30%
COURSE OBJECTIVES: This  is  a  course  about  the  development  of  real-world  software.  Software  systems  are  the  most complex things that humans build.  Consequently, software development projects often turn in to expensive failures.  Software engineering tackles the size and complexity of real-world software development by adopting a disciplined approach to designing, developing and maintaining the software.  CMPT 320 presents a broad overview of the main ideas of software engineering and introduces current software engineering techniques.  The course has a strongly practical flavour, including a group project that will flow through the entire course.

By the end of the course, students should:
  • Understand  the  main  ideas  and  issues  of  software  engineering,  including  the  role  of software development processes.
  • Be able to apply several current software engineering techniques—Traditional & Agile.
  • Have gained experience of developing software in teams and acting professionally.
  • Be better equipped to contribute to industrial software development projects.
COURSE OUTLINE: Why is Software Engineering so Difficult?
  • What is a Requirement?
  • Requirement Gathering
  • Use Cases
  • Logical/Formal Descriptions
  • Requirements within Agile Methods
  • Test Driven Development
  • Design Patterns
  • Configuration Management
  • Coupling & Cohesion
  • Refactoring
  • Debugging
  • Functional Testing
  • Structural Testing
  • Other forms of Testing
  • Inspection
  • Static Code Analysis
Maintenance (Time permitting)
  • Legacy Systems
  • Reverse Engineering

Required texts, assignments, and grade distributions may vary from one offering of this course to the next. Please consult the course instructor for up to date details.

The King's University
Maintained By Glenn J Keeler