Spring 2020. CS 3704: Intermediate Software Design and Engineering

Lectures: Tuesday and Thursday, 8:00am – 9:15am, McBryde Hall 113
Instructor: Francisco Servant [fservant@vt.edu]
Instructor Office hours: After class, or by email appointment
Teaching Assistants: Sk Adnan Hassan [skadnan@vt.edu], Ibrahim Asadullah Tahmid [iatahmid@vt.edu]
Teaching Assistant Office hours: McBryde Hall 106, 110. Hours: Mondays 10am-12pm (Ibrahim), Wednesdays 4-6pm (Adnan)


Software engineering is concerned with developing and maintaining software systems that behave reliably and efficiently, and satisfy all requirements that customers have defined for them. In this course, we will first introduce software process and then go over every phase in the process: requirements analysis, software design, implementation, testing, and maintenance. Finally, we will briefly introduce some advanced concepts in software engineering. We will learn-by-doing to strengthen our understanding of materials covered in lectures. Class attendance and participation are highly encouraged to improve critical thinking and communication skills of students. Students will do a group project (5 people per group) following all the stages of the software development lifecycle. Students will: document software requirements, design software, implement code, and test the functionality of a software project.


CS 3114 (Minimum grade of C).


The textbook for the course concentrates on the tasks of specification, requirements and object-oriented design. The supplemental texts listed here are NOT REQUIRED for the course, but contain a broader set of materials about software engineering. Hard or electronic copies of these books are available at VT library. Class lectures and the books will provide the material to use as you build your projects. Some of the material will be in your textbook; some will not. Additional materials will be available online.

  • Craig Larman, Applying UML and Patterns: An Introduction to Object-oriented Analysis and Design, Edition 3, Prentice Hall, 2005. (LAR)
  • Roger S. Pressman, Software Engineering: A Practitioner’s Approach, McGraw Hill, 2005. SUPPLEMENTAL (PRE)
  • Ian Sommerville, Software Engineering, Addison Wesley, 2007. SUPPLEMENTAL. (SOM)
  • Rod Stephens, Beginning Database Design Solutions, Wrox, 2008. (STE)
  • Eric Freeman, Elisabeth Robson, Kathy Sierra, and Bert Bates, Head First Design Patterns. SUPPLEMENTAL.

Grading and Evaluation

Distribution of points:

In-class Quizzes 10%
Midterm 22%
Final Exam 33%
Group Project 45%

I anticipate that many of you will not be able to attend some classes. So, I am canceling the Quizzes part of the grade, and redistributing their points to the other graded parts of the course.

Submission guidelines:

Assignments must be submitted as follows:

  • through Canvas. Use the folder for the corresponding assignment.
  • by 11:59pm Eastern time on the due date

Late submission policy:

Unexcused late assignments will be penalized 1% per 1-hour period.

Grading scale:

≥ 93% → A ≥ 83% → B ≥ 73% → C ≥ 63% → D
≥ 90% → A- ≥ 80% → B- ≥ 70% → C- ≥ 60% → D-
≥ 87% → B+ ≥ 77% → C+ ≥ 67% → D+ ≥ 0% → F

Schedule (subject to change)

Week Date Topic Reference Materials Assignment
1 01/21 Introduction to Software Engineering
01/23 Introduction to Software Engineering * Standish Group Report 1995
* Fred Brooks, “No Silver Bullet”
* They write the right stuff
2 01/28 Requirements PRE Ch 6 Assignment 1 - Work groups. Due by 11:59pm in Canvas
01/30 Requirements PRE Ch 6
3 02/04 Requirements LAR Ch 2, 5, 6, 9 Assignment 2 - Projects, Teams, and Contract. Due by 11:59pm in Canvas
02/06 Requirements LAR Ch 2, 5, 6, 9
4 02/11 Software Process LAR Ch 2, 5, 6, 9
02/13 Software Process LAR Ch 2, 5, 6, 9 Assignment 3 - Requirements. Due by 11:59pm in Canvas
5 02/18 High-level Design PRE Ch 3, 4. SOM Ch4
02/20 High-level Design PRE Ch 3, 4. SOM Ch4
6 02/25 High-level Design PRE Ch 10, 12. SOM Ch 11
02/27 Detailed Design PRE Ch 10, 12. SOM Ch 11
7 03/03 Midterm review session Assignment 4 - High-level Design. Due by 11:59pm in Canvas
03/05 Midterm Midterm exam
8 03/10 No class - Spring Break
03/12 No class - Spring Break
9 03/17 No class - Spring Break
03/19 No class - Spring Break
10 03/24 Detailed Design LAR Ch 14, 15, 17, 19
03/26 Detailed Design LAR Ch 16
11 03/31 Detailed Design STE Ch 1, 9
04/02 Testing PRE Ch 15
12 04/07 Testing LAR Ch 26 Assignment 5 - Detailed Design. Due by 11:59pm in Canvas
04/09 Testing PRE Ch 22
13 04/14 Project Management PRE Ch 23
04/16 Project Management PRE Ch 24
14 04/21 Refactoring Refactoring: Improving the Design of Existing Code
04/23 Continuous Integration Assignment 6 - Implementation and Testing. Due by 11:59pm in Canvas.
15 04/28 No lecture. Work on your Project Presentations and Final Exam.
04/30 No lecture. Work on your Project Presentations and Final Exam. Assignment 7 - Presentation videos. Due by 11:59pm in Canvas.
16 05/05 No lecture. Work on your Final Exam.
05/07 Reading Day. No class.
Exam 05/11 Submit Final Exam by 11:59pm Final exam


Virginia Tech Honor Code:

The work you turn in must be your own. Consequences of cheating in this class: a letter in your academic file, and the course grade is lowered, most likely to F. Material that is copied from books or Web pages needs to be quoted and the source must be given. If you plagiarize, you run the severe risk of failing the class, in a most disgraceful manner.


If you need special accommodations, please contact the instructor during the first week of classes.