Software Engineering

We teach undergraduate software engineering as a tandem of 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 together with SDP. If you insist on taking SDP without taking SwEng before, you must first contact us and explain why.

SwEng Staff


Prof. George Candea


SwEng Organization

CS-305: Software Engineering (SwEng) covers the basics of the theory of software development and then solidifies the concepts from lecture through small exercises.

  • 4 credits
    • see schedule for day, time, and location of lectures
    • a mix of standard lectures and guest lectures from industry and academia
    • two exams (contrôle continu)
  • Exercises
    • consist of “theory” questions plus programming exercises to be done on students’ personal laptops, using students’ own GitHub repos as the place to push/pull
    • exercises serve to understand the application of the concepts taught in lecture, and are therefore an indispensable part of learning the material
    • for each week, there is an exercise set (not graded) that covers that week’s topic
    • this exercise set can be started immediately after lecture (see schedule for day, time, and location)
      • staff are available to answer questions
      • solutions are available as well, but we recommend that students do not look at them until after having solved the exercises on their own
      • we blend the 1 exercise and 1 project credits of SwEng into highly applied exercise sets that involve a lot of coding
    • Completing the exercises will take longer than the 2-hour session. This session is meant to be a structured setting where you can seek assistance from the instructor and TAs. You are not obligated to do your work during that time period. However, this time slot will be used for exams, so please do not plan any other activities during this time.

There is a follow-on course to SwEng, CS-305(a): Software Development Project (SDP), in which the concepts taught in SwEng get to be truly implemented in practice. In SDP, students get exposed to the issues related to team-based software development.

Other than the lectures and specific materials handed out to you, there are no required textbooks. You might consider acquiring Code Complete: A Practical Handbook of Software Construction (2nd edition) by Steve McConnell, Microsoft Press, 2004 (online version free for EPFL) – this is considered a “bible” by many software developers. Unfortunately it is very old.

The authoritative source of information for the course will always be this website. From here we will link to the rest of the course resources.

We use Piazza for online class discussions. This is the most efficient way to get assistance from course staff and classmates. Rather than emailing questions to the teaching staff and risking a delayed answer, post questions on Piazza. If you have a question that is of a private nature (e.g., you have a medical problem and cannot come to the exam) that should only be seen by the course staff, then please send an e-mail to the staff.

SwEng Grading

SwEng carries 4 units of ECTS credit, which corresponds to a typical workload of ~120 hours per semester per course. For individual students, the actual time to achieve the learning outcomes will vary, so please budget ~10 hours/week per course.

Your SwEng grade is broken down as follows:

  • 20% based on several quizzes and homeworks given during the semester
  • 80% based on a final exam given during the exam session

We reserve the right to adjust grades in cases that warrant this.

  • quizzes and the exam consist of a mix of programming tasks and theoretical exercises
  • quizzes and the exam may be curve-graded
  • the final course grade is rounded to the nearest quarter-point, in accordance with EPFL’s grading system
  • quizzes and exams are taken on students’ laptops, using GitHub as the place to turn in the work (private repo provided by SwEng staff)
  • see schedule for dates, times, and location of exams

SwEng Prerequisites

The following courses are obligatory prerequisites for taking SwEng.

Here is the coursebook information for SwEng.

SwEng 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.

SwEng Schedule (Fall 2019)

This schedule is subject to minor modifications over the course of the semester, so please check back on a weekly basis.