I've worked on a variety of projects relating to programming and machine learning. Some notable
examples include jaisalab, a framework
for evaluating and developing constrained RL algorithms, and niteshade,
a library that facilitates the simulation of cybersecurity attack and defence strategies during online learning. All my projects are available on my
GitHub, and below you can find some more examples of my work.
A Python library for simulating data poisoning attack
and defence strategies against online machine learning systems. The library
is written in Python 3.10 and offers a simple and intuitive API which is heavily
integrated with PyTorch's machine learning framework (Developed as part of a group project in my MSc).
A Python framework for developing and evaluating reinforcement learning
algorithms that take into account constraints that should be satisfied in OpenAI gym
environments, that also provides PyTorch implementations for a few state-of-the-art algorithms
in Constrained RL (Developed as part of my MSc Individual Project).
Implemented a simple genetic algorithm that represents color
combinations through binary strings and iteratively updates a population of these through mutation and crossover
operators based on a fitness function in line with the original games' rules.
Implemented an AI that uses the Minimax algorithm to play a game
of Connect 4 optimally by minimizing the maximum losses of any given move. I also implemented the Alpha-beta pruning algorithm
which is an alternative on the former that aims to decrease the number of nodes that are evaluated to determine the optimal move.
Designed a parser that structured a set of movie scripts in terms of
their indentation levels to identify their dialogues, and subsequently analysed these dialogues to determine if any given movie
passed the Bechdel test to different degrees.
Heuristically designed an AI that plays Battleship
using Python. Made use of OOP to separate the different aspects of the problem into different modules and
objects.