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