Department of Computer Science
17COP505 – Internet Systems Assignment
Semester 1 2017
Mobile phones are a convenient way of communication. There were 54,403 unique Base
Stations in the UK* providing coverage for millions of mobile phone users. Whenever your
phone is switched on, it is connected to a base station at a certain signal strength. As you
move around, it is connected to a different base station at a different signal strength. These
data are collected by mobile phone companies and processed in order to identify areas for
improvement: e.g. areas that have poor coverage, or extremely busy areas that might need
more base stations to balance the load. In this assignment we will simulate such a mobile
phone network monitoring system.
By doing this assignment, you will gain practical experience in:
• Python programming
• RESTful API design and implementation
• HTTP communication between client and server
• Storing data in mongoDB
• Problem-solving and system design skills
You will work in groups and groups will be allocated during the first week of the module. In
order to arrive at an individual mark for each group member we will use a peer assessment
system that will ask you to reflect on the performance of yourself in relationship to the others
in your group. This will be shown during the lectures.
2 Base Station Simulator (25%)
Your first task is to create a program in Python that simulates a Base Station. Each Base
Station should have the following properties:
• Unique ID
• Location (Street Name, Town/City, County)
• Capacity (how many users can connect to it at the same time)
Your Base Station should have the following functionalities:
• At startup, it should inform the rest of the system its properties and the time
(timestamp) it started.
• Your program should simulate mobile phones connecting to the Base Station and
leaving it, and generate random (but realistic) information. Each time a mobile phone
is connected to a Base Station, the phone number, time of connection, and which Base
Station it connects to is recorded. Upon leaving the Base Station, its record is deleted.
• Your program should send these data to the Data Processor on the server-side to be
• The flow rate of traffic – when new mobile phones join the Base Station– should be
random, not hard coded.
• Offline functionalities: your program should be able to save messages in memory (in
a data structure of your choice) when an Internet connection is not available, and send
them when the connection is established again.
Multiple instances of Base Station are expected to run on a local computer, to simulate the
network of Base Stations in an area.
3 Data Processor (25%)
Another task of the system is a data processor in Python deployed on the co-project server,
which receives the messages sent from the Base Stations and stores them for future analysis.
In this coursework we will use a mongoDB database to store the data. Instructions on using
sci-project will be given in the lecture or lab.
The data processor should provide the following functionalities:
• Run continuously
• Provide series of well-designed RESTful APIs, and communicate with the client-side
(Base Station Simulator and Network Monitoring Application) using HTTP request
• Store the Base Station information and the mobile phone connection information in
two separate collections.
4 Network Monitoring Application (20%)
The network monitoring application is a separate Python program that queries the store data
to provide interesting insights. It should be able to:
• Produce a list of Base Stations and their details in a given area (town, city, county)
• Produce a list of busiest Base Stations (those that have reached 90% or more of its
5 Report (30%)
You should submit a report summarising the work carried out and evaluating what you
achieved. The report should include but is not limited to:
• Clear instructions on how to use your system, including any pre-requisite conditions
• Details of system design and implementation of each task
• Justification of any assumptions made and any decisions made
• Test plan and result analysis
• Reflection on any difficulties met, problems solved, lessons learned, and any possible
One person per group should submit all the source code and the group report in a single .zip
file on Learn by 4pm on Thursday in week 3.