Rigorous Software Engineering (Spring 2019)

Basic Information

Information for the second part of the course can be found here.

The course webpage will be frequently updated; please check it frequently.

Course Description

Software engineering is an engineering discipline whose focus is the cost-effective development of high-quality software. The emphasis in software engineering is on both words, i.e., "software" and "engineering". An engineer is able to build a high-quality product using off-the-shelf components and integrating them under time and budget constraints.

This course will cover key techniques for building reliable software. These include modeling, design patterns, code refactoring, testing, symbolic execution, and static and dynamic program analysis. To gain a deeper understanding of how to apply these techniques in practice, the course will also involve two hands-on projects based on the principles introduced in the lectures.

Course Objectives

Announcements

Date
Announcement
20.05.2019 Project 1 grades are available. Please contact the teaching assistants for the first part if you have any questions.
06.04.2019 Second part of the course starts on Monday, 8 April 2019.
06.04.2019 Assignment 6 solution has been posted (see details below under "Exercises").
31.03.2019 Assignment 5 solution has been posted (see details below under "Exercises").
29.03.2019 Assignment 6 has been posted (see details below under "Exercises").
26.03.2019 Slides by the TAs for the exercise sessions have been posted (see details below under "Exercises").
22.03.2019 Part 2 of project 1 on Alloy modeling has been slightly updated in response to Piazza questions (see details below under "Projects").
22.03.2019 Assignment 5 has been posted (see details below under "Exercises").
22.03.2019 Assignment 4 solution has been posted (see details below under "Exercises").
18.03.2019 Part 2 of project 1 on Alloy modeling has been posted (see details below under "Projects").
18.03.2019 Assignment 3 solution has been posted (see details below under "Exercises").
15.03.2019 Assignment 4 has been posted (see details below under "Exercises").
13.03.2019 Please find under "Lectures" below the Alloy examples discussed during the lectures. You may also find it useful to go through the Alloy tutorial.
11.03.2019 Assignment 2 solution has been posted (see details below under "Exercises").
08.03.2019 Assignment 3 has been posted (see details below under "Exercises").
01.03.2019 Part 1 of project 1 on UML modeling has been posted (see details below under "Projects").
01.03.2019 (1) Assignment 1 solution and (2) Assignment 2 have both been posted (see details below under "Exercises").
26.02.2019 Exercise and project group assignments have been posted on the course Piazza site. Please note the updated rooms for Monday (HG D 3.2) and Thursday (ML H 41.1) exercise sessions. A special thanks to Ms. Denise Spicher for helping us find larger rooms for the Monday and Thursday exercise sessions!
25.02.2019 This week's Monday exercise session won't meet because we don't have a large enough room to accommodate all students who said they could only attend the Monday session. Please post questions on Piazza for the time being.
25.02.2019 Added two classical references on requirements engineering (see under "Literature" below).
22.02.2019 Assignment 1 has been posted (see details below under "Exercises").
22.02.2019 Due to current room capacity limits in accommodating your selections, we will delay posting the exercise group (and project group) assignments until Monday, February 25th. We have contacted the department for possible larger/additional rooms. Please stay tuned.
18.02.2019 Please take a brief moment to select your preferred exercise groups and enter your project team information using this Google form by 23:59 on 20.02.2019. Based on your entered preferences, we will publish the group assignments on 22.02.2019. Exercise sessions will start next week.
06.02.2019 Website became live

Lectures

Contact: Prof. Zhendong Su, Prof. Martin Vechev

Lecture
Topic
Slides
1 Introduction Slides (PDF)
2 Requirements Slides (PDF)
3 Modeling and Specifications Slides (PDF), Alloy examples
4 Modularity Slides (PDF)
5 Testing; Recent Advances Slides (PDF), Extra (PDF)

Exercises

Teaching assistants for the first part of the course:

Teaching assistants for the second part of the course: Exercise sessions: If you have any questions regarding the first part of the course, please contact Dr. Shuai Wang, or preferably the teaching assistant leading your exercise session. For the second part, please see here.

Week
Topic
Downloads
2 Requirements Elicitation and Documentation [Assignment | Solution | TA slides]
3 Specification and Modeling [Assignment | Solution]
4 Modeling [(Assignment, Exercise Files) |
(Solution, Solution Files) |
TA slides]
5 Alloy [(Assignment, Exercise Files) |
(Solution, Solution Files) |
TA slides]
6 Design Patterns [(Assignment, Eclipse Files, IntelliJ Files) |
(Solution, Solution Files)]
7 Testing [(Assignment, Exercise Files) |
(Solution, Solution Files)]

Projects

The description of the project for the second part of the course can be found here later.

Project
Topic
Due
Downloads
1.1 UML Modeling 15.03.2019 Description
1.2 Alloy Modeling 05.04.2019 Description, Template

Literature