Last updated on

Policies and schedule

Course philosophy

Build knowledge incrementally: We want you to build real software from day 1, and progressively learn how to improve it. This means that you’ll start with working but suboptimal code in early labs, and we’ll help you revisit and improve it in later labs.

Combine functional programming with real-world engineering: We aim to teach you both the science and craft of software construction: you’ll learn a mix of more abstract concepts to help you think through problems and design solutions, and more concrete, practical techniques to help you implement them. The course is roughly two parts functional programming to one part software engineering.

Learn by doing: Lectures will introduce concepts, but you’ll only become proficient if you spend enough time working on exercises and labs. We have help sessions throughout the week for you to get help or request feedback on your work.

Schedule and attendance

Please check your IS-Academia portal or the EPFL Pocket Campus app for the most up-to-date course schedule. Note that Monday lectures will typically be about functional programming while Wednesday lectures will typically be about software engineering.

Attendance at any course activity is highly recommended but not mandatory. We will aim to post recordings of the lectures online, but these are for your future reference, not a substitute to live lectures. We intend for you to solve the exercises collaboratively and discuss them with your classmates and the staff during the help sessions, and while the labs are individual assignments, talking with a staff member at a help session is the best way to get help.

You can attend any or all of the help sessions in any week, per your judgment. There is no difference between sessions marked as “exercise” or “lab”; you can work on and get help with either during any help session, and TAs and SAs will be available to help at all help sessions.

Overall grade

Your overall grade in the course will be a weighted average of:

For each lab, you will receive between 0% and 100% of the points for that lab. In weeks with guided callbacks (explained in the Callbacks section), 90% of the points will be for the lab, and 10% for the callback. The unguided callback is graded the same way, except that it pairs with the unguided lab score. These are your individual lab scores. Then, one or more of the guided labs may be exempted, as detailed in the Grading section below. Then, the average of the remaining individual lab scores will be your overall lab score. This will be scaled by 30% (or 0.3).

For the midterm, we will give you a score between 0% and 100%, which will then be scaled by 30% (or 0.3). The same applies to the final except the scaling is 40% (or 0.4).

The sum of the three scaled scores above—labs, midterm, and final—will be your overall score for the course, between 0% and 100%. This score S will be converted to the 1–6 scale grade with the formula 5.25 × S + 0.875 rounded to the nearest 0.25.

Please see the relevant sections below for details about missed assignments or exams, extensions, etc.

Exercises

Exercises are collaborative, non-graded assignments to be done mostly on paper/whiteboards/etc. You are encouraged to discuss your solutions with other students and the staff. You are not expected to solve every single exercise every week, but you are encouraged to spend more time on the topics you find challenging or interesting. We recommend that you start doing the exercises before the labs.

We’ll post solutions to the exercises online. We generally won’t post lab solutions, but you can always ask for help with past labs in any help session.

Lab assignments

Labs are individual, graded assignments to be done and submitted on a computer.

Schedule

A lab assignment will be released almost every week on Wednesday (including the first week!) and will usually be due by 23:00 on Friday the following week. This means that during the help sessions in any given week, you can ask for help with either the lab that was released that Wednesday (and is due the following Friday), or the one that was released the previous Wednesday (and is due that Friday). There will be 9 graded labs during the semester:

We generally won’t post lab solutions, but you can always ask for help with past labs in any help session.

A detailed schedule of the course, including lab due dates, is included in the course syllabus. We will inform you via an announcement on Ed Discussion if the schedule changes.

Grading

The labs and callbacks will count for 30% of your overall grade for the course, of which:

For guided labs, every submission will be auto-graded. You will be able to see your score a few minutes after submitting (it will be identical to the score obtained when running the tests locally). Except when specified, there will be no hidden tests: if your code passes all the tests, you will receive all the points. Exceptions to this rule will be clearly marked at the beginning of the lab’s writeup. You can submit the same assignment multiple times, and we will only consider your last submission. We recommend that you submit your in-progress work regularly so that even if an unforeseen event prevents you from submitting a complete assignment, you will still receive partial credit.

Some labs or callbacks may have a manually graded component, involving a short conversation with a staff member.

We will post detailed rules and grading policies for the unguided lab later.

We will accept late lab submissions for one hour after the deadline without penalty (e.g. if the deadline is 23:00, we will accept submissions until 23:59). We will not grant any further deadline extensions. If you don’t submit anything within one hour of the deadline, you will get a score of zero for that lab. However:

Plagiarism

Your lab submissions must be entirely your own individual work. You may not use code taken from your classmates or from AI tools or discuss your code with anyone except the course staff. You may consult existing resources (books, reference websites), but you must cite them if you take code or algorithms from them. On the Ed Discussion forum, you may ask clarification questions publicly, but if your question relates to your individual approach to solving a lab, you must make it a private question. In addition, you may not share your solutions with anyone in any form apart from the course staff (e.g. you may not upload your solutions to a public git repository or a shared Google drive).

On the other hand, all discussion and collaboration regarding exercises is encouraged.

We would like to remind you about the EPFL Code of Honor (en, fr) that applies to all students, and in particular:

In my capacity as a student of EPFL, I actively undertake to […] strive for quality and integrity in my own work, refusing any cheating or plagiarism.

The consequences for plagiarism can be quite severe, as defined in the EPFL Ordinance on disciplinary measures (en, fr). We would sincerely prefer not to have to pursue that route, but we will if we think it is warranted.

Callbacks

Callbacks are mini-labs to train you in key software-engineering skills: refactoring, improving, and building upon previously written code.

There will be 3 graded callbacks during the semester:

In any week when a guided callback is due, it is worth 10% of the lab score for that week. (Consequently, the lab that week will only be worth 90% of what a lab in a non-callback week would be worth.) The unguided callback is graded the same way, except that it pairs with the unguided lab score.

The same plagiarism policy applies to callbacks as to labs. For guided callbacks, the same grading policies also apply. We will post detailed rules and grading policies for the unguided callback later.

Exams

Midterm

The midterm will take place on Wed, Nov 6.

We will post seating plans and the complete instructions (also printed on the front of the midterm booklet) in week 7. The midterm will be a pen-and-paper exam with a mix of multiple-choice and free-response questions. You will not be allowed to use any notes, electronic devices, cheatsheets, or other resources.

The midterm will count for 30% of your overall grade for the course. If you have a doctor’s note, you will be excused from the midterm, in accordance with EPFL rules (en, fr).

Final

The final will take place during the regular finals period, Jan 15–Feb 2. We will post more details about the final after the midterm.

The final will count for 40% of your overall grade for the course. If you are unable to take the exam for any reason, EPFL’s regular rules (en, fr) for such circumstances apply.

Issues and feedback

If you are worried about your progress in the course, or face any personal issues during the semester, or simply need to talk for any reason, please feel free to contact an instructor or TA. Additional resources are available through the EPFL Trust and Support Network.

Your feedback on the course is always welcome. You can talk to an instructor, TA, or SA; send us feedback through private Ed posts; or fill out our surveys on Moodle.