Final Group Project

Overview

The project consists of a proposal, a status update, implementation, final report, and presentation.

The specific project is up to each group. However, it must involve a significant amount of effort—more than one or two people could do. All partners are expected to contribute to the implementation, the write-ups, and the presentation. Division of labor within each part is expected and good!

Any group member who does not participate in every part of the project will fail the course. No exceptions without prior approval from your Professor.

The GitHub Classroom link for the final project is here. Do not create a team or accept the assignment until after you have formed a group.

Requirements

The programming portion of the project must be (mostly) written in Rust and must use one or more crates from crates.io. Otherwise, the specific project you choose is up to you.

Collaboration and coordination between group members must happen on GitHub. This means regular commits from all group members are expected. I strongly recommend you learn about pull requests and use them along with code review of each commit before it gets pushed to master. Using GitHub issues to track bugs that need to be fixed or features that need to be implemented is a great idea and is encouraged.

Project suggestions

Some project suggestions include

  • Program a microcontroller (like an Arduino) to use some sensors and lights/actuators to do something (you can test with a simulator)
  • Implement a game using a game engine.
  • Use the Rust bindings for OpenCV to do something with computer vision
  • Implement some machine learning algorithms (like k-means or k-nearest neighbors) and run them on some interesting datasets and do some visualization or use existing implementations of ML algorithms
  • Build a website in Rust via WebAssembly.
  • Make some interactive art (audio and video)

Previous projects have included games, scenes in virtual reality, programs communicating over a network.