Getting Started with SwEng

  1. Register your Github ID (if you don't have one, create it)
  2. Check that you can access the course on Moodle
  3. Form project teams of 6 people and register
  4. Set up your development environment by following the bootcamp

Time and Place

All lectures are held in INF-1 on Fridays from 9:15 - 11:00. Lab sessions are held in BC-07 and BC-08 on Fridays from 15:15 - 18:00. Sprint reviews are held on Fridays at a time agreed upon with your coach; we have BC-01, BC-04BC-07, and BC-08 available from 15:15 - 18:00.


Prof. George Candea (Office: INN 330, Phone: x3-4648)

Administrative Assistant:
Céline Brzak (Office: INN 320, Phone: x3-1432)

Teaching Assistants

Thang Duong (coach)
Karolos Antoniadis
Betty Kostova (coach)
Mikael Morales
Charles Parzy-Turlat
Solal Pirelli (coach)
Michał Tyszkiewicz
Arseniy Zaostrovnykh (coach)


CS305 offers a mix of live and on-line lectures. All material presented in both kinds of lectures may appear on the exams. The sprint reviews are central to the course and support the lectures by providing assistance in the project to build a non-trivial piece of software.

Weekly sprint reviews with the coach are mandatory. The coaching staff member will be acting as the customer for the application that the team is developing. In the meeting, the team will demonstrate the progress they achieved over the past week and will negotiate the set of features that they will deliver in the next week. You will be graded on your contribution to each week’s sprint and participation in the weekly meeting. Each team will have a specific time slot and location on Friday, to be determined after team formation.

Completing your assignments and development for the projects will take longer than the lab sessions; the lab time slot provides 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 will be used for exams, so please don’t plan any other activities during this time. Feel free to use your own computer, but you must make sure that the final product compiles and runs correctly in Jenkins, our continuous integration server. 


We recommend that students structure their study week in order to be successful in this course:

  • Watch and understand the online lectures and complete the in-lecture quizzes by Thursday night (1-2 hours)
  • Attend your assigned recitation section on Fridays with the rest of your team to present to the TA the features developed over the previous week and to agree on the work for the next week (1 hour)
  • Attend the lab session on Fridays to get your questions answered, work through more complex exercises, and do the hands-on homework (3 hours)

This plan of lectures + recitations + lab covers 50% of the expected 12 hours of work per week. The remaining 50% is independent work, and you should structure it as you see fit. This time includes meeting with your team mates, as well doing additional coding for the project.

Course Materials

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 an online forum for class discussion. This forum can provide assistance quickly and efficiently from classmates and the course staff. Rather than emailing questions to the teaching staff and risking that your message gets lost in their inbox or that their answer is delayed, post questions of general interest on the forum. 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 come talk to us or send an e-mail to sweng-­

Credits and Grading

CS-305 is a heavyweight course, carrying 6 units of credit. According to the Conférence universitaire suisse, this means 180 learning hours for a semester, so you should budget 12-14 hours/week.

Your final grade will be determined as follows:

  • 10% for individual homework assignment(s)
  • 50% for the project (see project description for details of grading)
  • 40% based on two exams (contrôle continu), with the final counting for more than the midterm

Individual components are curve-graded, and the final course grade is rounded to the nearest quarter-point, in accordance with EPFL's grading system.

The midterm and final exams will consist of a mix of programming tasks and theoretical exercises.

Collaboration Policy

The homework assignment must be done individually. You are permitted to discuss the assignment with other class members, but you are not allowed to share code with them (we will check this). You must indicate in writing, at the time of submitting your assignment, the names of the people with whom you had discussions; if no names are provided, it means that you did not speak to anybody.

For the project, you will work in clearly defined teams. Members of the same team are allowed to discuss the project and share code for it. Members of different teams can discuss their project and programming problems, but they are not allowed to share code without prior permission of the instructor.

Collaboration can also take place on the forum, visible to the entire class. In this setting, it is permissible to ask and answer questions about the course, programming difficulties, issues with the tools, lectures, etc. If, for example, someone encounters a strange error when compiling their Java program and posts it, and you know how to fix it, please share your insight on the discussion group. Such active participation will be noted and appreciated by the course staff.

Cheating, plagiarism, and any form of dishonesty will be handled with the maximum severity permitted under EPFL rules; in most cases, this will result in you being expelled from EPFL. If you are in doubt if an action on your part is acceptable, please ask the staff via sweng-­ before proceeding. Asking afterward is too late.


The following courses are obligatory prerequisites for taking Software Engineering. Furthermore, students must already be highly versed in Java programming and debugging. It is not acceptable to take CS305 without having solid knowledge of the material below.
The coursebook information for the Software Engineering course is here.

Other Resources

  • Google's C++ coding style [HTML]
  • Linux kernel coding style [TXT]
  • NASA JPL's C coding standard [PDF]
  • Lockheed Martin coding style used for the F-35 fighter jet [PDF]
  • Sun/Oracle Java coding style recommendations [PDF]
  • Google Android coding style [HTML]
  • Eclipse coding style [HTML]