I am currently a Graduate
student in the Department of Computer Science at Stony Brook
University. I am a Research Assistant in the File Systems and Storage Lab (FSL) led by Prof. Erez Zadok. My research interests are broadly related to File Systems,
Storage, and Systems.
I completed my Masters in Computer Science in May 2014 here at
Stony Brook University under the guidance of
Prof. Erez Zadok.
I have a number of hobbies apart from Programming and Computer Science.
Photography takes up a lot of my free time (and cash for that matter of fact).
You can find my work at 500px and
Flickr. I also enjoy reading,
writing poetry, traveling, and listening to a large variety of music (someday I
intend to learn how to play the guitar or piano).
Ph.D., Computer Science, Stony Brook University,
August 2014 to current
M.S., Computer Science, Stony Brook University,
August 2012 to May 2014
B.Tech, Computer Science and Engineering, Motilal Nehru National Institute of
Technology (MNNIT, India), July 2005 to May 2009
Engineering Intern (DS - CASL), Nimble Storage, May 2014 - August 2014
Software Engineer, Motorola Mobility, Hyderabad, India, March 2010 - July
Software Engineer, Azingo Soft, Hyderabad, India, July 2009 - March 2010
Projects at FSL
CSE 502 Computer
Architecture by Prof. Mike Ferdman
CSE 504 Compiler Design by Prof.
CSE 524 Advanced Project II with Prof. Erez Zadok
CSE 609 Advanced Computer Security
by Prof. Long Lu
CSE 624 Advanced
Operating Systems by Prof. Donald Porter
CSE 523 Advanced Project I with Prof. Erez Zadok
CSE 506 Operating Systems by
Prof. Erez Zadok
CSE 508 Network Security by Prof. Rob
Computational Geometry by Prof. Joseph Mitchell
Independent Study with Prof. Hussain Badr
CSE 533 Network Programming by Prof.
CSE 548 Analysis of
Algorithms by Prof. Rob Johnson
CSE 549 Computational Biology by
Prof. Steven Skiena
CSE 628 Natural Language
Processing by Prof. Yejin Choi
Babelfish: Restricted x86-64 Processor Simulator - Implemented an x86-64
simulator in SystemVerilog and C++ which simulates an in-order 7-stage pipeline
processor with a 2-way set-associative cache. Language: SystemVerilog, C++
E– Compiler - Built a lexical analyzer for the E– Language using Flex.
Built a parser for E– using Bison. Using Bison we created abstract syntax
trees, and performed type checking, memory allocation, code generation, and
various optimizations. Language: C++
Study on Semantically Aware File Routing for Distributed Deduplication
Systems - Did intensive data set analysis using traces collected in FSL to
find the potential for deduplication based on semantic information like file
extensions. Built a prototype file distribution layer which exploits semantic
information to route files to multiple deduplication storage nodes. Language:
Operating Systems Course Projects (Linux Kernel 3.2.2) - Language: C (Kernel Programming)
Encryption File System: Implemented address space operations to allow
storage of encrypted data, while allowing authorized users to see decrypted data
when accessing the encryption file system.
Integrity Checking File System: Computed the md5 checksum of each file
stored with integrity support turned on. Implemented extended attribute (xattr)
support for wrapfs to check the integrity status of files.
Integrity Checking System Call: Implemented an integrity checking system
call to set, get, and check the integrity of files. Users can open the file with
integrity checking enabled to detect security breaches and unauthorized changes
to the file. Integrity is checked by calculating the MD5 checksum of the entire
Content Security Policy Script Nonce Apache Module Implementation -
Implemented the Content Security Policy Script Nonce feature in the form of an
Apache Module to help reduce cross site scripting attacks over the web. This
Apache module inserts a random nonce within all the script tags having a sever
administrator specified default nonce value, thus helping prevent persistent and
non-persistent cross site scripting attacks. Tested with Chrome Browser version
28. Language: C (Apache module)
Art Gallery Problem: Finding Guards and Witnesses for a Discrete Set of
Points in a Polygon - Developed a Java Applet to find a small number of guard
points and large number of witness points for a discrete set of points within a
given polygon. Takes the polygon as user input, and generates random points
within the polygon. Uses greedy heuristics to come up with a small number of
guard points or large number of witness points. Language: Java
Networking Programming Course Projects - Language: C (Socket Programming)
On-Demand Shortest Hop Routing Protocol - Implemented an on-demand shortest
hop routing protocol for wired networks based on a simplified version of AODV
routing protocol. This system was implemented using PF_PACKET sockets to
facilitate direct communication with the linked layer.
Reliable UDP File Transfer Application - Implemented a reliable UDP file
transfer application in C language. Applied flow control (sliding window),
reliability (timeout mechanism, fast retransmit), and simple congestion control
(slow start, congestion avoidance, and fast recovery) based on TCP mechanisms.
On the client side implemented producer-consumer multithreading and an ordered
message receiving mechanism.
Address Resolution Protocol (ARP) and Source Routing - Implemented ARP
functionality and verified it using ping application in a cluster of virtual
Bioinformatic Analysis of Coevolution between tmRNA, SmpB, and Additional
Factors - A system for finding the coevolution between two sets of sequences
was developed using mutual information calculation method. Regions of high
coevolution were determined between tmRNA and a protein it interacts with, SmpB,
in bacteria. Such regions give clues to which parts of the residues interact
with each other thus giving us possible regions of high evolutionary importance.
sonam.dp42 [at] gmail [dot] com
sonam.mandal [at] stonybrook [dot] edu
somandal [at] cs [dot] stonybrook [dot] edu