(In Progress) Working on a 3-person team of undergrads in the Yang Lab, the Cloud Molecular Beam Epitaxy project (CMBE) is designed to allow autonomous growth of complex materials. I have written 95+% of the automation code including a GUI featuring multiple tabs and modes for interacting autonomously with the custom-built machine. It controls 7 lasers, 3 power meters, the effusion cell shutter, the temperature controller, laser movement rail, rail shutters, and sample manipulator, all using custom drivers. The user can upload a series of times and temperatures at which they want to grow, and it will interact with all devices to ensure the sample is grown followed by data collection and storage. Using this automation interface, we have sped up data collection on the order of 100-1000x from humans and can operate continuously for days taking 50000+ datapoints per week. I am currently working on using reinforcement learning to automatically design custom materials.
Language: MATLAB, C, Python
On the hardware side, I have designed (Fusion360) and manual/CNC-machined multiple optical mounts and contributed to the optics and thermal design of the system. I have also made multiple laser power tuning and stability circuits. The entire system has been custom built by the team in the last year.
Created for Johnson & Johnson's Center for Device Innovation, I wrote custom MATLAB libraries to control the Trossen Robotics WX250S (6-axis lightweight robot) and the ABB15000. Both robots are able to understand their surroundings and actively avoid obstacles while executing path-searching algorithms. The smaller robotic arm includes an algorithm for maintaining position to 1mm under dynamic loading as its joints are not inherently stable in its original ROS library.
Language: MATLAB
I designed and built the electrical system (power distribution, sensors, mechatronics) for our 30lb combat robot in the UIUC Robobrawl competition. The robot (Kevin) can drive at more than 20 mph for an hour and includes an 8lb steel spinner weapon. I also contributed to the mechanical design and assembly of our robot which included sourcing materials (ie when to use annealed steel vs. 7000 aluminum) and simulating impact scenarios.
More Specs: UChicago Robotics
Currently, I am the technical and organizational lead on an autonomous maze-solving competition as co-VP of Technology.
I designed a full Python workflow (5000+ lines) to model a new quasicrystal system with interesting topological properties. It uses Numpy/Scipy/Matplotlib and has the ability to generate thousands of graphs per run on various key physics metrics. I wrote all core quantum mechanics subroutines from base Numpy operations to better fit my mathematical needs instead of using more typical quantum mechanics libraries. I have also simulated possible implementations via scanning electron microscope to validate these results experimentally using QuantumESPRESSO. A publication is in progress.
Language: Python
Misc. CS Classwork
Algorithms & Structures (12th Grade)
In these graph projects, I explored breadth-first searches in a program connecting two words of the same length via words differing by one letter only and a program finding a path through the USA via roads of the shortest length (uniform-cost search). Bread-first search: At each successive step, it explores all of the branches connected to the ones already explored, rapidly but inefficiently exploring an enormous number of options. The search I implemented always finds the shortest path in an unweighted graph, even if it is not as efficient as other algorithms. Uniform-cost search: In programming this algorithm to find the shortest route between cities in the US using a set list of road choices, I learned how to implement this search structure including its starting and stopping conditions to find the optimal path. In this implementation of the algorithm, it will always find the shortest path through the weighted graph. In this project I learned how to implement the uniform-cost search as well as that sometimes complex abstract data types can be approximated like in this case using a simple list and sorting it often instead of a priority queue.
Language: Python
In these two projects I learned how to code and manage a priority queue. I wrote the functions for modifying the priority queue so that it always satisfies the heap property and so that it can be accessed easily in an implementation as an abstract class that can work on generic objects. In a related project, I learned how to encode and decode text messages with Huffman coding via the priority queue class that I had written. An example Huffman coding dictionary is shown at left.
Language: Python
This project involved writing all the methods for a linked-list class including adding and deleting specific items or a number of items from arbitrary inbounds indices in the list. This project made use of generic datatypes allowing me to reuse this class for future projects in Python requiring a linked list. In this project, I also became acquainted with using unit-tests in Python to verify that certain methods function as intended.
Language: Python
This project explored visualizing and programming various sorting algorithms and then examining their time complexities. First, I wrote a visualizer that shows when sorted shows a spiral that shows the rainbow. Whenever a sorting algorithm is run, the program randomizes the locations of the wedges and then applies the selected sorting algorithm to their heights. With a proper delay, the sorting algorithms can be visualized for a wide range of N values. Then, I ran a variety of N values (ranging up through the hundreds of millions) through the programs to examine the time complexity of each sorting algorithm and graphed them with an appropriate fit to show their time complexity.
Image 1: Merge sort in action
Image 2: Selection sort in action
Language: Java
Server-Side Web Building (9th Grade)
This was my first project learning about HTML, linking web pages, embedding pictures and links, and using CSS to format it all. I made a website to display different topics I am interested in and provide more information on subsequent pages.
Language: HTML/CSS
This was my first project learning about HTML forms, using PHP and using them both together to create something new. This website would allow the user to submit a series of answers to blanks and then would turn them all into a Mad Lib that used their words to fill in the blanks in a story.
Language: HTML/CSS/PHP
This was my first project learning about manipulating databases using PHP. It took in an entry to the database that held mathematical sequences and series and would display the sequences and series in an HTML table in a way that could be sorted as well.
Language: HTML/CSS/PHP/MySQL