Software and Projects

Downloadable technical and non technical software that I have written over the course of my undergraduate and graduate study. Some of the recent software is a part of my research work. Please navigate to the research page for details.

On this page, you can learn more about each project, download related software for some of the projects or view the demo videos, wherever applicable. Working implementations for some of the projects are available upon request.

Creative Commons License

All software Copyright(C) Saurabh V. Pendse is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License. Permissions beyond the scope of this license may be available at sau2pen at gmail dot com. If you use this software in your own work or extend it, please cite this website and Saurabh V. Pendse as the copyright holder.

Software Page 1


Implemented from scratch the seminal deep learning structures in Matlab and Python for learning useful representations from real-world temporal and spatio-temporal datasets, applicable to a variety of classification and prediction problems.

A brief tutorial on deep learning (pdf)
Download paper (pdf)

Developed a framework for Compute-I/O process interleaving in staging environments, on the Jaguar XK6 (now Titan) supercomputer at Oak Ridge National Laboratory in C using MPI, and integrated in the production S3D combustion simulations.

View Paper (HPDC 2012)

Designed a data-driven, semi-automatic framework for inference of phenomenological models in complex systems, specifically climate. It is based on the Lasso multivariate regression model and is designed to quantify the compound affect that the complex interplay among variables in various temporal phases. This work, implemented in MATLAB, involves the development of the complete pipeline, starting with data preprocessing, an optimized Lasso implementation, a ranking module for active phase determination, a significance estimation module, and an impact analysis to infer causal relationships.

View Paper (SIAM SDM 2012)


This three part project deals with developing from scratch, discrete event simulation models for web servers to complement the analytical models. We first begin with a single server system with a finite capacity, simulating a M/M/1/K system. In the next part, we explore the effects of various scheduling disciplines like FCFS, LCFS, SJF (non-preemptive), Priority (non-preemptive) and Priority (preemptive) on the avaraige waiting times and service times. We also study a more complex queueing system consisting of a web server with multiple I/O disks. In the final part, we implement two cases fora queueing system with multiple servers, (a) where the service times are exponentially distributed (M/M/1), (b) where the service times follow a bounded Pareto distribution (M/G/m).


Designed and created a user-level thread library analogous to POSIX threads. The API suports the following functionality:

  1. Thread create, exit, yield, join, key_create/delete, get/set_specific.
  2. Thread synchronization using mutexes (lock/unlock) and condition variables (signal/wait/broadcast).
  3. Priority-based thread scheduling and pre-emption via time-slicing are also supported. True parallelism is supported on multi-core environments, using atomic instructions to deal with race conditions.


This project relates to studying the program stack and memory page vulnerabilities on Linux. The goals are as follows:

  1. Force segmentation faults by overflowing the local function arrays.
  2. Overflow the local array to execute a different function by changing the return address.
  3. Execute custom code by injecting opcode and study the vulnerabilities of stack randomization.
  4. Design and implement a sandbox-based approach to detect and prevent malicious buffer overflow attacks.

Software Page 2


This project deals with maintaining data consistency on distributed file systems. Thsi is done using a fault-tolerant voting protocol on client-server architecture, with servers addressing multiple clients requests simulataneously using synchronized locks on keys. The essence of the protocol is reliable replication of data over multiple servers. Data reads/writes from clients are affected via votes by clients.


Bag of Tasks problems are those parallel applications whose tasks are independent. These class of problems are both relevant and amendable for execution on computational grids, since communication can easily become a bottleneck for tightly-coupled parallel applications.

Specifically, this problem relates to text processing and data analysis. A movie dataset distributed into several fiels is given as input. The solution involved leveraging the massive parallelism of the GPU to quickly analyze the same and return a list sorted based on the movie ratings. An extension involved interleaved processing of parts of the input on the CPU (using POSIX threads) and the GPU. Hashtables on the CPU and GPU are used to maintain counts.


A Peer-to-Peer system for sharing RFCs among clients with a centralized RFC index.

Checkout with Subversion (IDE)
Checkout with Subversion (make)

An FTP service implemented over UDP ensuring reliability in the application layer using the Go-back-N automatic repeat request (ARQ) and the Selective Repeat ARQ protocols.


This software, developed using Maven, is capable of using real time flight information of airplanes to monitor different aspects of their flight patterns. Elements of special interest include on-time arrival of airlines, airline performance, airport efficiency, and other interesting statistics around length of trips and on-time arrivals.



An interpreter for a C-like language (C7) with certain restrictions on the syntactic constructs, operators, and grammar complexity developed using the Flex lexical analyzer and the Bison parser.

Software Page 3


Implemented vision software from scratch that uses Numenta's Heirarchical Temporal Memory (HTM) algorithms. Our system achieves a training accuracy of 100%. We tested the system on 2 different types of test images:

  1. Images of the same class as the training set but randomly translated. On this set, our system achieves a testing accuracy of 97%.
  2. Images that were randomly translated, rotated, scaled and noise corrupted. On this set, our system achieves a testing accuracy of 75%. This is impressive because our HTM network was NOT exposed to rotation, scaling and noise during training.

Download Project Portfolio (40 MB)
Download working sample (13 MB)

This project implements a 3-layer neural network in both Java and MATLAB as well as a 4-layer neural network in MATLAB.


This is a project which, I implemented as a part of a robotics workshop held at my University by Robosoft Systems Pvt. Ltd. I have programmed this robot using Embedded-C and Keil.


This project is a "One-Stop" Solution for all requirements of a user pertaining to Equity Markets. The program gives the user a variety of options some of which include live ticks and charts, historical prices, statistical computations on historical data, portfolio generation and maintenance, Virtual Buy/Sell Option, E-mail and SMS Notifications, RSS News Feeds about stocks, and advanced chart customization and printing features. The program is fully automated and manages its back end database automatically without user intervention, to keep its historical database up-to-date.



This is a project designed for an experienced or skilled Market Investor, Trader or Analyst keeping their requirements in mind. The main objective of this project is to provide the user with all the details about a stock or group of stocks available from the market. The various data provided include Market Voices, Current Price, Volume, Delivery Volume, Highs, Lows, Close, Historical Data, Gainers v/s Losers and many more. The main object here is to get the pulse of the market for the user. The interface is user-friendly, elegant and sophisticated. This project is ideal for making buying, selling or holding decisions on stocks.

Software Page 4


Developed an analysis engine that is specifically designed to run algorithms requiring high computing resources, with customized specifications received from the end users. It is run on cloud-based High Performance Computing Systems, whih acts as a backbone for addressing large scale computing requirements. The software was tested on a local network based on a multithreaded client/server model. It is developed in Java with a MySQL backend database. A prototype, ported to Hadoop, has also been tested witon the Amazon EC2 cluster.


Developed a complete website data logging framework in PHP and JQuery with a backend database. It features logging visiting users' IP addresses, time and page-specific activity while on the website, including paths followed, click hot-spots and per-page time statistics.


Developed a web application for managing open-source code distribution projects, specifically requiring users to accept appropariate licenses and agreements, provide contact emails and handle validation of email accounts, and capping the number of copies downloadable from a single user account. In addition, the information on all users is collected in a backend database for analysis.


This is a project developed to automate the task of result acquisition and management. This project acquires result information of all students from the University Website and inserts them into a set of tables in the back-end database. The user then can perform several types of statistical and analytical computations on the result in order to estimate the overall performance and other parameters.


This is a project was for the creation of a Launch Video for a University Technical Event. The softwares used include Adobe Premiere Pro, Autodesk Combustion, Adobe Photoshop, Adobe After Effects, Adobe Audition etc.