Software Engineering

We teach undergraduate software engineering as a sequence of two courses:

Together, they cover the basics of modern software development, focusing on techniques and practices used to build computer software that meets high standards of quality, reliability, security, and maintainability.

All course materials are hosted in our public repo. All EPFL-specific details appear below.

The two courses are designed to be taken as a sequence. If a student already masters the SwEng material, taking SwEng is an easy refresher; if not, then succeeding in SDP is highly improbable. Therefore, students can either take SwEng on its own, or SwEng followed by SDP. If you insist on taking SDP without taking SwEng before, you must first contact us and explain why you think you can succeed in SDP without SwEng.

SwEng Fall 2022 Schedule

In order to improve learning, lectures are interleaved with exercises in a “hybrid” time slot of 3 x 45 minutes, followed by a 45-minute slot for additional exercises. Thus, starting from Week 2, please bring a laptop to class and have Git installed as well as a GitHub account, and starting from Week 3, please have the Java development kit installed.

Starred lectures begin with a 10-minute quiz.

See the course page on Moodle for all the details that do not appear here.

Week Date Room Lecturer Topic
1 23-Sep CO 2 Candea Intro, Modularity & Abstraction, Requirements
2 30-Sep CO 2 Candea Infrastructure*
3 7-Oct CO 2 Pirelli Testing*
4 14-Oct CO 2 Pirelli Debugging*
5 21-Oct CO 2, CE 1 3
(as assigned by staff)
Exam #1
6 28-Oct CO 2 Pirelli Design
7 4-Nov CO 2 Candea Performance*
8 11-Nov CO 2 Pirelli Evolution*
9 18-Nov CO 2, CE 1 3
(as assigned by staff)
Exam #2
10 25-Nov CO 2 Candea Mobile Platforms
11 2-Dec CO 2 Pirelli Asynchrony*
12 9-Dec CO 2 Candea Teamwork*
13 16-Dec CO 2, CE 1 3
(as assigned by staff)
Exam #3
14 23-Dec Online Candea Advanced topic, TBA


Instructors: George Candea and Solal Pirelli

TAs: Matthieu Burguburu, Lucien Bart, Yanis De Busschere, Louca Gerussi, Yugesh Kothari, Alexandre Piveteau, Karim Sabaa, Victor Schneuwly, Zacharie Tevaearai


There are 3 exams during the semester, consisting of a mix of theoretical exercises and programming tasks. Most lectures start with a short quiz that tests the material taught in the previous lecture.

The first exam counts for 20% of the final grade, the second exam 30%, the third exam 45%, and the quizzes 5%.

Each exam and quiz will have a certain maximum number of points, and the mapping from points to grades will account for the variance in exam difficulty. All grades will be computed to 4 decimal points. The course grade will be rounded to the nearest quarter-point, in accordance with EPFL’s grading system. We reserve the right to adjust grades in cases that warrant it.

Organization & Prerequisites

SwEng carries 4 units of ECTS credit, which corresponds to a typical workload of ~8 hours/week. The actual time to achieve the learning outcomes will vary from student to student. Here is the coursebook information.

The following courses are obligatory prerequisites for taking SwEng:

Other than the lectures and specific notes handed out to you during the semester, there are no required textbooks.

Collaboration policy

We encourage you to discuss the course materials − both lectures and exercises − with your peers. The exams however must be entirely your own work. Cheating, plagiarism, and any form of dishonesty will be handled with maximum severity. If you are ever in doubt about whether an action on your part may constitute unacceptable collaboration, please ask the course staff before proceeding, because doing so afterwards is too late.