MIX Project Part III - Towards a Course-wide Service

Due Date: Completed and turned in via git before December 5, 2021 at 11:59pm
Points: Week 3 is worth 20 points


This week, you will work towards integration of your work to the course-wide MIX service. Specifically, there are two key components:

  1. Registering your design IM designs to ensure you have a unique set of IMs, and
  2. Refactoring your IMs to work with the course-wide specification

Deliverable 1: IM Registration

For the final project, we want a MIX service that finds out a lot of unique information – not just the weather 50 different times. Each team is required to have 2p - 1 unique IMs across the entire course.

To ensure there are unique IMs, you will complete an IM registration form that describes the function of each of your IMs in a single sentence in simple terms (ex: “finds the weather at the location”) by this Thursday, Dec. 2, at 11:59pm.

Complete the IM registration form now (only one member /team needs to complete this).

To determine if a duplicate occurs, I will follow this algorithm:

  • I will randomize the order of the list,
  • I will start with your first IM and include it if it’s unique; if it is not unique, I will move down your list until you have your first unique IM,
  • Every group will have their first unique IM chosen, and
  • Only every group has their 1st unique IM the process repeats for the 2nd, 3rd, 4th, and 5th unique IMs (for teams groups of p=2 or p=3).

After this process is complete, the list will be published. IF you do not have at least 2p - 1 unique IMs, your team will need to create unique IMs to achieve 2p - 1 unique IMs.

Deliverable 2: IM Refactoring

Jackson design and code, along with some elements of Kevin’s design, were selected as the base for the course-wide microservice. Many individual designs contained many of these features, but Jackson’s code did all of the following:

  • Allowed IM registration while the microservice was running, without requiring to hard-code a new IM,
  • Allowed IM registration with various IP addresses (not just a port on localhost),
  • Provided a clear dependency chain to have multiple layers of IMs, and
  • Documented the process in a clean and easy-to-read way

You can find the course-wide middleware here: https://github.com/cs240-illinois/cs240-fa21-MIX_shared

If you find any bugs, please create a GitHub issue if one does not already exist. PRs to fix open issues are welcome and worth EC. :)

Refactor your IMs

For this week, you must refactor ALL of your IMs to work with this new middleware. The two key areas where you likely need to change your code are:

  • Your IMs must make a PUT request to the MIX middleware upon startup (see the documentation on the format).

  • The middleware will make a GET request to / with a JSON payload in the format { 'latitude' : float, 'longitude' : float } to request data from your IM.

Testing your IM Integration

To do integration testing:

Week 4 Preview

In Week 4, you will be required to run your IMs on your CS 240 virtual machine and communicate with the MIX microservice on the CS cloud (ex: not localhost)!

We will have a “dry run” for extra credit on the last day of lecture (Tuesday, Dec. 7) to give you a chance to test your IMs before the final exam. You will present your project in lecture during the final exam period on Friday, Dec. 10 at 7:00pm.


When you have completed your program, double-check that your server runs as expected by the specifications above. If you are working on a team, make sure this is in your team repo. When you are ready, submit the code via the following git commands:

git add -A
git commit -m "MIX submission"
git push

You can verify your code was successfully submitted by viewing your git repo on your github account: https://github.com.