GitHub: akarshkumar0101·
akarshkumar0101@gmail.com

Hey! My name is Akarsh and I'm a programmer aspiring to dive heavily into the fields of computer engineering, machine learning, and, later on in my research career, theoretical physics and mathematics.

I am currently a Computer Engineering and Physics major at UT Austin in the class of 2022. I hope to pursue an education, research, and career in computer science, physics, and math. I immerse myself in these fields whenever possible driven by my curiosity with them. Although they may seem like completely different topics, they all try and describe the underlying nature of the universe in different ways. I see math as a universal native language of the universe, physics as a real implementation of mathematical systems and ideas, and computer science as a convenient tool to explore mathematical realms further (as well as introduce new math concepts like complexity theory). I want to pursue a PhD in one or two of these subjects and help our species understand the world better.

Born in India, my family moved to the United States in 2005 where we lived in Arkansas, Florida, Iowa, and now Texas. I went to the Arkansas School for Mathematics, Sciences, and the Arts, where I discovered my love for computer science, physics, and math through classes like Algorithms and Data Structures, Modern Physics, Astrophysics, and Differential Equations. My dad is a civil engineer in the Irving area, while my mom is a college professor. My 22 year-old brother recently graduated with a degree in computer engineering from the University of Toronto and is now attempting to start his own company.

Thanks for visiting! Check out my website below.

Downloads:

Akarsh Kumar Resume

Personal Programming Project

**Description: **

In the summer of 2019, I wrote a program that uses genetic algorithms to train and evolve Neural Networks.

Genetic Algorithms are a form of evolutionary computing that starts out with a lot of different random solutions to a problem, called "organisms", and mutates and breeds the best of those solutions to produce the next generation. Over a large amount of generations, the best solution/organism will arise in the population.

This is a great way to search through an optimzation landscape: by searching and mixing the most promising solutions until an optimum is found. In a large number of problems (like the traveling salesman problem and others illustrated below), genetic algorithms will converge on a handful descent solution relatively quickly.

Neuroevolution is a form of genetic algorithms where the solutions/organisms are "DNAs" (information) to create a neural network, or to simplify are neural networks. Over numerous generations, the NN's gain complexity and neurons. Mutating involves either growing the network and/or changing the weights associated with the connections. Breeding neural networks involves an complex process with innovation numbers and keep track of the evolutionary history of the NNs in order to produce a clear offspring of two neural networks.

This process is called Neuroevolution of Augmenting Topologies and was invented at UT Austin by Neuroevolution researchers. This is much different from the classical way to train NNs with gradient descent because you don't need to know the output for a given input of the neural network; you only need to know how "good" a certain NN is (the fitness function).

I implemented this from scratch in Java and trained to find a model for Flappy Bird the game.

Reading and understanding research paper, intense mathematical calculations, optimization problem, abstraction for any dataset, visual display.

Neuroevolution Official Research Paper

See my source code

2019

Personal Programming Project

**Description: **

During the summer of 2018, I created this abstract deep neural network that can find an association between any two sets of data using a stochastic gradient descent approach. This neural network was built from complete scratch and was trained to recognize handwritten digits and number of veritcal and horizontal lines in an image (as well as find a pattern in the primes, but that failed).

Intense mathematical calculations, optimization problem, multithreading, abstraction for any dataset, visual display.

See my source code

2018

Personal Programming Project

**Description: **

During the 2018-2019 school year, I learned about and instantly got fascinated by genetic algorithms. I wrote my own implementation in Java.

Genetic Algorithms are a form of evolutionary computing that starts out with a lot of different random solutions to a problem, called "organisms", and mutates and breeds the best of those solutions to produce the next generation. Over a large amount of generations, the best solution/organism will arise in the population.

This is a great way to search through an optimzation landscape: by searching and mixing the most promising solutions until an optimum is found. In a large number of problems (like the traveling salesman problem and others illustrated below), genetic algorithms will converge on a handful descent solution relatively quickly.

I first used my genetic algorithm to find an optimal solution to the traveling salesman problem. I arranged a solution as being a permutation of the indexes of the cities. After mutating and breeding, it found a very good solution. (The fitness function was negative the total distance)

The second instance of my genetic algorithm was used during a hackathon (TAMUHack) to find the optimal keyboard layout to increase typing speed and reduce typing effort. I used genetypes depecting the permutation and ordering of keys on the keyboard and had a fitness function that evaluated how much "work" it took to type out a whole book using that keyboard solution. After many generations, it found an optimal keyboard layout.

I implemented this from scratch in Java.

Reading and understanding research paper, optimization problem, abstraction for any dataset, visual display.

Keyboard Optimization Presentation

See my source code

2019

Personal Programming Project

**Description: **

Created a Java desktop application that parses mathematical text into a logic tree (can be used to evaluate the expression as well as take the derivative of it, etc). Used this computer algebra system to render functions in a movable and scalabe graphical output.

Multithreading, Java Swing graphics, Equation trace, Support for multiple graphs in one plot, Math parser (String to Binary Tree), Interactive drag UI.

See my source code

2016

Physics

**Description: **

Physics-based project that was conducted as part of the Fundamentals in Research Methods (FIRM) program at ASMSA. The goal is to optimize photovoltaic cells for monochromatic laser light. Applications include but are not limited to laser power beaming and fiber optic energy transfer. In a nutshell, I worked on “tuning” the bandgap frequency of the semiconductor in the PV cell to the laser’s frequency. I used Shockley and Queisser’s techniques (“Detailed Balance Limit of Efficiency of PN Junction Solar Cells”) to find the theoretical maximum efficiency of a laser-PV cell system using mathematics. I am currently continuing this research in bandgaps of semiconductors (using simulations) at UT Austin under Dr. Seth Bank.

**Advisor: **

Dr. Brian Monson

** Concepts: **

Black body spectrum, Laser spectrum, Planck’s equation, Semiconductor (PV cells), Photovoltaic effect, Detailed balance limit.

** Challenges: **

Complex calculus integrations, Combining Shockley and Queisser’s equations for laser applications.

** Downloads: **

Research Poster

Research Presentation

Research Paper PDF

2017

Personal Programming Project

**Description: **

Worked with a college student to revive a popular strategy game called Tactics Arena Online that thrived in the 2000s but mysteriously shut down. I was the only programmer on the team. The goal of this project was publish the game online and create a community of players.

Multithreading, IO Streams, File IO, Algorithms (shortest path and sorting), Java Swing graphics, Multiplayer support, Database connections, Action listeners, Java Sockets, Server-client setup, Game mechanics.

2016

Class Programming Projects

**Description: **

In my favorite programming class (CP3/Algorithms and Data Structures), we made programs that generated and solved mazes, found shortest paths using A*, found the efficiencies of a hashtable and self-balancing binary search tree, and optimized a building scenario. In Graphics Programming, we used Python to alter images with matrix transformations and kernals (guassian blurs, edge/corner detection, etc). We used seam carving reduce image sizes while keeping valuable aspects unchanged and compress images using custom algorithms. I also created my own custom QR code named "akarz" and was able to transfer text information through reading in images with my QR code on them.

Advanced algorithms, Multithreading, Java Swing graphics, Python numpy.

** Presentations: **

Maze Generation and Solving Algorithms PDF

Path Finding Algorithms PDF

Hash Table PDF

Self Balancing Binary Search Tree PDF

City Simulator PDF

Image Transformations PDF

Image Seam Carving Reduction PDF

Panorama Creation PDF

Image Kernel Alterations PDF

Image Compression PDF

2017

Volunteering

**Description: **

Created a Java desktop application to keep track of volunteering hours and manage admin access and statistics reports. The application was made for Free Geek, a non-profit technology recycling organization located in Fayetteville.

Storing data offline, File IO, Java Swing library, Professional UI & UX, User logins (ACL, admin, guest accounts).

2015

Personal Programming Project

**Description: **

This Library is an acumulation of all things that I have made that could be useful in the future. It includes everything from neural networks and genetic algorithms to the computer algebra system and graphing library. It also includes functions for useful abstract methods and allows altering arrays in Java to be easier than in Python! Using this library, you can get started with a GUI application much faster than in vanilla Java and makes serialization of objects and managing a program's history state easier than ever. It also includes many useful functions needed for Project Euler and is very diverse in nature.

Combining all programs made from before, abstraction of all methods within (universal use in other applications)

See my source code
2016

Programming Project

**Description: **

A program for Valentine’s day matchmaking. The project was part of a competition hosted by Fayetteville High School. The program matched couples based on a survey. The algorithm was based on a fair model where the candidates with the lowest chances for a match had priority.

Java Swing library, Algorithm, Storing data on Hard Drive, Interactive UI.

2015

Personal Programming Project

**Description: **

Made a chess program with programmed rules. Did many computations using this for my grand master friend. Implemented a basic minimax AI to run on this (not fully functional yet).

Java swing graphics library, Algorithm, Interactive UI.

2014

Personal Programming Project

**Description: **

When I was younger, I attempted to build a perpetually spinning motor using magnets. Obviously, it failed to work, but after a few years, I built a program modeling the behavior of the system. This program let me see the theoretical flaws in the design.

Modeling Calculus with Discrete Computer Loops, Physics Equations, Vector Calculus.

2016

Personal Programming Projects

**Description: **

I have made a "instagram" app called parstagram, twitter client, movie browser, and tip calculator app.

Interacting with backend and fullstack development

2016

Computer Engineering and Physics major

EE 422C -

EE 461S -

EE 312 -

EE 306 - Computing with LC-3 simulator

EE 319K - Embedded Systems

M 325K -

M 340L -

M 427J - Differential Equations with Linear Algebra

M 351K - Probability (Current)

M 427L - Vector Calculus

EE 313 - Linear Systems and Signals (Current)

EE 411 - Circuit Theory

EE 302 - Intro to Electrical Engineering

PHY 303K - Physics for Scientists and Engineers, Mechanics

UT Transcript

2018 - present

High School Diploma

Highschool transcript and test scores

2016 - 2018

I believe math is embedded into nature and is only being discovered by humans. Maybe math is the language of God, or maybe it is the language used by the species simulating our universe. Some people try to argue that math is merely a tool invented by humans to study our universe, but it seems much to useful and elegant for us to have invented it or it to have been a coincidence (Is God a Mathematician?).

Math, physics, computer science (and the logic of computation), are all connected in deep ways that we currently barely understand. Not only are we only starting to learn about these connections, I believe we have uncovered less than 1% of the potential landscape for us to explore. We need to keep studying these fields in rigorous detail to understand the world around us.

**Why I study Math, Physics, and Computer Science**

There is a certain empowering feeling about completely understanding a physics, math, or computer science idea that I can fully explain. Maybe its because it makes me feel powerful in knowing something. Or maybe because it represents all the innovation and inventions that can result from understand the idea. Sometimes it even feels like a philisophical/religious inquery on our universe mutated into a STEM explanation. Whatever the reason is, it has shaped my career and goals into adventuring through physics, math, and computer science in one way or another.

- 2017 AP Scholar With Distinction.
- 2014-2016 ACTM Algebra 2 and Pre-calculus State Award.
- UARK Fayetteville Programming Competition Winner x2.