Hi, I'm Prani Gopu a.k.a. Pranav Gopalkrishna 👋
[email protected] | |
🧑🤝🧑 Social | Instagram : @pranigopu ¦ LinkedIn : Pranav Gopalkrishna |
🌐 Websites | Personal Writing Showcase ¦ Personal Website |
Artificial intelligence is the subject of my choice for which I have a lot of time studying the theory and applying my knowledge in a variety of projects. My key motivations in studying AI were to (1) expand on the creative applications of AI systems and (2) integrate theory and practice to create well-founded and accessible solutions. I have a strong background in computer science, especially due to my extensive programming projects (mostly in Python, Java and C) in a variety of domains (both personal and academic; click here). I also have a strong background in statistics and mathematics. I enjoy both mathematics and computer science, and putting them together has been a long-standing interest of mine. Additionally, I enjoy writing (in both technical and creative areas) and occasionally composing music.
Comparative Evaluation of Bayesian Neural Networks (2024) (Master's Thesis)
Evaluates and compares two Bayesian inference (BI) methods — Hamiltonian Monte Carlo (HMC) and variational inference (VI) — as applied to uncertainty quantification in Bayesian neural networks (BNNs) for regression problems. Drawing on existing research in computational BI and deep learning, this study presents the theoretical and practical progression from BI to BNNs, and demonstrates the effectiveness of uncertainty quantification of the two BNN implementations for regression problems. The HMC and VI BNN models were implemented using Tensorflow and PyTorch respectively.
Goal 1 | Present a clear link between BI and BNNs in practice |
Goal 2 | Evaluate the performance of different BNN methods |
Tools | Python using Jupyter Notebook |
Keywords | bayesian inference , bayesian neural network |
Grade | 73.2% |
Cellular Automata and Behaviour Trees (2024)
This project focused on (1) designing cellular automata to procedurally generate "coral reef" terrains and (2) implementing behavior trees for two agents: a diver (player) and a mermaid (AI). A key challenge was designing three distinct cellular automata that generated diverse yet coherent terrain, maintaining the natural aesthetics of coral reefs while offering gameplay variety. The game evolved into a simple but engaging challenge where the player must collect five artifacts while evading the mermaid's ranged and melee attacks. Coral reefs provided hiding spots but slowed the diver if spotted, balancing stealth and vulnerability. The player’s score depends on time taken and remaining health, adding tension and strategy to the gameplay.
Goal 1 | Design cellular automata for coral reef terrains |
Goal 2 | Implement behaviour trees for NPC and player agents |
Tools | C# using Unity Game Engine |
Keywords | unity , procedural content generation , behaviour tree |
Grade | 89% |
Convolutional and Recurrent Neural Networks for Musical Analysis (2024)
Developed a machine learning system to recognise musical keys and tempo using convolutional neural networks (CNNs) and bidirectional recurrent neural networks (BRNNs) respectively, both implemented with Keras. Audio data was pre-processed into Mel spectrograms and segmented with Librosa, then combined through an end-to-end system for predictions. This project sharpened skills in ML architecture selection, data pre-processing, and result integration.
Goal | Train models for music key and tempo recognition |
Tools | Python using Jupyter Notebook |
Keywords | convolutional neural network , bidirectional recurrent neural network |
Grade | 60% |
Neural Style Transfer (NST) to Transfer Ambience to Music (2024)
Implemented neural style transfer (NST) to blend ambient soundtracks with melodic compositions. Developed a CNN for genre classification (implemented with Keras) and integrated it into a custom NST algorithm for audio (handling tensor operations using Tensorflow). Created an end-to-end interface on Google Colab for seamless audio processing and style transfer. Despite noisy outputs, the project provided insights into the potential and limitations of applying NST to audio.
Goal | Apply NST to transfer ambient sound characteristics to music |
Tools | Python using Google Colab |
Keywords | neural style transfer , convolutional neural network |
Grade | 57% |
Presentation on a Paper on Piano Skills Assessment via Deep Learning (2024)
As a part of the deep learning for audio and music course, we students had to present a paper of our choice (either live or in video, with a live Q and A in either case). My chosen paper is "Piano Skills Assessment" by Paritosh Parmar, Jaiden Reddy and Brendan Morris. I chose this paper due to (1) my experience in piano assessment (as a student), (2) the relevance of such an application (e.g. personal performance evaluation to help self-improvement), and (3) the interesting complexity of the problem of automating musical evaluation.
Goal | Present "Piano Skills Assessment" by Paritosh Parmar, Jaiden Reddy and Brendan Morris |
Keywords | automated skills assessment , multimodal skills assessment |
Grade | 72.1% |
Reinforcement Learning (RL) Methods (2024)
Implemented and tested RL methods for navigating a grid-based obstacle course (the "frozen lake" environment defined for the assignment) using model-based approaches (i.e. policy iteration and value iteration), model-free approaches (i.e. SARSA, Q-Learning, linear SARSA and linear Q-learning) and a deep learning approach (i.e. Deep-Q learning). This was a team project, but while the team worked together for the report and experiments, the RL methods were implemented by each member independently. Hence, this project solidified my grasp of RL methods, their effectiveness and their limitations/drawbacks. This project also challenged my problem-solving skills and strengthened my ability to collaborate.
Goal | Test RL methods on a grid-based obstacle course |
Tools | Python |
Keywords | reinforcement learning , model-based , model-free |
Grade | 96% |
Enhancing Monte Carlo Tree Search (MCTS) (2023)
This project aimed to enhance the basic MCTS algorithm within the Tabletop Games Framework to improve performance against other agents in "Sushi Go!" I collaborated with two teammates, proposing methods such as hard pruning, Bayes-UCB sampling, and Thompson sampling (our winning solution). Although I introduced IS-MCTS, my implementation underperformed, resulting in no contribution to the final code. Instead, I ran the final experiments and data collection and made significant contributions to the project report, covering MCTS theory, the exploration-exploitation dilemma, and multi-root MCTS. Our final agent, using Thompson sampling, outperformed all other enhancements in our class, earning a final grade of 94% for our project.
Goal | Improve AI performance in playing "Sushi Go!" using MCTS |
Tools | Java |
Keywords | monte carlo tree search , bandit methods |
Grade | 94% |
Text Mining and Sentiment Analysis via Chrome Extension (2022)
Developed a Chrome extension for text mining and sentiment analysis on web pages. Created the extension and integrated its popup-based frontend with the backend using Django (hosted locally). The backend runs Python code for text mining and sentiment analysis (based on code written by a teammate). The prototype generates a word cloud, word frequency chart, and sentiment pie chart.
Goal | Scrape website text and analyse sentiment via Chrome extension |
Tools | JavaScript, HTML, Python |
Keywords | chrome extension , django , text mining |
Grade | 81% |
Report on Transparency, Explainability, and Accountability (TEA) in AI (2024)
This report aims to address some relevant ethical ideas in AI, primarily transparency, explainability and accountability. Further, it aims to integrate these ideas with technical/business requirements, explore AI ethics using a case study involving an ethical and legal/regulatory breach in AI use and finally, explore the application of AI ethics in a hypothetical case involving the development of an ethical framework for a particular technical/business context.
Goal | Reflect on TEA in AI systems, propose an ethics framework |
Keywords | ai in industry , ethical framework |
Grade | 71% |
Industry Case Study on Procedural Generation (2024)
Unexplored is a video game — specifically a roguelite action-RPG dungeon-crawler — that applies procedural content generation (PCG) to create dungeon levels (20 overall), including puzzles and encounters. As the case study explores, cyclic generation is the keystone innovation that makes Unexplored stand apart in terms of both game-design and gameplay. This report focuses on the idea of cyclic dungeon generation, its implementation in Unexplored and how abstract level-design is concretised into playable levels.
Goal | Discuss cyclic procedural generation using "Unexplored" as a case study |
Keywords | cyclic dungeon generation , procedural content generation |
Technical Writings on Key Statistical Concepts (2023-2024)
I have often found statistics a dense subject, both in practice (e.g. sampling, statistical formulae and calculations, etc.) and theory (e.g. inference methods, mathematical expectation, theoretical distributions, etc.). Clearly, it is a subject having an immense depth of abstraction while also having extensive practical uses, which makes it relevant and valuable to solidify the basis of key statistical concepts, ideas and formulae. This is what I aim to do with these writings.
Goal | Present a rigorous overview of key statistical concepts |
Keywords | probability theory , statistical estimation , hypothesis testing |
Applications of Number Theory (2022)
Goal | Present various real-world applications of number theory |
Keywords | number theory , pseudorandom number generation , cryptography , coding-decoding |
Learning Computer Vision
Goal 1 | Learn image and video processing |
Goal 2 | Implement deep learning models to analyse images and videos |
Tools | Python |
Keywords | image processing , video processing , computer vision , deep learning |
ClingClick - A Mineable Obstacle-Maze Boss Fight
Goal | Implement a boss fight against a pathfinding NPC in a mineable maze environment |
Tools | C |
Keywords | a-star pathfinding , mineable environment , inventory management |
MineSweeper Implementation in C
Goal | Implement the classic MineSweeper game in C, using a terminal-based interface |
Tools | C |
Keywords | minesweeper , terminal-based interface |
Notes Manager
Goal | Create a simple program to manage your notes (particularly study notes) |
Tools | Java |
Keywords | file and directory management with java |
Exploring Algorithmic Trading
NOTE: So far, I have only learnt key concepts behind algorithmic trading and dealing with API requests and responses for data.
Goal | Explore algorithmic trading |
Tools | Python |
Keywords | api calls , point and batch requests |
Tic Tac Toe Implementation
NOTE: The "AI opponent" is a relatively basic algorithm to try to stump the player using a few simple strategies.
Goal | Implement tic tac toe (single-player and multiplayer) |
Tools | C |
Keywords | tic tac toe , ai opponent |