2014: 50.530 Software Engineering
Instructors: Sun Jun (sunjun@sutd)
In this course, we will briefly review the software engineering process and focus on advanced techniques proposed on addressing the core question in software engineering: how do we make sure a software is programmed correctly? We will examine a range of research work which aims to answer this question from different perspectives.
Final Exam: 40%
Problem sets: 20%
The course project is to write a research paper. You are required to (A) pick a research topic which is related to any of the 10 topics covered in the class; (B) survey related work on the topic (what covered in the class is by no means complete or representative); (C) propose a new approach to improve existing approaches on the topic (or a sub-topic); and (D) write a research paper explaining your proposal.
You are strongly advised to discuss your idea with me early during the course. Right after the recess week, you will give a 10 minutes presentation of your research idea in front of the class. You should at least use an example to show what exactly you aim to achieve (i.e., what is the one limitation of existing approaches that you would like to overcome? and How?).
The research paper must be prepared with Latex. You can find a template for your paper here. A sample paper (with a different style) is available here. If you are new to Latex, you can find a quick tutorial here. You are recommended to follow the exact structure of the template. The research paper must have every thing that is required for a real paper. The only exception is that it is optional for you to implement your approach as a software toolkit – bonuses will be considered if you do though. The paper limit is 15, including everything, with the standard LNCS format and times font. Your paper will be evaluated on the following grounds.
(A) The novelty and applicability of your idea (30%);
(B) The completeness of your survey (20%);
(C) The quality of the presentation (30%);
(D) The quality of the evaluation (20%);
You can submit your paper through email. The submission deadline is Dec 11, 2015.
September 14 (Think Tank 15): Introduction to Software Engineering
Problem Set 1 (always due by the end of this Sunday)
- “Checking a Large Routine” by Turing
- “The Humble Programmer” by Dijkstra
- “No Silver Bullet: Essence and Accidents of Software Engineering” by Brooks
September 21 (Think Tank 15): Automatic Testing
Problem Set 2 (always due by the end of this Sunday)
- “Korat: Automated Testing Based on Java Predicates” by Boyapati et al.
- “Feedback-directed Random Test Generation” by Pacheco et al.
September 28 (Think Tank 15): Delta Debugging
Problem Set 3 (always due by the end of this Sunday)
- “Yesterday, My Program Worked. Today, It Does Not. Why?” by Zeller.
- “Simplifying and Isolating Failure-Inducing Input” by Zeller.
October 5 (Think Tank 15): Bug Localization
Problem Set 4 (always due by the end of this Sunday)
- “Isolating Cause-Effect Chains from Computer Programs” by Zeller.
- “Locating Causes of Program Failures” by Cleve et al.
- “Empirical Evaluation of the Tarantula Automatic Fault-Localization Technique” by Jones et al.
October 12 (Think Tank 15): Specification Mining for Debugging
Problem Set 5 (always due by the end of this Sunday)
- “Using Likely Invariants for Automated Software Fault Localization” by Sahoo et al.
October 19 (Capstone 1): Race Detection
Problem Set 6 (always due by the end of this Sunday)
- “ERASER: A Dynamic Detector for Multi-Threaded Programs” by Savage et al.
- “Hybrid Dynamic Data Race Detection” by O’Callahan et al.
- “Race Directed Random Testing of Concurrent Programs” by Koushik Sen.
October 26: Recess Week
November 2 (1.411): Your Research Idea Presentation.
November 9 (1.411): Hoare Logic and Termination Checking
Problem Set 7 (always due by the end of this Sunday)
November 16 (1.411): Symbolic Execution
Problem Set 8 (always due by the end of this Sunday)
- “Dart: Directed Automated Random Testing” by Godefroid et al.
- “An Interpolation Method for CLP Traversal” by Jaffar et al.
November 23 (Think Tank 15): Invariant Generation
Problem Set 9 (always due by the end of this Sunday)
- “Dynamically Discovering Likely Program Invariants to Support Program Evolution” by Ernst et al.
- “Unbounded Symbolic Execution for Program Verification” by Jaffar et al.
November 30 (Think Tank 15): Software Model Checking
Problem Set 10 (always due by the end of this Sunday)
- “Software Model Checking” by Jhala et al.
- “Counterexample-Guided Abstraction Refinement for Symbolic Model Checking” by Clarke et al.
- “Automatic Predicate Abstraction of C Programs” by Ball et al.
December 7 (Think Tank 15): Separation Logic (guest lecture by Le Quang Loc)
December 12 (9am to 11am): Final Exam