Software Projects

A collection of projects I worked on that is separate from my full-time job.

Machine Learning Paper Replications

Stealthy and Efficient Adversarial Attacks against Deep Reinforcement Learning

  • GitHub link: github.com/aayn/seaadrl-pytorch
  • Replicated the results from AAAI ‘20 paper “Stealthy and Efficient Adversarial Attacks against Deep Reinforcement Learning.” [Sun, Jianwen, et al. 2020].
  • Extended the results by adding adversarial examples while training to make it more robust. This led to 5% performance improvement on Atari Pong.

Combined reinforcement learning via abstract representations.

  • GitHub link: github.com/aayn/crar-pytorch
  • Replicated the results from AAAI ‘19 paper “Combined reinforcement learning via abstract representations.” (CRAR) [Francois-Lavet, Vincent, et al. 2019].

Robot Motion Planning

  • GitHub link: github.com/aayn/robotic-motion-planning
  • Generated a configuration space for the given environment and implemented path planning algorithms like Dijkstra’s SPF, Rapidly-exploring Random Trees (RRT), Probabilistic Roadmap (PRM) and Voronoi diagram-based.

Underwater Object Detection and Control

  • Implemented a specialized version of YOLOv3 deep learning object detection algorithm, and control with ROS for an autonomous underwater vehicle (AUV).

Parallel Computing on CUDA and Supercomputer

  • Implemented fast matrix multiplication by optimizing GPU thread and memory usage. The resulting program multiplied large matrices more than 800x faster than the naive matrix multiplication on a single CPU core.
  • Implemented cardiac signal simulation (Aliev-Panfilov) on a supercomputer using MPI. Optimized the program by minimizing communication costs and making effective use of the memory hierarchy of registers, caches and main memory.

Autonomous Vacuum PiCar

  • GitHub link: github.com/aayn/vacuum-picar
  • Designed and implemented software and algorithms for robot car to cover a given area.
  • Incorporated techniques from robotics (path planning, subsumption architecture, image-based visual servoing, configuration spaces, SLAM) and principles from software engineering (DRY, single responsibility, KISS).

Distributed Conway's Game of Life

  • Implemented a distributed version of Conway’s Game of Life using C++ MPI.

Ethereum Voting DApp

  • Designed and implemented an anonymous voting DApp on Ethereum written in Solidity

Ultimate Tic-Tac-Toe Bot

  • Built an Ultimate Tic-Tac-Toe bot to play better than human expert-level. Algorithms used: A* search and alpha-beta
    pruning.