\documentstyle[11pt]{article}
\pagestyle{empty}
\setlength{\textheight}{10.0in}
\setlength{\textwidth}{6.9in}
\setlength{\topmargin}{-0.1in}
\setlength{\oddsidemargin}{-0.3in}
\parindent 0pt

\begin{document}
\begin{flushleft}
{\Large \bf {SOUMYADEB MITRA}}
\end{flushleft}
\vspace{0.03in}
\hrule
\hrule
\hrule
\vspace{0.03in}
\hrule
\vspace{0.15in}
{\large{Personal Profile}}
\vspace{0.1in}
\hrule
\begin{center}
\begin{tabbing}
 1234567812345678123456781234\= \kill
  Date of Birth\>       : April $10$, $1980$\\
  Sex	       \>       : Male\\		
  Language Proficiency\> : English, Hindi, Bengali\\
  Contact Address\> : C-804 M S Apartments\\ 	
		\> \ \	Kasturba Gandhi Marg, \\
	        \> \ \ New Delhi $110001$, INDIA,\\
  Phone \>         : +(91)-(11)-3381412\\	
  E-mail\>: soumyadeb@cse.iitd.ernet.in\\
  Homepage \> : http://www.cse.iitd.ernet.in/$\sim$soumyadeb
\end{tabbing}
\end{center}

\vspace{0.05in}

\hrule
\hrule
\hrule
\linespread{1}
\vspace{0.15in}
{\large {Educational Status}}
\vspace{0.1in}
\hrule
\begin{tabbing}
  1234567812345678123456781234\= \kill
 
  Institute \>     : Indian Institute of Technology, Delhi, India \\
  Department \> : Computer Science \& Engineering \\
  Degree \> : Bachelor of Technology($BTech$) \& Master of Technology($MTech$)\\
         \> \ \ ({\it 5 year Dual Degree Program})\\
  Year of Graduation\>          : 2002 \\
  GPA  \> : $9.15\;on\;10$ \\
       \> \ \ $9.034\;(BTech\,GPA)$ \\
       \> \ \ $9.655\;(MTech\,GPA)$\\
 Departmental GPA \> : $9.61$\\
  Departmental Rank \> : $1$
\end{tabbing}

\hrule
\vspace{0.1in}
{\large{Background}}
\vspace{0.1in}
\hrule
\begin{center}
  \begin{tabular}{ l l l l l }
{\large YEAR} & DEGREE  & INSTITUTION & SUBJECTS & MARKS \\
    \hline
%\vspace{0.05in}
$1997$ & AISSCE (XII)& Raisina Bengali School & English, Mathematics, Physics,  & $92\%$ \\
       &             &                   New Delhi & Chemistry \& Computer Science   &        \\
$1995$ & AISSE (X)   & Kendriya Vidyalaya Cossipore      & English, Mathematics, Science,  & $89.4\%$ \\
       &             & Calcutta                    & Social Sciences \& Hindi        &        \\
%    \hrule
  \end{tabular}
\end{center}
\hrule
\hrule
\hrule
\vspace{0.15in}
{\large{Areas of Interest}}
\vspace{0.1in}
\hrule
\vspace{0.1in}
$\bullet$ Computer Systems - Operating Systems and Real Time Systems\\
$\bullet$ Algorithm Engineering \\
\hrule
\hrule
\hrule
\vspace{0.15in}
{\large{Work Experience}}
\vspace{0.1in}
\hrule
\vspace{0.1in}
\begin{tabular}{ l l l}
ORGANIZATION & NATURE OF WORK & PERIOD \\
\hline
%\vspace{0.05in}
KritiKal Solutions - A CS startup at IIT Delhi & Chief Technical Officer & May $2002$ to current\\
Max Plank Institute for Informatik, Germany & Research Internship & May $2000$ to July $2000$\\
Tegora Technologies Pvt Ltd, Noida, India   & Job Internship & March $2001$ to April $2001$\\
Intel Technology Laboratory CSE, IIT Delhi  & System Administration   & Aug $1999$ to May $2002$\\
\end{tabular}
\vspace{0.05in}
\hrule
\hrule
\hrule
\newpage
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large {Academic Awards/Scholarships}}
\vspace{0.1in}
\hrule
\begin{itemize}
\item{Recipient of Institute Silver Medal of IIT Delhi, for securing 1st 
position in the batch of 2002.}
\item{Recipient of CISCO Scholarship at IIT Delhi for pursuing graduate studies. (2001-2002)}
\item{$11^{th}$ rank ({\bf 99.79\%} percentile) in 
{\bf Graduate Aptitude Test Examination}, an all India examination for 
admission to Computer Science graduate schools in India. (2001)}
\item{ Secured 1st rank in {\bf Predefined Software Design Contest}, 
a programming contest in {\bf Tryst 99} - Annual technical festival of IIT 
Delhi. 
(1999)}
\item{ Recipient of Institute Merit Award for securing 1st position
amongst 18 students in fall \& spring 1999.}
\item{ Secured 3rd rank in the Regional Mathematical Olympiad in Delhi
Region. (1996)}
\end{itemize}
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large{Academic Projects}}
\vspace{0.1in}
\hrule
\begin{itemize}
\item{\bf{{\emph {rtker}} -  A Real Time Operating System (Major Project)\\}}
{\it Supervisor} : Prof. S Banerjee, Prof. M Balakrishnan\\[.1cm]
The aim of this project was to develop a lean \& modular 
Real Time Kernel, which 
could be easily ported to different architectures, embedded processors
 \& ASIPs. With an years effort
we developed the kernel called \emph{rtker}. The kernel has  support for 
threads, semaphores, a minimal C library(printf/malloc), 
and real time scheduling \& interrupt handling.
Some of the features of {\it rtker} are
\begin{itemize}
\item{{\bf Modular Design :} 
The architecture dependent code (like context switch)
has been clearly isolated from the architecture independent code 
(like thread/C library). 
This greatly facilitated porting of {\it rtker} to different architectures.}
\item{{\bf Plug-gable Scheduling :} {\it rtker} has a concept
of a pluggable scheduling, where the process scheduler is a part of the 
application
and not of the kernel. Real Time Systems have very hard 
scheduling requirements and hence it is 
often preferable to have a scheduler, customized specifically 
for that application, instead of a generic scheduler 
like {\it edf} or {\it fifo}. By defining
a application specific scheduler, it is also possible to optimize on 
data structures used for scheduling, and hence reduce scheduling overheads.\par
Abstracting out the scheduler from the kernel, through a clean API, 
was one of the biggest challenges of this project. The API had to be generic 
enough, to support implementation of any scheduling policy, static or dynamic.
At the same time it was important to keep the API clean, uncluttered and 
easy to implement.
After some brainstorming, we identified a set of 12 functions,
which constituted the Scheduler API. To illustrate our framework, 
we wrote one {\it static} scheduler and two dynamic schedulers - 
{\it fifo} \& {\it edf}.}
\item{{\bf Two Stage Interrupt Handling :} To cater to the demands of a 
real time computing environment, {\bf {\emph {rtker}}}  
has been made completely preemptible. This leads to a two level
handling of interrupts - the (\emph {fast})first half interrupt handling
and a second half interrupt handling function which runs with a thread 
context.}
\end{itemize}
We ported the kernel to three architectures - x86, Trimedia and ARM. We also
ported 
the TCP/IP stack and the eepro100 Ethernet Driver from OSkit to {\it rtker}.\par
The real time characteristics of {\it rtker} were demonstrated using a network MPEG streaming application. A detailed description of {\it rtker} is given
in \\ $www.cse.iitd.ac.in/\sim soumyadeb/rtker$.
\item{\bf{Framework for H/W - S/W partitioning in a RTOS (Spring 2001)\\}}
{\it Supervisor :} Dr. S Banerjee, Dr. M Balakrishnan\\[.1cm]
The purpose of this project was to provide a framework for 
H/W - S/W partitioning of applications in a RTOS. Partitioning of
application is particularly important in Real Time Systems, where the
time critical component of the application is implemented in hardware
\& the rest in software. 
\par The H/W platform we had was an FPGA board. 
Communication between the board \& the host system was over PCI . 
We chose RTEMS as our host RTOS \& ported the linux device driver for the 
FPGA board to RTEMS. We also ported the FPGA board programming library. \par
Finally we demonstrated our framework through a vector multiplication 
application,
where the multiplication was carried out in hardware. Synchronization
between the hardware \& software was through polling or interrupts.
\item{\bf{External Memory Sorting using Parallel Disks (Summer 2000)\\}}
{\it Supervisor :} Peter Sanders (MPII Germany)\\[.1cm]
Sorting routines which make effective use of the speed up offered by a 
parallel disk architecture are surprisingly non trivial to design. 
Although {\it MultiWay Mergesort} is  considered to be the standard algorithm 
for multi disk sorting, there are still a number of non-trivial issues like 
those involved with prefetching of buffers. We looked at this problem 
from two stand points, {\it firstly} having a superior prefetching algorithm 
which reduces the number of total I/O's {\bf and} {\it secondly} having a 
better implementation which takes into consideration practical issues like 
I/O bus contention. \\ We started with the algorithm proposed by 
{\bf Barve \& Vitter}. This algorithm had a drawback in requiring 
flushing of prefetched buffers. We had a better prefetching algorithm 
which did not require any flushing of buffers. It also made better use of 
I/O bus bandwidth since the I/O operations were asynchronous. \par We tested
our implementation on a SPARC-I machine with 6 disks. We could
achieve a sorting speed, which was $90\%$ of the I/O bus bandwidth.
\item{\bf{Range Search Algorithm in External Memory (Spring 2000)\\}}
{\it Supervisor :} Dr. Sandeep Sen \\[.1cm]
This project involved implementing an External Memory Triangular Range Search Algorithm. We modified the 
standard Ham-Sandwich Cut Algorithm for handling huge data sets, much more than what can reside in the 
main memory. The modification of the standard algorithm led to an implementation which considerably 
reduced the number of I/O operation for a typical range search query. This substantially improved  the 
query times.
\item {\bf{Software Estimation for Design of Embedded Systems (Fall 1999)\\}}
{\it Supervisor :}  Dr. M. Balakrishnan \\[.1cm]
The aim of the project was to develop a methodology for selecting a processor, from a given set of 
processors, that was best suited for a particular application. 
The application was constrained by a deadline. The processor specification was in the form of 
number of FU's their delays, latencies \& their interdependencies.\par
We identified a number of parameters like number of arithmetic operations, number of floating point 
operations, number of mac operations etc. which would characterize the application \& extracted those 
parameters from it's SUIF intermediate representation (IR). Next we estimated the inherit concurrency in 
the application by carrying out an ASAP schedule. This information along with the processor 
descriptions enabled us to reject processors that had redundant capability 
(like large number of ALU's) which the application could not harness. \par 
Finally we estimated the rough cycle count that application would require on a given processor by 
applying heuristic ideas. The cycle count enabled us to reject processors that were either too 
fast or too slow for the application to meet it's deadline.
\end{itemize}
\newpage
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large{Course Projects}}
\vspace{0.1in}
\hrule
\begin{itemize}
\item {\bf A Secure Network File System} \\
The project involved development of  a Network File System using RPC's. 
The authentication of clients was Public Key based 
(in contrast to IP based authentication used in Sun
NFS). Some of the features of our NFS were stateless server and client \& 
server side caching of data.\par Coding was in C
\item{\bf{Design of an OS}}\\
As part of the Operating Systems course, the project involved the design \& 
implementation of a basic Operating System, with the help of OSkit. 
The kernel had a complete thread library with preemptive scheduling and
a semaphore library.\par
Coding was done in C \& Assembly
\item{\bf{Compiler Design\\}}
This assignment involved writing a complete compiler for a Pascal like language. 
The language had Pascal Syntax but had only two data types -Integers \&
Lists (which were more like perl arrays). 
The parser was developed using ML-Yacc/ML-lex.\par
Coding was in SML.
\item {\bf{Design and simulation of a CPU for handling Big Number 
Arithmetic\\}}
The project involved complete High Level Design (Data Path) of  a modified 
{\bf MIPS} processor 
with an enhanced instruction set for handling big number operations. 
We also developed a cycle accurate simulator for the processor.
%\item{\bf{ Design and Implementation of A Content Addressable Memory}}\\
%The project involved resolving various issues related to the functioning of a
%content addressable memory and their subsequent realization on a FPGA
%demo board.The tool used was {\bf Xilinx}.
\end{itemize}
%\vspace{.4cm}
%\hrule
%\hrule
%\hrule
%\vspace{0.1in}
%{\large{Computer Skills}}
%\vspace{0.1in}
%\hrule
%\begin{tabbing}
%123456781234567812345678\= \kill
%{\bf Technologies}\>: Linux Kernel programming, Embedded Linux, Real Time Operating Systems \\
%{\bf Computer Languages}            \>:  Proficiency in C++, Perl,  C, Pascal, SML, AHPL, VHDL \\
%                           \> \ \  Prolog, Assembly Language (MIPS/x86/ARM)\\
%{\bf S/W Tools Handled}    \>: Matlab, Flex (Lex), Bison (Yacc), Leda, Oskit, Bochs,  \\
%{\bf H/W Tools Handled}    \>:  XILINX (FPGA) \\
%{\bf Systems Management} \>: Experience in network and system administration of heterogenous\\
%\> \hspace{3mm}Unix and Windows NT based networked computing environments.
%\end{tabbing}
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large {Courses Taken at IIT Delhi in Computer Science \& Related Fields}}
\vspace{0.1in}
\hrule

\begin{itemize}
\item {{\bf{Computer Systems:}} 
\begin{itemize}
Operating Systems, Distributed Computing, Computer Networks, File Structures, 
Compiler Design Principles, Programming Languages.
\end{itemize}}

\item {{\bf{Computer Architecture:}} 
\begin{itemize}
Microprocessor Based System Design, Digital Hardware Design, 
Computer Architecture, Advanced Computer Architecture, CAD of Digital Systems, 
Digital Electronics, 
Introduction to Electronic Circuits, Signals \& Systems
\end{itemize}}


\item {{\bf{Theory, Algorithms:}} 
\begin{itemize}
Computational Geometry, Algorithms for Real World, Cryptography, 
Analysis and Design of Algorithms, 
Theory of Computation, Introduction to Logic for Computer Science.
\end{itemize}}


\item {{\bf{Mathematics:}}
\begin{itemize}
Probability \& Stochastic Processes, Linear Algebra, Algebra, Optimization (Operations Research), 
Discrete Structures, Topology and Functional Analysis, 
Mathematics II (Fourier Series, Complex Analysis, Vectors), 
Mathematics I  (Metric Spaces, Advanced Calculus etc.).
\end{itemize}}
\end{itemize}
\vspace{0.05in}
\hrule
\newpage
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large{Work Experience }}
\vspace{0.1in}
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large{KritiKal Solutions - A IIT Delhi startup }}
\vspace{0.1in}
\hrule
\vspace{0.2in}
After completing my graduation, I stayed back at IIT Delhi with KritiKal
Solutions, a student+faculty startup of the Computer Science Dept of 
IIT Delhi. The aim of this startup is to design \& develop a suite of 
''Low Cost Embedded Devices'', which have mass applications, particularly
in developing nations.\par
Currently I am working on a project involving development
of a ``Linux based Digital Talking Book Reader (DTB)''. Digital Talking Books
are a popular media for storing {\it electronic books} in audio format.
DTBs are particularly useful to visually impaired people.\par
I am the project leader of this project. 
For this project I have made a through study of the currently available low
cost embedded processors and ARM based system on chips (SoCs). 
We have finally identified an ARM based SoC - STA2001 ({\it from ST 
Micro Electronics}). I am currently working on porting Linux to the 
evaluation board of this chip. My next step would be to port the DTB software
({\it which is already ready for Linux/x86}) to this platform and then 
finally work on the customized board.
I would be completing this project in 
another 3 months.\\[.2cm]
%We have finally 
%identified an ARM based SoC -  S3C2410 ({\it from samsung}) as a suitable
%platform for this project. Linux port for this chip is available. 
%We are currently working on the Evaluation Board, and would finally migrate 
%to a custom board. \par
The other project that I have worked on was on development of a 
``Multi Function Office Unit'' (MFOU). A MFOU is linux based computer,
which can act as a printer + scanner + photocopier + fax machine. It also
has a web interface. We did this project for Xerox India.\\[.2cm]
\hrule
\vspace{0.1in}
{\large{System Administration}}
\vspace{0.1in}
\hrule
\vspace{0.2in}
I was {the \bf System Administrator} of {\bf Intel Technology Laboratory}, 
one of the core laboratories in 
Computer Science and Engineering Department, IIT Delhi. 
The lab had about $50$ Linux workstations
along with NIS, NFS, Samba, Proxy,  Firewall, Mail \& Web Servers. 
Half of the clients were Diskless whereas the other 
half had local kernels but mounted their roots over NFS.\\ 
As an administrator, I developed and managed several 
tools and scripts for scalability and 
easing management of the cluster.\\[.2cm]
\hrule
\hrule
\hrule
\end{document}
\vspace{0.03in}
\hrule
\hrule
\hrule
\vspace{0.1in}
{\large{Work Projects (KritiKal Solutions)}}
\vspace{0.1in}
\hrule
\begin{itemize}
\item{\bf Linux based Digital Talking Book Reader (Daisy Reader) 
(June 2002 - current)\\[.1cm]}
%In the last few years a new format called the Daisy Format has become
%popular for Digital Talking Books. The format allows the audio files
%to be stored in uncompressed (.wav files) or compressed (.mp3 files)
%form in the CD's. The format also defines how, along with the audio files, 
%indexing information, that is critical to the organization of books 
%can be stored.\par
The aim of this project is to develop a ``Low Cost'' 
Digital Talking Book Reader (both hardware and the software. 
This is a part of a larger ``Low Cost Computing Devices``  
objective of our company. I am the project leader of this project.\par
For this, we have made a thorough study of the currently available low
cost embedded processors and ARM based system on chips (SoCs) from 
MIPS, Motorola, Samsung, Sharp etc. 
We have finally selected a ARM based SoC -  S3C2410 ({\it from samsung}). 
Linux port for this chip is available. We have set up the cross compilation 
environment, remote debugging facility etc. We would
do the development on the evaluation board and finally develop a customized
board (with the necessary BSP). An important challenge of this project is
to develop a software MP3 player for ARM. ({\it which does not have a floating point unit})\\
\item{{\bf Linux based Multi Function Office Unit (June - Nov 2002)}
\\[.1cm]}
The aim of this project was to develop a Linux based Multi Function Office 
Unit(MFOU). By connecting a scanner, printer and a modem, a MFOU
box can work like a printer + scanner + photocopier + a fax machine. 
It also has features like scan to email, fax to email etc. 
It also has a web interface. \par 
We are doing this project for Xerox Modicorp India and I am the project 
leader. The main challenge of this project was to address 
the software engineering issues involved with this big \& complex software. 
There were also some Linux internal issues for speeding up scan to print.
\end{itemize}





