Last updated on

Unguided lab

This page describes the rules, submission, and grading for the unguided lab. See the write-up for a description of what the assignment is about and topic suggestions.

This callback counts towards your grade as explained in the course policies. Check the syllabus for deadlines.

Process

  1. Read the rules below.

  2. Form a team of 3 or 4 people and register it on Moodle by the team registration deadline.

    • We will create a team repository for you based on this information.
    • If you want, it can be the same team as for the unguided callback, unless you had a team of only 2.
  3. Write a design proposal for your app and submit it by the proposal deadline by updating the README on the main branch of your team repository. The proposal should consist of the following:

    • User stories – 2 or 3 sentences – Describe user stories of your app using a who-when-what template, one story per sentence. Highlight interactions between users.
    • Requirements – 2 or 3 paragraphs – Describe what your app will do in concrete, detailed terms.
    • Mock-up – 1 or more pictures – Draw a rough hand-drawn sketch of what your app will look like, with labels to explain UI elements. If your app has multiple very different screens, draw a mock-up for each.
    • Roles – 1 sentence – Explain how tasks will be distributed among team members. (All team members are expected to contribute equal effort to the final result.) (See the SE lecture about specifications for examples.)
  4. Implement and document your webapp, working only in the repository we created for you.

  5. Submit your code on Moodle as a Git bundle (see § Submitting your code below).

  6. Complete a brief individual self-assessment on Moodle.

  7. Register on Moodle for a checkoff slot.

  8. Receive your checkoff as a team from a staff member. This should take approximately 10 minutes (4 minutes + 1–2 minutes per person in the team). Be prepared to:

    1. Give an overview of your app. (1 slide presented in < 1 minute by team member #1)
    2. Explain the distribution of tasks among team members. (1 slide presented in < 1 minute by team member #2)
    3. Demo your app, by guiding the staff member as they use your app. (3–4 minutes, led by remaining team members)
    4. Answer individual questions on implementation challenges and give a tour of your code, Git history, tests, etc. as requested. (1–2 minutes per team member at the staff member’s request)

    Don’t run over: if you take 5 minutes to go through your two slides, you may be asked to skip the demo completely.

How should we divide tasks among ourselves?

In a team of three, a good division of labor could be to have one person on the backend (app logic), one on the frontend (UI), and one on integration and testing. With a team of four, it could make sense to dedicate one more person to the UI or the app logic.

Where can I find examples of user stories, requirements, and implementations?
  • We will have a complete demo of the app design and implementation process in class in week 9. Don’t miss it!

  • For examples of user stories and requirements, refer to the corresponding SE slides (“From tests to proofs II”).

  • We will release a complete example along with the guided webapp-rps lab. The example app is simpler than what we expect you to build, but browsing its implementation can help you navigate the framework.

Submitting your code

Submission is on Moodle, as usual (one submission per team). To preserve your Git history, you will submit your work as a Git bundle: a single-file copy of a repository. Use the following command to create submission.bundle:

$ git bundle create submission.bundle --all

Make sure that your repository contains the following:

The auto-grader on Moodle will just check your bundle and run your tests; the score that it returns is not used directly. If the code you submitted to Moodle doesn’t compile, you will get a 0 in the “Correctness” section in the rubric below.

Submission deadline

The submission deadline is Fri, Dec 13, 23:00.

We will grant an automatic 48-hour extension until Sun, Dec 15, 23:00 (unlike the usual 1-hour extension for other labs). No further extensions will be granted and no exceptions can be made. If you haven’t submitted any code to Moodle by then, you will get a 0.

Rules

Topic choice

You may build any app you want, but:

Grading

The unguided lab is graded out of 20 points, based on the checkoff. Your lab score is the sum of your external and internal scores, as detailed below.

External score

The external score measures your progress towards a reasonably complete and bug-free app, out of 10 points.

Exceptional, flawless demos of apps with a broad feature set may receive 1 additional point, bringing the total to 10.

Internal score

The internal score measures the quality of your code and your implementation of software-engineering best practices, out of 10 points:

Grading notes

Prior to receiving a checkoff, each team member must fill an individual self-assessment questionnaire on Moodle. This helps us detect grading discrepancies, and it helps you reflect on your performance. Submitting a self-assessment is mandatory, but your answers will not affect your grade.

Scores are individual, per EPFL policy. We may adjust scores based on a review of overall grading patterns. The staff member giving you your checkoff may ask for a score review in corner cases.

The unguided lab is worth 90% of the overall unguided assignment score. (The other 10% comes from the unguided callback. Together, the unguided lab and callback make up 20% of the overall lab score. This is also explained in the course policies.)

If you are not satisfied with your score, you may challenge it. To do so, make a private post on Ed, and explain where you disagree from the original score. Include your two presentation slides and instructions on how to run your demo. A TA (PhD student) or professor will compile your code on their own machine based on your Moodle submission and decide on a new score. This score may end up being lower than the original one.

What if I cannot find a team?

Reach out to us before the team registration deadline. Barring exceptional circumstances, we will not give checkoffs to individuals or teams of two.

Can we revise our proposal after the submission deadline? How will this impact our score?

Your proposal is final, but you do not have to build exactly what you promised: you may change the scope of your app, or even switch to completely different app, without submitting a new proposal. In most cases, deviating from your original proposal will automatically cause you to lose “proposal scope” points, but will not affect your other scores: the points you get outside of the “proposal” section are attributed by comparison to what could reasonably have been implemented in 3 weeks, not by comparison to what you proposed.

What do we do if we overpromised?

Focus on building something that works. If you realize that your original proposal was unrealistic, you will likely lose 1 point in the “proposal scope” category, but that’s better than spending 100 hours per person on the lab.

How ambitious should our proposal be? How is the “proposal scope” scored?

Aim for a degree of complexity similar to that of the application demoed in class, or a bit higher if working in a team of four people. Be careful not to over-promise: keep your experience from the unguided callback in mind when scoping out your webapp proposal.

Altogether, for a student who spent 5 to 6 hours per week on the latest labs, the unguided lab should take about 20 hours of work over 3 weeks: 12 to 18 hours for the implementation and documentation, plus 1–2 hours to prepare the proposal and the demo. If you know that labs tend to take you longer than average, it’s OK to set a less ambitious implementation goal: it’s better to lose 1 or 2 points on “Completeness” than to lose 4 on “Correctness”.

FAQ

Help! I don’t feel ready to write my own app.

Don’t panic:

What counts as meaningful interaction? What is non-trivial server-side logic?

The example apps listed above would all be acceptable. The following apps would count as trivial or as lacking interaction:

What counts as “clean commits”? What is a “sloppy history”?

To get all “Git history” points, make sure that you:

I want to focus on the lab. Can I skip lectures and exercises?

You do you, but the topics covered in lecture and practiced in the exercises will be on the final exam. Don’t think of this unguided lab as a massive project—it really shouldn’t take you more time than if we were doing a succession of normal guided labs. Don’t skip exercises and lectures for it.

Can we implement our own UI without using one of the provided UI classes?

Yes, but make sure that your app works in a reasonably modern browser, because that’s what our staff will use when giving check-offs.

Can we ask the course staff for help with our app?

Of course! But please do follow the guides we gave on asking good questions, because we have no idea what you’re working on until you tell us.

Am I allowed to publish my app?

Most CS-214 course materials and lab templates are provided to you under a license that does not allow redistribution: for example, you cannot post your completed labs online, even after the end of the semester.

However, for the unguided lab, we will allow some forms of redistribution after the end of the semester, such as publishing your webapp and its source code on your personal website—under the condition that you grant the instructors and EPFL permission to showcase your app in the course (e.g. on the course website), potentially publicly and indefinitely.

If you object, you can receive the webapp library under the usual course license: we won’t be able to showcase your work and neither will you. In that case, please write a private message to the course staff on Ed.