COL106: Data Structures, I Semester 2018-19: Assignments 1 and 2 Mobile Phone Tracking System
COL106: Data Structures, I Semester 2018-19: Assignments 1 and 2 Mobile Phone Tracking System
Assignments 1 and 2
Mobile phone tracking system
In these two assignments, we will design a data structure that will help
us solve a simplified version of the mobile phone tracking problem, i.e., the
fundamental problem of cellular networks: When a phone is called, find where
it is located so that a connection may be established.
Making a phone call. When a phone call is made from phone p1 registered
with base station b1 to a phone p2 , the first thing that the base station b1
has to do is to find the base station with which p2 is registered. For this
purpose there is an elaborate technology framework that has been developed
over time. You can read more about it on the Web. But, for now, we will
assume that b1 sends a query to a central server C which maintains a data
structure that can answer the query and return the name of the base station,
let’s call it b2 , with which p2 is registered. C will also send some routing
information to b1 so that b1 can initiate a call with b2 and, through the base
1
stations p1 and p2 can talk. It is the data structure at C that we will be
implementing in this assignment.
i.e., the union of the sets of mobile phones maintained by all the level i area
exchanges it serves.
Clearly, the root of the routing map maintains the set of all currently
registered mobile phones.
Tracking a mobile phone. The routing map along with the resident sets
of each area exchange makes up the mobile phone tracking data structure we
2
will be using. This data structure will be stored at the central server C. The
process of tracking goes as follows.
• When a base station b receives a call for a mobile phone with number
m it sends this query to C.
• Continue like this till we reach all the way down to a leaf of the routing
map. This leaf is a base station b0 . The central server sends b0 to b
along with the path in the routing map from b to b0 .
3
– public Myset Intersection(Myset a): Returns a set which is
the intersection of the current set with the set a.
You may use a linked list of objects to implement the Myset class.
Note that Object is the fundamental class in Java. You can cast
it to any class that you want (Integer, Float, Double, etc).
Demo instructions: Write your code for set in a file named
Myset.java. Ensure that the name of the functions and the type of
the function arguments/return type should be same as mentioned
here. Implement the linked list yourself. You may copy the code
for linked lists out of the book or any other source.
Optional challenge problem: Bloom filters are an efficient data
structure for implementing the class Myset. Look up Bloom filters
on the web and write an alternate implementation of the Myset
class which uses Bloom filters instead of linked lists. Keep in
mind that the results of the IsMember() method in a Bloom filter
implementation of a set have an error in them. How does this
affect the working of the overall system? How can you account for
this?
4
• Create a class ExchangeList which implements a linked list of ex-
changes.
• Write a java class Exchange that will form the nodes of the routing
map structure. The class should have the following methods.
5
Demo instructions: In this assignment, you are given files: assn1checker.java,
RoutingMapTree.java and actions1.txt. assn1checker.java file is our program
which reads the input actions from the actions1.txt file, and feeds them to
RoutingMapTree.java. You have to create the file for other classes. Each
class file should contain the methods that we have explicitly mentioned in
the problem statement. You can implement other functions too if you want.
The primary task of your assignment is to give the correct answer to the
query messages (described later). We will verify the output of the program
during the demo. Here is a list of action messages that you need to handle:
Points to note:
6
if you handle such inconsistent states by raising suitable Exception in
the implementing class (Set/Exchange), and handling it in the Rout-
ingMapTree class. Read relevant text on the web to know more about
raising and handling Exceptions.
7
from its current location to the base station b. Note that b must be
a base station and that this operation is only valid for mobile phones
that are currently switched on.
• movePhone a b This action should set the level 0 area exchange of the
mobile phone with identifier a to exchange with identifier b. Throw
exception if mobile a is not available, or exchange b does not exist.
Consider all possible scenarios for each action message. When an incon-
sistent action is triggered, your code should display suitable error message,
and continue with the next action message.
Note: Your program’s response should be printed inside the performAction
method of the RoutingMapTree class. Use the System.out.println() method
to print the output. For the given actions.txt file, we have provided a an-
swers.txt file showing the expected format of the program response.
Multithreaded Implementation
This part is optional
8
• Create one thread for each mobile phone and one thread for the central
server.
• The central server thread will maintain the routing map tree.
• Mobile phone thread will perform the actions in MobilePhone class i.e.
each mobile phone thread
• You can introduce a new kind of status field (busy) which is on when
the phone is on an active call and off otherwise. When a call is initiated
by a phone, your multithreaded implementation should send a message
to the destination phone which can accept or reject the request based
on its on/off/busy status. Once the call is accepted both the phones
become busy.
Demo instructions:
• You should incorporate the code written for this part in a new file
and submit it along with the zipped directory containing Assignment
2 code.
• There will be no checker file for this part. The input should be read
from a file. The input format can be:
T-start(%f) Opn(%s) T-end(%f)
9
• You must provide an option that generates a random sequence of re-
quests. Each phone that is idle should generate a random operation
(call, on-off or vice versa, movement) after waiting for a random amount
of time. The duration of a call request should also be randomly selected.
In order to do this your mobile phone class should include a random
option and each thread should randomly generate requests. The wait-
ing time between requests should be random with an expected time of
5 seconds. Call durations should also be of the order of 4-5 seconds.
• When your program starts it should ask the user whether she wants
to read input from a file or operate in random mode. If the user asks
for random mode then it should ask her for a time duration of the
simulation.
10