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 presentations.

Prerequisites

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

Textbooks

Required: Sommerville, Ian. Software Engineering, Seventh Edition (abbreviated as SE7).
Required: 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 2:00-3:15pm in room 101 of Warren Weaver Hall.

Sections

There will be weekly discussion sections, where students attending can receive additional help from the TA. Sections are intended to be more interactive than lectures.

There are two available sections:

Grading

Final grades will be based on the following:

30% Weekly Assignments
30% In-Class Presentations
40% Final Project Report

Academic Honesty

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: