50.530: Software Engineering 2016

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.

Course Components

Project: 40%

Final Exam: 40%

Problem sets: 20%

Course Project

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)

Problem Set 1 Sample Answer

Code Samples: BuggySort.java; FirstBlood.java;


September 21 (Think Tank 15): Automatic Testing


Problem Set 2 (always due by the end of this Sunday)

Problem Set 2 Sample Answer

Code Samples: BinaryTree.java; OrdSet.javaOverflowException.java;


September 28 (Think Tank 15): Delta Debugging


Problem Set 3 (always due by the end of this Sunday)

Problem Set 3 Sample Answer


October 5 (Think Tank 15): Bug Localization


Problem Set 4 (always due by the end of this Sunday)

Problem Set 4 Sample Answer


October 12 (Think Tank 15): Specification Mining for Debugging


Additional Slides

Problem Set 5 (always due by the end of this Sunday)

Problem Set 5 Sample Answer


October 19 (Capstone 1): Race Detection


Problem Set 6 (always due by the end of this Sunday)

Problem Set 6 Sample Answer

Code Samples: BufferFixed.java, SleepExample.java, ThirdBlood.java;


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)

Problem Set 7 Sample Answer


November 16 (1.411): Symbolic Execution


Problem Set 8 (always due by the end of this Sunday)

Problem Set 8 Sample Answer


November 23 (Think Tank 15): Invariant Generation


Problem Set 9 (always due by the end of this Sunday)

Problem Set 9 Sample Answer


November 30 (Think Tank 15): Software Model Checking


Problem Set 10 (always due by the end of this Sunday)

Problem Set 10 Sample Answer


December 7 (Think Tank 15): Separation Logic (guest lecture by Le Quang Loc)


December 12 (9am to 11am): Final Exam

A Sample Final Example Paper