Final Project

Spring 2020

You are not logged in.

If you are a current student, please Log In for full access to the web site.
Note that this link will take you to an external site (https://shimmer.csail.mit.edu) to authenticate, and then you will be redirected back to this page.

This page (and its sub-pages) discuss details of the final project in 6.08.

There is a final project in 6.08. It is worth 35% of your final grade. There are no exercises, design exercises, labs, or exams during this period so it is expected you'll be putting in 12 hours a week per person for a project. Lab time becomes allocated for meetings between teams and staff as well as office hours. You will work in remotely in teams for 6.08 comprised of four to five people. You can choose your team (subject to section restrictions) or it can be assembled for you from partial teams or individuals. We've been getting practice all term building interconnected distributed systems. Now we're all distributed, but we're also interconnected so we should still be able to do some neat projects.

1) Project Goals

The main message: Do something interesting and hard.

The goal of the final project is to have you develop a complete interconnected system on your own in order to:

  1. Give you the confidence to undertake a complete engineering system design for a future class, UROP, or job.

  2. Show that you have synthesized some of the concepts and skills taught up until now.

  3. Get added practice with C/C++ and Python programming.

More details/ideas are here.

2) Timeline

A brief summarized timeline of expectations/due dates during the final project is shown below (note the dates can vary a little bit based on your team's group assignment...info below on the page).

Friday April 3 Teaming due
Friday-to-Monday April 3-6 Teams Assigned
Thursday April 9 or Tuesday April 14 Meeting 0: with staff mentors
Thursday April 16 or Tuesday April 21 Meeting 1: with staff mentors
Thursday April 23 or Tuesday April 28 Meeting 2: with staff mentors
Thursday April 30 or Tuesday May 5 Meeting 3: with staff mentors
Thursday May 7 or Tuesday May 12 Meeting 4: with staff mentors
Tuesday May 12 Project reports due @9:59pm

3) Grading

The grade for the final project will be based on:

  • 20% on creativity and reach, i.e., choosing an interesting, challenging project and keeping the project interesting and challenging throughout the course of the final project
  • 60% on meeting your weekly milestones and demos and submitting a clear proposal (excluding final deliverables). This is distributed evenly across all five meetings.
  • 20% on the final report/demonstrations (basically evaluation of your final deliverables)

In addition you will provide a detailed assessment of the teamwork of your group and this will be used in part in determining an individual grade as well (to assess how well you and others worked within the confines of your team).

4) Team Guidelines

UPDATE: Teaming Document with Meeting Time Assignments is Here

The 6.08 project must be carried out in teams of four or five. You will be working remotely so communication is critical! While working in teams can be difficult, it is a good learning experience and prep for the real world and how most things get done in engineering. We strongly encourage students further along in their Course 6 studies (or other fields if you feel comfortable) to work with other students at a similar level so that the experiences/capabilities are more uniform within a given team. Teams must be four person in size.

4.1) Forming Teams

Start forming teams now! You must work in teams of 4 or 5. If you are further along in your Course 6 studies, such as a Junior or Senior, we would like to see you work with other Juniors and Seniors so that your team is internally at a similar level.

Follow the instructions below carefully. You may not get teamed up as you want and/or can lose points if you do not follow the directions.

Use the teaming preferences CSV file here.

4.1.1) Full Team Known

If you know who you want to work with (and have four or five team members), follow the instructions in the CSV file completely, filling out the entire form. Rename the file kerberos0_kerberos1_kerberos2_kerberos3.csv (where the kerberi are the appropriate student usernames) and attach it to an email sent to jodalyst@mit.edu with the title 6.08 Full Team Submission, kerberos0, kerberos1, kerberos2, kerberos3. If the Team has FIVE people in it, do the same thing, but with all five kerberi in it where four is shown above.*

Because of the large enrollment in section 2 and possibly 3, we cannot necessarily accept more students into that section. There is no guarantee that your team will be kept together if you are bringing students from outside sections into sections 2 or 3 for meeting time. Consider offering Section 1 or Section 4

4.1.2) Be Assigned a Team or Submit a Partial Team

If you'd like help forming a team, there are a couple of options:

  • Post project ideas on Piazza and see who is interested in joining you....when a team is assembled follow the full team submission instructions up above.
  • Submit a partial team (including Team of 1). To do that follow the instructions in the CSV file above completely, filling out the entire form, leaving unknown students blank. Rename the file in the style kerberos0_kerberos1_kerberosn.csv (where the kerberi are the appropriate student usernames and the number of kerberis listed matches the number of students in the partial team) and attach it to an email sent to jodalyst@mit.edu with the title 6.08 Partial Team Submission, kerberos0, kerberos1, kerberos2

If there is another teaming concern, please email jodalyst@mit.edu by Friday of the week that teams are due so we have time to help!

It is easiest to form teams within your section. If you want to form a team with people in other sections, you can do so, but all members must be free to meet in a single block time (NO EXCEPTIONS. All team members are expected at check-in meetings. If this does not happen significant point penalties will be applied). We also cannot guarantee all a given section will be availble if people are coming from outside sections, so be flexible in your scheduling. We will then pick the meeting time slot and day (either Tuesday or Thursday) at which you'll have your weekly mentoring meeting. Please do not try to be a picky team in this process. If you provide only one meeting time slot, and think that will force us to put you there, that may backfire and your group will need to be split up.

This is important: If you team is missing members at meetings, you will lose points.

5) Teaming Groups

Teams will be designated either "Group A" or "Group B". This group designation indicates when during the week your various milestones and deliverables are due (some teams will be Tuesday-centric, some teams will be Thursday-centric).

This weird scheduling is a result of the way MIT's semester ends (ending on a Tuesday), the schedule for each Group is a little counter-intuitive so please study it so there's no surprises. It is set up to maximize fairness across the two groups of teams. For example, Group A has their first meeting earlier on a Thursday, but has more time at the end after their final meeting to work and submit their final report!

Every week you will meet for approximately half-an-hour with your advising team comprised of instructors, TAs, LAs. This time will be set out ahead of time and will be fixed every week. It is your team's responsibility to ensure that everone attend these meetings. People skipping these meetings will impact both the individual's grade and the team's grade.

  • Group A:
    • Meeting 0 (proposal discussion, set up goals/deliverables for meeting 1): Thursday April 9, 2020
    • Meeting 1 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 2): Thursday April 16, 2020
    • Meeting 2 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 3): Thursday April 23, 2020
    • Meeting 3 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 4): Thursday April 30, 2020
    • Meeting 4 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for final report): Thursday May 7, 2020
  • Group B:
    • Meeting 0 (proposal discussion, set up goals/deliverables for meeting 1): Tuesday April 14, 2020
    • Meeting 1 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 2): Tuesday April 21, 2020
    • Meeting 2 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 3): Tuesday April 28, 2020
    • Meeting 3 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for meeting 4): Tuesday May 5, 2020
    • Meeting 4 (assess deliverables submitted the night before, adjust and/or set goals/deliverables for final report): Tuesday May 12, 2020

For both Groups A and B, the final report will be due on Tuesday May 12, 2020 at 9:59pm (the last possible minute we can have it be due, though there will probably be a typo in my code which leaves the submissions open until 11:59pm).

5.1) Content of Weekly Meetings

Most meetings (except the 0th one) will go roughly as follows: The night before (Wednesday or Monday depending on if Group A or Group B, respectively), your team will submit a writeup of addressing the goals set out in the prior week, addressing each one, how and if they were met, including videos which of deliverables.

Staff will briefly review this prior to a weekly scheduled meeting that takes place the following day (Thursday or Tuesday depending on if Group A or Group B, respectively) between your team and the staff advising your project. These meetings will be 30 minutes in length and fixed for all five weeks. All team members are expected to attend these meetings. In these meetings you will collectively assess what got done in the previous week (and didn't), and then set plans for the following week (what will the goals/deliverables be? What will the demos be?) In this way, even if you mess up a week and get behind if you stay on track with your new schedule, you'll still do fine.

Our intention of breaking up the final project into these weekly deliverables/demos is to spread the work out! You've all gotten practice doing mini projects via the design exercises. Think about each week of the final project as broken up into sets of design exercises that your group does which all build towards a final functioning system/goal. If you do this, you'll be golden.

6) More Details (Project Proposal)

This page describes in more detail some aspects of the final project including tips for what should go in the project proposal as well as how to lay out weekly goals/milestones. Of course, always feel free to email questions or post on Piazza.

This page has some more thoughts/information.

7) Some Parts and Resources

Below are some quick writeups on some parts which I noticed were somewhat common in 2018/2019's final projects. These pages should serve as starting points in working with these parts. They are by no means exhaustive in terms of what they cover.

Some server-side stuff: