avatar

Nithin Bharathi

Dalhousie University
nithinbharathi@dal.ca


About Me

I am a graduate student studying Computer Science. My interests revolve around Algorithmic Complexity, Data Structures, Software Engineering, and Distributed Systems. Prior to this, I also worked as a Software Engineer at Odessa Inc.

Experience

Odessa Inc. - Software Engineer II
At odessa, I was part of the data migration team wherein I worked on enhancing Odessa’s Data Migration tool by implementing additional product functionalities, improving the performance of existing modules and developed new migration modules. I also architected and developed the company’s first ever distributed data orchestration job for large scale data transfer.

Besides, I also spent a significant amount of time working on bug fixes, writing stored procedures, tuning expensive queries, creating test scenarios, working closely with junior developers, assisting them, and handling production release activities for the team.

Projects

Wordgen - character-level language models which predict the next character given a sequence of characters as input. In addition to the core MLP architecture, Wordgen also integrates an attention mechanism coded from scratch.

JMatrix - Java package that is designed for parallel execution of numerical calculations with 2-dimensional matrices efficiently. Operations (non-parallel) also support broadcasting similar to Python’s numpy library.

Scalargrad - reverse automatic differentiation engine that supports simple arithmetic operations on scalar values. A directed acyclic graph records each operation which is later used in computing the derivatives during backpropagation.

Versioneer - a simple version control system built in Java. Inspired by Git, Versioneer offers functionalities such as init, add, commit, and showdiff.

PatternMatchingSuite - FM-index for large DNA sequences. It is highly space-efficient as it uses bit vectors internally for in memory storage and supports search operations like MEM finding and counting occurences of a pattern by using optimised algorithms.

C-STL - C++ STL like library built using C. It currently supports hashtable, linkedlist, stack and queue. This project is a work in progress, with plans to expand and incorporate additional data structures and algorithms.

BoringLang - minimalistic programming language developed in Java, designed to explore the fundamentals of language design and compiler construction.

The following are a collection of technical links that I have found to be interesting.