Fall 2019. CS5704: Software Engineering

Lectures: Wed 8:00-10:30AM, McBryde Hall 226
Instructor: Francisco Servant [fservant@vt.edu]
Instructor Office hours: After class, or by email appointment
Graduate Teaching Assistant: Khadijah Al Safwan [khsaf@vt.edu] [http://khsafwan.com]
Graduate Teaching Assistant Office hours: Wed 1:00-3:00PM, KWII 2202


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.


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


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 summaries (CTTC), and class attendance and participation. Each assignment will contribute to a different percentage of your grade:

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

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 11:59pm Eastern time on the due date

Late submission policy:

Assignments will be turned in electronically through Canvas. 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

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 or that you would like to discuss? Ask the room what they think.

List of presenters:

You will be assigned to present papers in a randomized order by walking down the list below in a round-robin fashion (when we finish the list, we will start over at the top again). To protect your privacy, I am only including the first 4 letters of your last name in the list:

  • Isla
  • Ball
  • Shen
  • Feng
  • Lagh
  • Aldn
  • Band
  • Kou
  • Kras
  • Belg
  • Chak
  • Wang
  • Finc
  • Cowa
  • Hass
  • Ibra
  • Sun
  • June
  • Nade
  • Xie
  • Zhan

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 talk about the papers that will be discussed the following day in class.

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 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 (see the “Research Projects” file in Canvas). To help you design your project, you can look at the Mining challenge of the 2020 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 Github for your source code and project report documents. Add the instructor (username fservant) as your project member to facilitate 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 lightning talk.
  • Project milestone reports (x3, 10% each)

    • Your project milestone report 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 8 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?


Week Date Topic Assignment
1 2019–08–28

Instructor on travel.

Read Amy Ko’s (very short) History of Software Engineering.
Also, take the class survey by Aug 28 10:30am
2 2019–09–03 Assignment due CTTC1 by 11:59pm
2019–09–04 CTTC1 - Software Developers.
1. Today Was A Good Day: The Daily Life Of Software Developers
2. What Makes A Great Manager Of Software Engineers?
3. Software Engineering For Machine Learning: A Case Study
Presented by: Instructor
3 2019–09–10 Assignment due CTTC2 by 11:59pm
2019–09–11 CTTC2 - Expertise Identification.
1. Does Reviewer Recommendation Help Developers?
2. Identifying Experts In Software Libraries And Frameworks Among Github Users
3. Automatically Recommending Peer Reviewers In Modern Code Review
Presented by: Isla, Ball, Shen
4 2019–09–17 Assignment due CTTC3 by 11:59pm
2019–09–18 CTTC3 - Merge Conflicts.
1. The Life-cycle Of Merge Conflicts: Processes, Barriers, And Strategies
2. On The Nature Of Merge Conflicts: A Study Of 2,731 Open Source Java Projects Hosted By Github
3. Predicting Merge Conflicts In Collaborative Software Development.
Presented by: Feng, Lagh, Aldn
5 2019–09–24 Assignment due CTTC4 by 11:59pm
2019–09–25 CTTC4 - Continuous Integration.
1. Redefining Prioritization: Continuous Prioritization For Continuous Integration
2. (Blinded pre-print. Download this paper in Canvas, under the Files section.)
3. A Conceptual Replication Of Continuous Integration Pain Points In The Context Of Travis Ci
Presented by: Band, Kou, Kras
6 2019–10–01 Assignment due Project proposal report and slides by 11:59pm
2019–10–02 Project proposal presentations.
7 2019–10–08 Assignment due CTTC5 by 11:59pm
2019–10–09 CTTC5 - Software Comprehension.
1. Improving Source Code Readability: Theory And Practice
2. Regexes Are Hard: Decision-making, Difficulties, And Risks In Programming Regular Expressions.
3. Decomposing The Rationale Of Code Commits: The Software Developer’s Perspective
Presented by: Belg, Cowa, Wang
8 2019–10–15 Assignment due CTTC6 and Project milestone report 1 by 11:59pm
2019–10–16 CTTC6 - Code Review.
1. Characteristics Of Useful Code Reviews:an Empirical Study At Microsoft
2. Test-driven Code Review: An Empirical Study
3. “Was My Contribution Fairly Reviewed?” A Framework To Study The Perception Of Fairness In Modern Code Reviews
Presented by: Finc, Chak, Hass
9 2019–10–22 Assignment due CTTC7 by 11:59pm
2019–10–23 CTTC7 - Automated Software Repair.
1. Automatic Software Repair: A Survey
2. Un-break My Build: Assisting Developers With Build Repair Hints
Presented by: Ibra, Sun
10 2019–10–29 Assignment due Project milestone report 2 and slides by 11:59pm
2019–10–30 Mid-semester project presentations.
11 2019–11–05 Assignment due CTTC8 by 11:59pm
2019–11–06 CTTC8 - Software Testing.
1. Analyzing The Effects Of Test Driven Development In Github
2. Visualization Of Test Information To Assist Fault Localization
3. Metamorphic Testing Of Restful Web Apis
Presented by: June, Nade, Xie
12 2019–11–12 Assignment due CTTC9 by 11:59pm

Instructor on travel. Watch the videos linked below and critique them on your CTTC9.

CTTC9 - Theories and Innovation in Software Engineering.
1. Theories In Software Engineering
2. Innovation In Software Engineering
13 2019–11–19 Assignment due CTTC10 and Project milestone report 3 by 11:59pm
2019–11–20 CTTC10 - Software Security.
1. How Reliable Is The Crowdsourced Knowledge Of Security Implementation?
2. The Seven Sins: Security Smells In Infrastructure As Code Scripts
3. Mapping The Field Of Software Life Cycle Security Metrics
Presented by: Zhan, Isla, Ball
14 2019–11–27

Thanksgiving. No class.

15 2019–12–03 Assignment due CTTC11 by 11:59pm
2019–12–04 CTTC11 - Machine Learning for Software Engineering.
1. Deep Code Search
2. A Neural Model For Generating Natural Language Summaries Of Program Subroutines
3. On Learning Meaningful Code Changes Via Neural Machine Translation
Presented by: Shen, Feng, Lagh
16 2019–12–10 Assignment due Final project report and slides by 11:59pm
2019–12–11 Final project presentations.


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.