Fall 2017. CS 5704: Software Engineering

Lectures: Wednesdays, 9:45am – 12:30pm, McBryde 655
Instructor: Francisco Servant [fservant@vt.edu]
Instructor Office hours: After class, or by email appointment
Graduate Teaching Assistant: Kanagaraj Nachimuthu Nallasamy
Graduate Teaching Assistant Office hours: Fridays, 9:00am – 11:00 am, McBryde 106

Description

Software engineering is a highly complex endeavor. Software engineers today perform complex tasks that involve the creative creation and comprehension of complex information, such as: code structure, implementation rationale, dynamic software behavior, change implications, and development team dynamics. In this class, we will learn about and discuss the state-of-the-art research in software engineering. The students will also have the opportunity to work on research projects to develop novel techniques in 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 the necessary readings in Canvas.

Grading and Evaluation

Distribution of points:

There are three elements to your grade: a research project, short paper critiques (CTTC), and class attendance and participation. Each assignment will contribute to a different percentage of your grade:

Class Attendance and Participation (including paper presentations) 20%
CTTC 30%
Research Project 50%

Submission guidelines:

Assignments must be submitted as follows:

  • through Canvas. Use the folder for the corresponding assignment
  • as a single PDF (Adobe Acrobat) document
  • by 23:59pm Eastern time on the due date

Late submission policy:

Assignments will be turned in electronically through Canvas. Unexcused late assignments will be penalized 25% per 24-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

Weekly paper presentations

Every week, each paper that we read will be first presented by one of you. Your presentation will be very brief (max. 5 minutes), and should include the answer to these questions:

  1. What problem is the paper addressing?
  2. Why is the problem important?
  3. What are the existing solutions to this problem?
  4. What is the proposed solution in this paper?
  5. Why is the proposed solution different or more promising than the existing solutions?
  6. How did they evaluate that the proposed solution in fact improves the state of the art?
  7. To what extent does the proposed solution improve the state of the art?
  8. What is something in which you disagree with the authors? Ask the room what they think.

List of presenters:

You will be assigned to present papers in a randomized order. Please, check the class schedule regularly to know when you are presenting. To protect your privacy, I am only including the first 3 letters of your last name in the list.

Cut-to-the-chase (CTTC) critiques

The short paper critiques will 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 will write a short critique and analysis of each week’s papers. Since multiple papers are assigned, you’ll have to learn how to present incisive, cut-to-the-chase (CTTC) analyses in few words.

I am not interested in reading a paraphrase of each paper’s abstract. In other words, you should not include in your CTTC the answer to the questions that will be answered in the weekly paper presentations.

I am interested in reading your own 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? Try to mostly use sentences like “I agree with…”, “I think that…”, “In my opinion…”, “I disagree that…”. More importantly, back up your comments with the reason behind your comments — i.e., adding “because…” to the former sentences. Also, the best comments are those that inspire a whole new research project. Try hard to think about those as well. What’s next after this paper? How did it inspire you to take this work further?

Each CTTC critique will report on the papers that will be discussed the day afterwards in class. For example, CTTC1 will be submitted by 09/05/17 11:59pm and it will critique the papers that will be discussed on 09/06/17.

Each week you will submit a single PDF file with your critique for every paper assigned for that week. Your comments should use at least half a page of a letter-sized document for each assigned paper. You can use any format that you want, but keep in mind that the grade for your CTTC will be awarded for the quality and quantity of your comments in your critique.

Research project

You will work on a research project related to the topics covered in class. You may work individually or in groups of up to three people. Groups of are expected to deliver a contribution that is multiple times as substantial as that delivered by individuals.

You are expected to design your own research project or select one of the projects proposed by the instructor. To help you design your project, you can look at the Mining challenge of the 2018 International Conference of Mining Software Repositories. You are encouraged to use the dataset proposed for the Mining Challenge if your project is based on analyzing software data. If you define your own project, you should discuss it with the instructor during office hours before writing your proposal report.

You are encouraged to use Bitbucket for your source code and project report documents. Add the instructor (username fservant) as your project member to facilitate my feedback.

All your reports should follow the NEW ACM Formatting Guidelines. You should use the sigconf variation of this template.

Research project deliverables (and project grade percentage):

  • Project proposal report (10%)

    • Your project proposal should be at least 2 pages, and it should include:
      • Introduction: describing the problem, why the problem is important, your proposed solution, and how you expect your solution to improve the state of the art.
      • Related work: describing other published research related to the project that you are proposing. Other research can be related because: it motivates the need for your project, it tries to solve the same problem in a different way, it uses your proposed technique for other problems, etc.
  • Project proposal presentation (10%)

    • Your project proposal presentation should include the same information as your project proposal report, but summarized in a 4-minute lightning talk.
  • Project milestone reports (x3, 10% each)

    • Your project proposal should be at least 1 full page, and it should include:
      • Progress made since the last project report
      • Progress commitment for the next project report
      • Potential roadblocks that you may encounter in the remaining weeks, and how you expect to overcome them
  • Mid-semester project presentation (10%)

    • Your project progress presentation will take 4 minutes, and it should include:
      • Problem description (updated from your project proposal)
      • Solution description (updated and extended from your project proposal)
      • Progress made so far (since your project proposal)
      • Planning for the remaining weeks
      • Potential roadblocks that you may encounter in the remaining weeks, and how you expect to overcome them
  • Final project report (30%)

    • Your final project report should be a minimum of 7 pages (including references) and a maximum of 10 pages (plus references). The report should include:
      • Introduction: describing the problem, why the problem is important, your proposed solution, and how you expect your solution to improve the state of the art.
      • Related work: describing other published research related to the project that you are proposing. Other research can be related because: it motivates the need for your project, it tries to solve the same problem in a different way, it uses your proposed technique for other problems, etc.
      • Approach: conceptual description of your solution
      • Implementation: technical description of the solution that you implemented
      • Evaluation: description of the experiments that you performed, and interpretation of your results.
      • Conclusion: Did you solve the problem? To what extent? For which cases?
      • References: Citations of all the research papers relevant to your project
  • Final project presentation (10%)

    • Your final project presentation should take 4 minutes and include:
      • Short problem description (updated from your project progress presentation)
      • Short solution description (updated from your project progress presentation)
      • Challenges that you resolved along the way
      • Evaluation description and interpretation of your results
      • What did you learn? What would you have done differently? What other future work could be performed, inspired by your project?

Schedule (likely to change)

Week Date Topic Assignment
1 08/30/17 Introduction to course.
Class survey.
A brief history of software engineering.
09/05/17 CTTC1 by 11:59pm
2 09/06/17 Award-winning research:
Paper 1: Understanding misunderstandings in source code.
Paper 2: Trade-offs in continuous integration: assurance, security, and flexibility.
Paper 3: Fairness testing: testing software for discrimination.
Paper 4: Automatically diagnosing and repairing error handling bugs in C.
Paper presentations by:
Paper 1: Nac, Paper 2: Ven, Paper 3: Kon, Paper 4: Das
09/12/17 CTTC2 by 11:59pm
3 09/13/17 Empirical studies in Software Engineering:
Paper 1: An Empirical Study On the Removal of Self-Admitted Technical Debt
Paper 2: Classifying Developers into Core and Peripheral: An Empirical Study on Count and Network Metrics
Paper 3: Why Do Developers Use Trivial Packages? An Empirical Case Study on npm
Paper 4: An Empirical Study on Android-related Vulnerabilities
Paper presentations by:
Paper 1: Bar, Paper 2: Hu, Paper 3: Koi, Paper 4: Wan
09/19/17 CTTC3 by 11:59pm
4 09/20/17 Software Development Support:
Paper 1: Detecting Missing Information in Bug Descriptions
Paper 2: Measuring the Cost of Regression Testing in Practice: A Study of Java Projects using Continuous Integration
Paper 3: Mining Sequences of Developer Interactions in Visual Studio for Usage Smells
Paper presentations by:
Paper 1: Mor, Paper 2: Has, Paper 3: Khan
09/26/17 Project proposal report and slides by 11:59pm
5 09/27/17 Project proposal presentations. Project presentations order:
Haqq, Holm, Kond, Khaw, Chon, Gupt, Dasg, Wang, Liu, More, Eaga, Jin, Kaze, Chan, Hasi, Isla, Bang, Clay, Alsa, Ying, Mart, Mans, Kale, Gadg, Bart, Kotu, Khan
10/03/17 CTTC4 by 11:59pm
6 10/04/17 Program comprehension:
Paper 1: Automatically Assessing Code Understandability: How Far Are We?
Paper 2: Automatically Generating Commit Messages from Diffs using Neural Machine Translation
Paper 3: A Case Study of Program Comprehension Effort and Technical Debt Estimations
Paper presentations by:
Paper 1: Jin, Paper 2: Als, Paper 3: Cla
10/10/17 CTTC5 and Project milestone report 1 by 11:59pm
7 10/11/17 Automated program repair:
Paper 1: Automatic inference of code transforms for patch generation
Paper 2: Automatic repair of real bugs in java: a large-scale experiment on the defects4j dataset
Paper 3: Automated Software Transplantation
Paper presentations by:
Paper 1: Man, Paper 2: Mar, Paper 3: Eag
10/17/17 CTTC6 by 11:59pm
8 10/18/17 Mining Software Repositories:
Paper 1: Generating API Call Rules from Version History and Stack Overflow Posts
Paper 2: Classifying code comments in Java open-source software systems
Paper 3: Predicting Likelihood of Requirement Implementation within the Planned Iteration: An Empirical Study at IBM
Paper presentations by:
Paper 1: Haq, Paper 2: Hol, Paper 3: Liu
10/24/17 Project milestone report 2 and slides by 11:59pm
9 10/25/17 Mid-semester project presentations. Project presentations order:
Haqq, Holm, Kond, Khaw, Chon, Gupt, Dasg, Wang, Liu, More, Eaga, Jin, Kaze, Chan, Hasi, Isla, Bang, Clay, Alsa, Ying, Mart, Mans, Kale, Gadg, Bart, Kotu, Khan
10/31/17 CTTC7 by 11:59pm
10 11/01/17 Fault localization:
Paper 1: Empirical evaluation of the tarantula automatic fault-localization technique
Paper 2: Bug localization with combination of deep learning and information retrieval
Paper 3: Where is the bug and how is it fixed? an experiment with practitioners
Paper presentations by:
Paper 1: Man, Paper 2: Yin, Paper 3: Gup
11/07/17 CTTC8 by 11:59pm
11 11/08/17 Software Visualization:
Paper 1: Method Execution Reports: Generating Text and Visualization to Describe Program Behavior
Paper 2: On the Impact of the Medium in the Effectiveness of 3D Software Visualizations
Paper 3: Visual Exploration of Memory Traces and Call Stacks
Get papers from Canvas
Paper presentations by:
Paper 1: Gup, Paper 2: Cho, Paper 3: Isl
11/14/17 CTTC9 and Project milestone report 3 by 11:59pm
12 11/15/17 APIs:
Paper 1: How Good Are the Specs? A Study of the Bug-Finding Effectiveness of Existing Java API Specifications
Paper 2: Analyzing APIs Documentation and Code to Detect Directive Defects
Paper 3: API Code Recommendation Using Statistical Learning from Fine-grained Changes
Paper presentations by:
Paper 1: Ban, Paper 2: Kot, Paper 3: Kaz
11/21/17 Thanksgiving break.
13 11/22/17 Thanksgiving break. No class.
11/28/17 CTTC10 by 11:59pm
14 11/29/17 Future of Software Engineering (Travelogues):
Paper 1: Software Architecture: A Travelogue
Paper 2: Software Testing: A Research Travelogue
Paper 3: Software Evolution and Maintenance
Paper presentations by:
Paper 1: Khaw, Paper 2: Kal, Paper 3: Gad
12/05/17 CTTC11 by 11:59pm
15 12/06/17 Future of Software Engineering (Roadmaps):
Paper 1: Engineering Big Data Solutions
Paper 2: Future of End-User Software Engineering: Beyond the Silos
Paper 3: The (R)Evolution of Social Media in Software Engineering
Paper presentations by:
Paper 1: Ayaan, Paper 2: Aparna, Paper 3: Ri
12/12/17 Final project report and slides by 11:59pm
16 12/13/17 Final project presentations. Project presentations order:
Haqq, Holm, Kond, Khaw, Chon, Gupt, Dasg, Wang, Liu, More, Eaga, Jin, Kaze, Chan, Hasi, Isla, Bang, Clay, Alsa, Ying, Mart, Mans, Kale, Gadg, Bart, Kotu, Khan

Policies

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.

Accommodations:

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