Software Engineering

Course Information

Course Description

An intense hands-on study of practical techniques and methods of software engineering. Topics include: software processes and management, requirements engineering, software evolution and configuration management, advanced object-oriented design, design patterns, code construction techniques, verification and validation techniques, and code optimization and tuning. All topics are integrated and applied during the semester-long group project. The aim of the project is to prepare students for dynamics in a real workplace. Members of the group will meet on a regular basis to discuss the project and to assign individual tasks. Students will be judged primarily on the final project.

Prerequisites

Familiarity with C++, experience with at least one large software project.

Textbooks

Recommended: Sommerville, Ian. Software Engineering, Seventh Edition (abbreviated as SE7).
Recommended: Meyers, Scott. Effective C++, Second Edition (abbreviated as EC++).
Recommended: McConnell, Steve. Code Complete, Second Edition (abbreviated as CC2).

Some suggested C++ references:
Lippman, Stanley. Essential C++.
Lippman, Stanley. C++ Primer, Third Edition.
Lakos, John. Large-Scale C++ Software Design.
Stroustrup, Bjarne. The C++ Programming Language.

Lectures

Monday and Wednesday 3:30-4:45pm in room 102 of Warren Weaver Hall.

Office hours

Grading

Final grades will be based on the following:

10% Project Proposal
10% Individual Presentation
40% Weekly Assignments
40% Final Project

Academic Integrity

Please review the
departmental academic integrity policy. In this course, you are encouraged to work together on the project and assignments. However, any help you receive must be clearly explained. Also, you should consult the instructor before using materials or code other than that provided in class. Copying without giving appropriate acknowledgement is a serious offense with consequences ranging from no credit to potential expulsion.

Acknowledgments

In preparing material for this class, I have drawn from the above-mentioned texts, as well as the following web pages: