CS5704 -- Software Engineering
Course Syllabus

Instructor: Dr. Shawn A. Bohner
bohner@nvc.cs.vt.edu
Northern Virginia Center Room 311, Phone: 703-538-8374

 

Introduction
As demand for information technology continues to grow, software is evolving and changing at an unprecedented rate. However, poorly engineered software exposes systems and the organizations they serve to risks ranging from innocent defects injected during maintenance to more sinister information assurance vulnerabilities. This course presents software principles that enable software engineers to develop and maintain software, and to manage software efforts effectively. Students will learn techniques for delivering software products on-time, on-budget, and on specification.

Prerequisites
Graduate or senior standing in the Computer Science, MIT, or MIS program; Ability to read and write English well and to program; Some software development and/or maintenance experience will make course more meaningful.

Course Description
This course provides an in-depth study of the fundamental principles underlying Software Engineering. It covers the software lifecycle starting with requirements engineering, continuing through design, and implementation, and with integration and testing. It also examines key cross-lifecycle activities such as project management, measurement, and quality assurance. In particular, the material presented will address management issues associated with people, product, and process. A systematic approach to evolve software is emphasized recognizing the dependencies between software development and maintenance activities. Specific topics will focus on software process and project measurements, project planning, risk analysis, project scheduling and tracking.

This is an online course and students will be required to use the MIT CS5704 course website to obtain relevant information, and interact with instructors and other students. Announcements and assignments will be conveyed via Virginia Tech email addresses and/or posted on the website. Office hour sessions will be held using Centra Symposium for the purpose of answering questions and carrying out discussions. Students will be expected to work on some assignments with other team members.

Required Textbook: Software Engineering: A Practitioner's Approach, 5th Edition
by Roger S. Pressman; Hardcover - 888 pages (January 2001) McGraw Hill;
ISBN: 0073655783

This text has a website SEPA-5 with supporting material for the course at:
http://www.mhhe.com/engcs/compsci/pressman/student_index.mhtml

Optional Textbook: Applying UML and Patterns: An Introduction to Object-Oriented
Analysis and Design and the Unified Process
, 2nd Edition
by Craig Larman; Hardcover - 625 pages (July 2001) Prentice Hall PTR; ISBN: 0130925691

Grading

Student grades will be determined generally as follows (unless circumstances or events warrant changes):

Midterm
25%
Final
25%
Project/Team Participation
35%
Homework/Class Participation
15%
The team and class participation allocations among assignment components will be determined by the course instructor based on perceived difficulty and effort levels.

Ethics: VPI & SU Honor Code applies. Graduate Honor Code at http://fbox.vt.edu/studentinfo/gradhonor/ governs class and performance. Joint study is allowed (even encouraged) on "Study" and "Read" items; however, each student must produce his or her solutions individually. Students must not collaborate on tests or homework that is passed in unless directed by the instructor. Please recognize that copyrighted sites/pages/contents on the Internet cannot be saved or printed without explicit permission.


Tentative Schedule of Readings & Lectures

Much of the material for this course is derived from the SEPA-5 text by Roger Pressman. The following tables outline the major parts of the book and concurrent readings that will accompany the lectures. While there are sixteen weeks total to cover the material, there will be two weeks dedicated to examinations (midterm and final).

Lecture
Topics/Readings
Parts
1
Chapter 1: The Product
A - B
Chapter 2: The Process
A - C
2
Chapter 5: Software Project Planning
A - D
Chapter 6: Risk Analysis and Management
3
Chapter 7: Software Scheduling & Tracking
A - D
4
Chapter 10: System Engineering
A - B
Chapter 11: Analysis Concepts and Principles
A - C
5
Chapter 12: Analysis Modeling
A - E
6
Requirements Verification
A - C
7
Chapter 20: Object Oriented Concepts
A - B
Chapter 21: Object Oriented Analysis
A - D
Midterm
Tentatively Scheduled for Class 8
8
Chapter 13: Design Concepts & Principles
A - C
9
Chapter 14: Architectural Design
A - F
10
Chapter 15: User Interface
A - B
Chapter 16: Component-Level Design
A - B
11
Chapter 22: Object Oriented Design
A - B
12
Chapter 17: Software Testing Techniques
A - C
Chapter 18: Software Testing Strategies
A - E
13
Chapter 23: Object Oriented Testing
A - B
14
Advanced Topics (To be determined)
Final
Tentatively Scheduled for Class 16
 

Tentative Research Readings and Homework

Homework and projects are necessary instruments for tracking progress of students. The typical student will work approximately 12 hours outside of lectures each week on this course. This is a demanding course covering a great deal of material -- avoid falling behind on the assignments. While this course is demanding, it is also rewarding for those that want strong understanding of software engineering as a discipline.