CS 3704: Intermediate Software Design and Engineering

Spring 2016

Instructor:

Francisco Servant [fservant@vt.edu]

Instructor office hours:

After class, or by email appointment

Teaching Assistant (TA):

Mohammed Seyam [seyam@vt.edu]

TA office hours:

By email appointment

Lectures:

Monday and Wednesday, 2:30-3:45PM, 350 Lavery Hall (WLH)

Description

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

Prerequisites

CS 3114 (Minimum grade of C).

Textbook

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.

Grading and Evaluation

Distribution of points:

Attendance

10 %

Midterm (in class)

20 %

Group Project

50 %

Final Exam

20 %

Grading scale:

A

93% or higher

A-

90% or higher

B+

87% or higher

B

83% or higher

B-

80% or higher

C+

77% or higher

C

73% or higher

C-

70% or higher

D+

67% or higher

D

63% or higher

D-

60% or higher

F

0% or higher

Assignments will be turned in electronically through Canvas. Unexcused late assignments are penalized 25% per 24-hour period.

Schedule (tentative)

Lecture notes will be posted in Canvas after lectures. Reference materials for the lecture, either from the textbooks or relevant articles, are listed in the Textbook section (see above).

Week

Date

Topic

Reference Materials

Meeting Type

Assignment

1

Jan 18

Martin Luther King Holiday. No class.

Jan 20

Introduction to Software Engineering

PRE Ch 1, 2

Standish Group report 1995

Fred Brooks, "No Silver Bullet - essence and accident in Software Engineering"

They write the right stuff

Lecture

2

Jan 25

Group projects

Lecture

Jan 27

Project management

PRE Ch 6

Lecture

3

Feb 1

Project management

PRE Ch 6

Lecture

Feb 3

Requirements

LAR Ch 2, 5, 6, 9

Lecture

Submission by 8pm

SURVEY: Groups and project selection.

4

Feb 8

Requirements

LAR Ch 2, 5, 6, 9

Lecture

Feb 10

Requirements

LAR Ch 2, 5, 6, 9

Lecture

5

Feb 15

Class canceled due to snow storm.

Feb 17

Software Process

PRE Ch 3, 4

SOM Ch 4

Lecture

Submission by 8pm

Assignment 1 - Requirements

6

Feb 22

Professor on travel. Class canceled.

Submission by 8pm

Assignment 1 - Requirements

Feb 24

Software Process

PRE Ch 3, 4

SOM Ch 4

Lecture

7

Feb 29

High-level Design

PRE Ch 10, 12

SOM Ch 11

Lecture

March 2

Midterm

Evaluation

Midterm

8

March 7

Spring Break. No class.

March 9

Spring Break. No class.

9

March 14

High-level Design

PRE Ch 10, 12

SOM Ch 11

Lecture

March 16

Detailed Design

LAR Ch 14, 15, 17, 19

Lecture

10

March 21

Detailed Design

LAR Ch 16

Lecture

March 23

Detailed Design

Beginning Database Design Solutions Ch 1, 9

Lecture

11

March 28

Detailed Design

Beginning Database Design Solutions Ch 1, 9

Lecture

Submission by 8pm

Assignment 1 - Use Cases part (2nd chance, optional)

Assignment 2 -

High-level Design

March 30

Detailed Design

PRE Ch 15

Lecture

12

April 4

Guest lecture: Software Engineering research by Dr. Na Meng

Lecture

April 6

Detailed Design

LAR Ch 26

Lecture

Submission by 8pm

Assignment 3 - Detailed Design

13

April 11

Testing

PRE Ch 22

Lecture

April 13

Testing

PRE Ch 22

Lecture

14

April 18

Testing

PRE Ch 23

Lecture

April 20

Testing

PRE Ch 24

Lecture

15

April 25

Refactoring

Refactoring: Improving the Design of Existing Code

Lecture

Submission by 8pm

Assignment 4 - Implementation

Assignment 5 - Tests

April 27

Assignment 6 - Project Presentations

Collaborative Music Player 3

Virtual Stock Market Game

Code History Visualizer

Presentation

16

May 2

Assignment 6 - Project Presentations

Smart Home System

Restaurant Automation

Web-based Stock Forecaster

Presentation

May 4

Assignment 6 - Project Presentations

Code Search Engine

Collaborative Music Player 1

Collaborative Music Player 2

Presentation

Exams week

May 9

Exam in class (350 Lavery Hall) 2:05pm-4:05pm

Evaluation

Final Exam

Policies

Virginia Tech Honor Code applies. 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.

Accommodations: If you need special accommodations because of a disability, please contact the instructor during the first week of classes.