Introduction

This project is about simulating the effects of a pandemic in a population. We will use a simple model where each individual is connected to six neighbors and the disease is only transmitted via these connections. The project is divided into two parts. In this first part, you will build the infrastructure for the your simulator along with a simple deterministic model that will allow testing your code. The second part will extend the first part in various ways.

Unlike the labs and homework assignment, your work will be partitioned across multiple source files using Typed Racket’s module system to organize the code. You should read the chapter on modules in the Typed Racket Guide before you begin work on the project.

Project 1 will be collected from your GitLab repository on Friday, May 14, 2021 at 6pm (extended from the original due date).

Before you begin, you should do aour local repository to get the code that we are providing.

Project organization

We have created a directory named proj1 in your GitLab repository. In that directory are placeholder source files for the modules that you will implement. You should start your work by doing a git pull to download the seed code into your local repository.

  • grid.rkt implements the central data structure used in the project.

  • simulate.rkt implements code to run the simulation.

  • simple-model.rkt implements a simple deterministic model of infection that you will use to exercise the other parts of the project.

  • proj1.rkt combines the various pieces.

We recommend that you work on these modules in the order given above.

Note

Remember that every file should be added, committed, and pushed!

A note on testing modules

We strongly recommend that you implement and thoroughly test each module before beginning work on the next. You will want to have check-expect tests for the functions of each module in the modules (as you have done for single-file examples). You should have only one instance of the (test) command in your code at any time. Typically, it should be in the file that you are currently working on.