Foreword

Grading

Regarding the project, you'll have two deadlines with deliverables:

  • an intermediate evaluation, to be delivered at the end of week 10, corresponding to weeks 7 to 9 (project steps 1 to 3); this part will be graded for 30%, but, since it will be graded again, with improvement, in the final grading step, the actual overall weight of this part is ∼52%;

  • the final, end of week 14; weighted 70%; this final deliverable includes also the first part, which may be corrected based on first evaluation feedback.

Each of those two grading steps will be evaluated based on:

  • automated tests, some of which will be provided during the semester;
  • human review of your code;
  • comments, README.

We also will pay attention to the regularity of your workflow (commit on GiHub).

Important message about cheating

This work (project) has to be the own work of the corresponding group (pair of students). No other help is allowed, be it human or artificial. The code delivered has to be your own (except the one provided by us).

The above warning includes both getting external help as well as providing help (this is also part of cheating), directly or indirectly. This thus also include being sure you to not make you code publicly available in any manner.

Any plagiarism, in whatever form, will be considered as cheating and will be handled accordingly, including informing the EPFL Legal Affairs.

Important message about the workload

We designed that project to correspond on average to 4 hours of work per student per week (i.e. 8 hours of work per group). We'd like to insist on these two aspects:

  • per student:
    it's really important that you spread the work over the two students in the group; and split it in a efficient way: e.g. by topics/concepts rather than one week over two;
  • on average: some weeks will be more loaded than others; and the last week does not have any new content; we recommend that you work, both group member, on a very regular basis, so as to avoid too heavy workload peaks.

VERY IMPORTANT: As any homework without any time constraint, the "danger" is to work too much on it, more than expected from us, trying to reach the best possible complete code regardless of the amount of time spent. This is not the proper way to handle homeworks, especially big projects: rather than trying to do perfect final (whole) project in an infinite time, try to do want you can in the amount of time you planed to dedicate to it. We do not mean that you have to deliver bad code, but you can deliver good enough code on a decent fraction of the project (e.g. do 75% of the project at a 80% quality level -- rather than doing 100% of the project at at 33% level [bad grade], or spending an indecent amount of time to reach 100% level (on 100% of the project)).

DO NOT HESITATE TO COME TO US AND TALK ABOUT IT!

A good way to reduce the workload is to:

  1. work on a regular basis (rather than trying to do everything the day(night?) before the deadline);
  2. know the concepts well (both theory and C) before starting to work on the project;
  3. use the debugger;
  4. do not get mad about one single test that does not pass;
  5. do what we ask for (and not more; some students have sometime a tendency to overestimate our expectations).

A bad example of points 2 and 5 above: some groups in the past completely recoded some functionalities that are present in the C library (e.g. string functions).

In order to help you handling your workload and priorities (and also see if we don't fool ourselves), we ask you to weekly commit a CSV file time.csv (in the done/ directory) counting the total number of hours (decimal number) you spent on the project for the corresponding week (sum for the two students).
This is absolutely not to control you; your really can, without any penalty nor judgment on our side, put a 0 on some week if that was the case. This is only a tool for you, as a kind of "compass", we put in place following suggestions of former students.

The format for this file is very simple:
one line for each week, starting with the week number and then, comma separated (CSV), the total number of hours (in decimal) spent by the group on the project that week, regardless of the handout number (I mean, if in week 8 you are still working on the week 6 of the project, count this in week 8, the week you do the work, not the week number of the handout you're doing).

For example:

  6,2.75
  7,3.5