MP9
Distributed Maze
Due dates may be found on the schedule.

Change Log

2024-11-14 10:20 CDT
Updated mp9.zip to fix the test cases for maze solvability (previously this wasn’t being run).

1 Concept

In this MP, you will create a web service that works together with other students’ web services to create a collaborative distributed infinite maze.

The maze is organized around tiles or segments, 7×7 mini-mazes. Each tile has (up to) four exits, one on the center of each of its four sides. The infinite maze is generated by requesting new tiles as soon as a given tile is exited. We have an early proof of concept which doesn’t use servers, instead re-using the same tile every time, which we hope will help the idea make more sense.

Some of the points in this MP are handled by automated tests. The remaining points are handled by your code correctly interacting with others’ code in an in-class demo.

2 Technical Overview

3 Initial Files

Initial files are available in mp9.zip, including two files you’ll edit:

The Makefile has a variety of targets:

4 Specification

In mazegen.py, implement a web service with the following properties:

5 Tips

We have a separate page on maze generation.

6 Testing your code

If you run your mazegen.py and visit it in the browser, you will see a visualization of mazes and a field for registering your maze generator with a middleware.

If you run python3 -m pytest you’ll see our estimation of the correctness of your solution.

Automated tests will also be run when you submit your code on the secure upload site.

7 In-lecture deployment on November 21

On November 21 we will run all maze generators as part of an in-lecture check-off for the other half of your MP9 grade.

You can pre-test that your code works by using make view to run our example middleware and make sure you can register your maze generator with the middle ware and explore the resulting maze.

On November 21, your maze generator must be running on your course virtual machine. The make background target is provided to make that easier to achieve.