One design goal of CS 240/340: Introduction to Computer Systems is to provide students with an experience where they are developing a small but integral part of a complex software system. In the course, the final project is a large-scale system that uses a microservice-based design where:
In Spring 2022, students in CS 240 built the Illinois' Infinite Maze. After four weeks of design, implementation, integration, and deployment, 91 students simultaneously managed 91 separate VMs to launch a 218 individual processes that each acted as an independent microservice that could generate a maze segment on request. (For example, see @PeterYR's maze generator microservice source code that generated a maze using Kruskal's Algorithm and Disjoint Sets.)
When we met together for the final project showcase, everyone's services worked together to build one GIANT maze live that has now been archived in this post. In all, this maze includes:
At the end of the final project showcase, a JSON of the entire maze was saved and now available to explored by anyone (or explore it without the whole maze revealed already). Here's a zoomed out view:
The primary software deliverable for each student was a minimum of two "maze generators" or "MGs". Each student was given a fresh Ubuntu 18.04 VM as part of the UIUC Computer Science educational cloud. Each student was responsible for running their MG on their VM.
The creativity of many of the maze segments is amazing:
Additionally, students extended the maze to allow for multi-segment mazes to make artwork and other designs that exceeded the 7x7 limitation of a basic segment. Several designs were made, including the course name in block letters:
The infinite maze was created through a shared middleware, which was designed during the first two weeks of the project and the extended with advanced features.
The shared middleware was created based off of students' design submitted during the first week and then received 20 pull requests (PRs) adding additional features, fixing bugs, creating quality-of-life improvements. The full middleware source code is available on the sp22_cs240_infinite-maze-shared repo in @cs240-illinois on GitHub!
This infinite maze was a crazy idea that could have been a complete failure, but turned into one of the largest collaborative course projects at Illinois! It would not have been possible within:
Thank you! 🧡💙