Designed and developed a parser for a very large sized (~600MB) CSV file which could efficiently answer the first query with low latency and simultaneously index it on-the-fly. Also did benchmarking by comparing its performance with various other approaches. Used the concept of positonal maps to help seek the exact cell within CSV file in O(1) time.
Big Data, Java, Parsing, benchmarking, JITD
This project is aimed at designing and implementing a Dynamo-styled key-value storage using Android Virtual Devices(AVD) as nodes, which acts as clients as well as servers. The three main implementation goals of this project are : 1. Partitioning 2. Replication 3. Failure Handling. The implementation provides availability i.e. read/write operations run even under failures and linearizability i.e. a read operation always returns the most recently written value.
Distributed Storage, Amazond Dynamo, Android, Java
Implementation of Distributed Message Passing techniques
In this project, Total and First-In-First-Out(FIFO) message ordering paradigm for inter-process communication in a distributed environment is implemented. All the messages are multicasted and all the five AVDs store these messages in the same order.
Distributed message passing, Android, Java
Distributed Hash Tables
This project is a simple implementation of Distributed Hash Table(DHT) based on Chord using Android Virtual Devices(AVD). Running multiple instances of AVDs simultaneously, all the instances together would form a Chord ring and serve requests in a distributed fashion like the Chord protocol. To test this functionality, the content provider also supports insert, delete and query operation.
Distributed Systems, Chord protocol, Android, Java
Keystroke Biometrics for user authentication
Designed an algorithm to enhance the security of the conventional authentication system by capturing the typing pattern of an individual user. Developed 2 algorithms:
1. During New User Registration phase, learn the typing pattern by capturing the timestamps of the keys pressed while typing the password, and processing this data to create a unique typing profile of the user.
2.During Login phase, compare the typing pattern of the individual entering the password with the stored profile and authenticate the user only if the profile is matched.
Handwritten Digits Classification
Implemented a Multilayer Perceptron Neural Network to classify handwritten digits. Trained the algorithm using the Feed Forward and Back Propagation method to calculate the weights over the input. Using the number of hidden units as 8 the Validation Accuracy was found to be over 90% with better performance over all other units.
Python, Nerual Networks, Machine Learning