Getting Started with SwEng

  1. Create an account on Github
  2. Sign up on Discourse for class discussion
  3. Sign in to edXedge, for the video lectures
  4. Set up your development environment by following the first Homework

Time and Place

Recitation sessions are held in INF-1 (main lecture room), BC-04, CO-123, ELG-116 and GCA-1416 on Fridays from 9:15 - 11:00. Lab sessions will be held in BC-01, BC-04, BC-07 and BC-08 on Fridays from 15:15 - 18:00. All lectures are held in INF-1.

Completing your assignment work is expected to take longer than the lab sessions; these time slots merely provide a structured setting where you can seek assistance from the TAs. You are not obligated to do your work during that time period. Feel free to use your own computer, but you must make sure that your work compiles and runs correctly on the BC machines under Linux, for the purposes of grading your assignments.


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

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

Teaching Assistants

Thang Duong
Betty Kostova
Mikael Morales
Charles Parzy-Turlat
Gaurav Pasari
Solal Pirelli
Michał Tyszkiewicz
Arseniy Zaostrovnykh


CS305 is a “flipped” class. The lectures are on-line and students are required to view them at home. Anything presented in these lectures may appear on the exams. The recitation sessions and labs are central to the course and support the lectures by providing assistance in the project to build a non-trivial piece of software.

Recitation sessions are mandatory. They will be the weekly meeting between a team and a TA, who 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 an assigned slot on Friday mornings and afternoons. Time slots assignments and rooms will be defined after team creation.

For the first class (Friday, Sept. 23), the entire class will meet in INF 1 for a live lecture by Prof. George Candea.

Computer labs for CS-305 are in BC-01, BC-04, BC-07 and BC-08 on Fridays from 15:15 - 18:00. Completing your assignments and development for the projects will take longer than the lab sessions; this time slot provides a structured setting where you can seek assistance from the professor 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 on the BC machines under Linux, for the purposes of grading your assignments.


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)
  • Note that the quiz answers cannot be submitted after Thursday 23:59
  • 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.

Below is a tentative schedule of topics we will cover in CS-305.

Course Materials

For CS-305, we do not use a specific textbook; instead, we provide you a library of online lectures and resources.

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.


The authoritative source of information for the course will always be this website.

We use an online forum (Moodle?) 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:

  • 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

The 3-hour midterm and 3-hour final exams will take place during lab hours and will consist of a mix of programming tasks and theoretical exercises.

Collaboration Policy

The homework assignment must be done individually. You are also permitted to discuss the assignments with other class members, but you are not allowed to share code with them (we will check this). You must indicate the names of the people with whom you had discussions when you hand in the assignments.

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 answer questions about the course, programming difficulties, issues with the tools, questions about the lectures, etc. It is obviously not appropriate to ask for the answer to a question posed directly to you, say in an on-line quiz. But 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 a private question to course staff on 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. 
In our experience, students who skip one of the prerequisites or do not master Java programming do poorly in Software Engineering.
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]