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 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 any case, these are your individual lab scores. Then, one or more of the guided, non-exam 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 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.

Note that you will be assigned to attempt one of the guided labs during the semester as if it were an exam. See the Exam-lab section for more details. If you do not attend your assigned exam-lab, your lab score that week will be zero, and cannot be dropped; otherwise, you can continue working on the lab until the regular deadline, and your lab score will be computed just as any other guided lab.

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

Exam-lab

To help prepare you for resource- and time-constrained programming tasks, such as our final exam or a job interview, you will be assigned to attempt one of the guided labs during the semester as if it were an exam. You will be told your assignment in the first week of the semester. (Nobody will be assigned the first lab, released on the first Wednesday.) This “exam-lab” will take place in BC 07–08, 16:15–19:00, on the Wednesday that the lab is released. If you want to swap your assignment with another student in the course, you must find someone willing to swap, either in the designated Ed thread or by other means; and then at least one week before either of your exam-labs, you must both go to a help session together to inform an SA about the swap.

Our labs are designed to take more time than the duration of the exam-lab. So, your performance on the exam-lab will not affect your lab score; after the exam-lab, you may continue working on the lab as usual, and your last submission before the regular deadline is what will count for the score. However, the exam-lab is an important opportunity to train your programming skills under time pressure and restricted access to external resources, so attendance is mandatory. If you do not attend, your lab score that week will be zero, and cannot be dropped.

Following past student suggestions about on-computer exams, we have decided to designate the first 15 minutes of the exam-lab as reading-only time to let you gain an overview of the whole assignment and plan your work.

The exam-lab will take place on virtual machines (VMs) hosted on EPFL’s Virtual Desktop Infrastructure (VDI). You will be given access to two VMs: an exam VM and a practice VM. Both VMs have a Scala development environment already set up.

Other instructions for using these VMs and EPFL computers will be posted separately.

Exams

Midterm

The midterm will take place on Wed, Nov 5, 16:15–18:15.

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.