CS 5704: Software Engineering

Fall 2015

Instructor:

Francisco Servant [fservant@vt.edu]

Instructor office hours:

After class, or by email appointment

Teaching Assistant (TA):

Haitham Elmarakeby [marakeby@vt.edu]

TA office hours:

Tue 9:00-11:00AM at 2160-U Torgersen Hall or by email appointment

Lectures:

Monday and Wednesday, 2:30-3:45PM, 231 McBryde Hall

Description

Catalog description:

Study of the principles and tools applicable to the methodical construction and controlled evolution of complex software systems. Tools for all phases of the life cycle are presented; particular attention focuses on the design, testing, and maintenance phases. Attention to measurement models of the software process and product which allow quantitative assessment of cost, reliability, and complexity of software systems.

Detailed Description:

This class has two objectives: (1) provide a useful overview of the state of the art (2) introduce some of the research frontiers of the field. It accomplishes this through a mix of lectures and assignments focused on the state of the art, readings from the research literature, and guest lectures from specialists in sub-areas of software engineering.

Prerequisites

Graduate or senior standing in the Department of Computer Science and a prior course in software engineering, e.g., CS 4704.

Readings

The majority of the readings in the course will be papers available through the IEEE or ACM Digital Libraries. The instructor will provide all necessary readings.

The following books are recommended for background and reference:

Grading and Evaluation

There are four elements to your grade: a final exam, a research project, short paper summaries, and class attendance and participation.

Distribution of points:

CTTC

25 %

Research Project (Assignments)

30 %

Course Exam

25 %

Class Attendance and Participation

20 %

CTTC:

The short paper summaries “allow you” to demonstrate that you've read and thought about the assigned readings. Readings are assigned, as shown in the schedule, each week of the class. You are obliged to write a short summary and analysis of each week's papers. I am not interested in only reading a paraphrase of each paper's abstract. I am interested in reading your assessment of each paper: what points do you believe to be the important ones? Do you believe those points? Why or why not? What points did the author(s) not address that they should have? Since multiple papers are assigned, you'll have to learn how to present incisive, cut-to-the-chase (CTTC) analyses in few words.

Your CTTC's on each topic are due the night before class at 8:00PM (i.e., the night before the discussion of those papers). Each week you will submit a single PDF file with your summary for every paper assigned for that week. Your comments for each assigned paper should use at least half a page of a letter-sized document.

CTTC's must be submitted as follows:

Research Project (Assignments):

The research project allows you to obtain some research experience in software engineering in a particular problem. In this project, you will pick a problem that is of interest to you, review the literature related to that problem, evaluate the current approaches for solving the problem, and propose a new approach of your own to address the problem.

Course Exam:

The final exam will entail your writing an evaluation of some sub-area of software engineering and identifying what you believe to be promising, or at least necessary, research directions. You'll be able to choose, in advance, the sub-area you'll write about. The purpose here is to demonstrate that you've thought substantively about an area of software engineering, to the point where you can identify some important needs, trends, opportunities, insights, ...

Schedule (tentative)

Week

Date

Topic

Meeting Type

Assignment

1

24 Aug

Introduction to Software Engineering (Guest lecture by Eli Tilevich)

Lecture

Read 3 papers for CTTC1

26 Aug

Introduction to Software Engineering (Guest lecture by Eli Tilevich)

Discussion CTTC1

2

31 Aug

Attend Distinguished Lecture by Laurie Hendren at McBryde 655 (see http://manta.cs.vt.edu/cs5944/Talks/Hendren_Graduate_Seminar_Announcement.pdf)

Lecture

Read papers for CTTC2 (see Canvas).

Read Assignment 1 (see Canvas).

Write a short CTTC for Dr. Hendren’s Distinguished Lecture.

1 Sep

Submission

CTTC1 due by 8PM (extended because of late adds)

2 Sep

Introduction to the Course.

Software Process.

Lecture

3

7 Sep

Labor Day. No Class.

8 Sep

Submission

CTTC1 due by 8PM.

CTTC2 due by 8PM.

Short CTTC for Dr. Hendren’s Distinguished Lecture due by 8PM.

9 Sep

Software Process

Discussion CTTC2

Read papers for CTTC3

4

14 Sep

Requirements

Lecture

15 Sep

Submission

CTTC3 due by 8PM.

Assignment 1 due by 8PM.

16 Sep

Requirements

Discussion CTTC3

Read papers for CTTC4.

Read Assignment 2.

5

21 Sep

Software Architecture

Lecture

22 Sep

Submission

CTTC4 due by 8PM

23 Sep

Software Architecture

Discussion CTTC4

Read papers for CTTC5

6

28 Sep

Design

Lecture

29 Sep

Submission

CTTC5 due by 8PM

Assignment 2 due by 8PM

30 Sep

Design

Discussion CTTC5

Read papers for CTTC6

Read Assignment 3

7

5 Oct

Usability

Lecture

6 Oct

Submission

CTTC6 due by 8PM

7 Oct

Usability

Discussion CTTC6

Read papers for CTTC7

8

12 Oct

Quality

Lecture

CTTC8 papers available

Assignment 4 available

13 Oct

Submission

CTTC7 due by 8PM

Assignment 3 due by 8PM

14 Oct

Quality

Discussion CTTC7

9

19 Oct

Testing and Debugging

Lecture

Read at least 1st paper of CTTC8 before class

CTTC9 papers available

20 Oct

Submission

CTTC8 due by 8PM

21 Oct

Testing and Debugging

Discussion CTTC8

10

26 Oct

Software Repositories

Lecture

Read at least 1st paper of CTTC9 before class

CTTC10 papers available

Assignment 5 available

27 Oct

Submission

CTTC9 due by 8PM

Assignment 4 due by 8PM

28 Oct

Software Repositories

Discussion CTTC9

11

2 Nov

Development Support

Lecture

Read at least 1st paper of CTTC10 before class

CTTC11 papers available

3 Nov

Submission

CTTC10 due by 8PM

4 Nov

Development Support

Discussion CTTC10

12

9 Nov

Program Comprehension

Lecture

Read at least 1st paper of CTTC11 before class

CTTC12 papers available

Assignment 6 available

10 Nov

Submission

CTTC11 due by 8PM

Assignment 5 due by 8PM

11 Nov

Program Comprehension

Discussion CTTC11

13

16 Nov

Software Maintenance

Lecture

Read at least 1st paper of CTTC12 before class

CTTC13 papers available

17 Nov

Submission

CTTC12 due by 8PM

18 Nov

Software Maintenance

Discussion CTTC12

14

23 Nov

Thanksgiving Holiday. No Class.

25 Nov

Thanksgiving Holiday. No Class.

15

30 Nov

Open Source

Lecture

Read at least 1st paper of CTTC13 before class

CTTC14 papers available

1 Dec

Submission

CTTC13 due by 8PM

Assignment 6 due by 8PM

2 Dec

Open Source

Discussion CTTC13

16

7 Dec

Software Visualization and Exam Discussion

Lecture

Read at least 1st paper of CTTC14 before class

8 Dec

Submission

CTTC14 due by 8PM

9 Dec

Software Visualization and Exam Discussion

Discussion CTTC14

Exams week

14 Dec

Exam

Policies

VPI & SU Honor Code is applicable. 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.