implementing a competing application using threads
efficient use of the synchronization elements
An environmental crowdsensing system uses user devices to find different environmental parameters. It is implemented using an application installed on users' phones. The application receives from a server or even user requests for "sensing" data and saves or sends in response the values measured by the sensors involved. A possible crowdsensing scenario is
noise mapping - making maps of urban noise pollution. The devices involved use the microphone to record the noise around them. The devices are mobile and change their position, thus measuring the level of noise pollution in several places.
For this, you will need to implement, using Python, a simulation of a crowdsensing system for noise mapping. The testing infrastructure runs a number of devices in each test and assigns them scripts (requests for pollution in certain areas). You'll need to implement concurrent device behavior.