CS 485/540 Software Engineering

Overview

Text & Materials

Much of the material used in the course is available on the web. 

Required Text: Software Engineering, A Practitioner's Approach by Roger Pressman (7th edition).
Discount copies at Bigwords.com

Optional text: Software Engineering by Ivan Marsic; Free copy here.

Course Philosophy

This is a grad/senior-level course built on a combination of materials from the classic text on the subject by Roger Pressman, guest lectures from industry practitioners, and a collection of essays from some of the course's previous instructor Dr. Joan Smith's favorite author-practitioners, like Joel Spolsky and Steve McConnell.

Software engineering as a discipline has evolved in conjunction with computer hardware and programming tools. Despite its infancy, SW Engineering has some fundamental processes that are recognized as essential to the production of quality software that meets customer requirements. Both the ACM (as "SE2004") and the IEEE (as "Software Engineering Body of Knowledge" or "SWEBOK") have defined a set of skills that practitioners of software development should possess. These include Requirements, Design, Construction, Testing, Quality Control, and Configuration Management. This course seeks to teach principles of software engineering through hands-on experience in constructing a real-life project. In addition, the students will be introduced to applied concepts in software engineering through the blogs and writings of some of today's most noted practitioners.

Course Goals

There are two primary goals of this course:
  1. Cover the key concepts and practices of software engineering as used in today's industries;
  2. Give the students an opportunity to utilize software engineering through a "real world" project.
Ideally, the students will gain an appreciation for the value of developing a Personal Software Process which will be useful in the future when tackling software development projects.

Prequisites:

Senior standing, Graduate student, or permission from the instructor. The student should be familiar with at least one language  used in web software development.