Problem Statement: Design a system which would send an update file (whenever available) to a rover on Mars.
Functional Requirements: The only functional requirement specified was the problem statement!
Non Functional Requirements: None!
Approach: With the vagueness of the question, the discussion moved towards mechanisms to send this update file to the rover. Discussion involved the following points.
- Mentioned the push and pull model.
- Discussed chunking the file due to low bandwidth
- Explored retry mechanisms in case the rover is missing a chunk(s).
- Devised ways to detect corruption during transimission.
- Discussed scenarios where the update may have bugs, including one where the rover would not be able to communicate with the Earth.
- Weighed checksum per chunk vs checksum per file with a specified error rate, keeping in mind the low bandwidth.