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.

Syllabus 

September 14 (Think Tank 15): Introduction to Software Engineering

Slides

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

Problem Set 1 Sample Answer

Code Samples: BuggySort.java; FirstBlood.java;

References:

September 21 (Think Tank 15): Automatic Testing

Slides

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

Problem Set 2 Sample Answer

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

References:

September 28 (Think Tank 15): Delta Debugging

Slides

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

Problem Set 3 Sample Answer

References:

October 5 (Think Tank 15): Bug Localization

Slides

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

Problem Set 4 Sample Answer

References:

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

Slides

Additional Slides

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

Problem Set 5 Sample Answer

References:

October 19 (Capstone 1): Race Detection

Slides

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

Problem Set 6 Sample Answer

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

References:

October 26: Recess Week

November 2 (1.411): Your Research Idea Presentation.

November 9 (1.411): Hoare Logic and Termination Checking

Slides

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

Problem Set 7 Sample Answer

References:

November 16 (1.411): Symbolic Execution

Slides

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

Problem Set 8 Sample Answer

References:

November 23 (Think Tank 15): Invariant Generation

Slides

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

Problem Set 9 Sample Answer

References:

November 30 (Think Tank 15): Software Model Checking

Slides

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

Problem Set 10 Sample Answer

References:

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

Slides

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

A Sample Final Example Paper