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:
-
Give you the confidence to undertake a complete engineering system design for a future class, UROP, or job.
-
Show that you have synthesized some of the concepts and skills taught up until now.
-
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 filekerberos0_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.*
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
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.
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).
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: