K e l l y Z h o u

I'm an aspiring software engineer from NYC, currently pursuing a Bachelor's in computer science at the University of Michigan. Within tech, I'm interested in working on backend development and machine learning/ AI. Through numerous software engineering project experiences, I am actively cultivating and expanding my skillset to enhance my proficiency within these fields.
I have interned at various companies including Autodesk, Splunk, Riot Games, and PNC Financial Services. Additionally, I lead the CARLA Driving Simulator project team at the University of Michigan and I am a peer advisor under the Multidisciplinary Design Program. In the past year, I also developed an interest in attending hackathons; I love collaboration and the excitement of building a product from scratch and seeing ideas come to life!
When I'm not coding, you could find me dancing (check out my dance team, K-Motion), working out at the gym, or doing a variety of arts and crafts. I love painting and bullet journaling, and I recently started making polymer clay figurines.
Thanks for visiting ᵔ ᴗ ᵔ Feel free to check out my projects and contact me below if you'd like to chat!
May 2024 - Aug 2024 | Remote
Description: During my 12 week internship, I developed and deployed a centralized external authorization provider, streamlining user access management for services within Autodesk Construction Cloud (ACC). The authorization provider leverages the OAuth 2.0 framework and employs JWT validation for Bearer tokens, ensuring robust and secure access control. With this new authorization provider, developers of ACC services are able to seamlessly expose their APIs to all Autodesk users, significantly expanding the reach and user base of their services. Additionally, with all service requests routed through the authorization provider, performance is optimized through public key caching in order to reduce overhead from upstream requests.
Jan 2024 - Apr 2024 | Remote
Description: With thousands of tests run during the triaging period, analyzing individual failed tests becomes a time-consuming and resource intensive task. The reason for failure may be due to issues with the build and not with the test cases themselves, in which case, engineers would manually re-run the individual tests again to figure out the cause of failure. The automated retry mechanism reduces the manual efforts of engineers and accelerates the triaging process by automatically running a test again if it meets a particular threshold of errors and/or failures. Throughout my internship with Splunk, I implemented this automated retry mechanism as a script and integrated it with Splunk's internal testing pipelines.
Jan 2023 - Dec 2023 | Remote
Description: Partnering with Riot Games and the Multidisciplinary Design Program, I worked in a team alongside 6 other students to design and implement a full-stack security application that continuously monitors and flags any non-compliant (and potentially malicious) activity within the company's internal systems. The system is extensible, as security engineers are able to add more scripts to the system to check for new security policies. Additionally, the system is integrated with Slack so security engineers can be notified whenever a flag is raised. With this application, many manual workflows are reduced, allowing security engineers to focus on greater security priorities as the company continues to grow.
May 2023 - Aug 2023 | Pittsburgh, PA
Description: Over the course of 10 weeks, I worked on implementing a system that continuously monitors for functional metrics regarding PNC's transactional processing procedures. I orchestrated data pipelines to continuously persist metrics data from distributed data stores to a centralized database, based on queries submitted by a business analyst. By having the metrics persist to a centralized database, the data could then be consumed in a variety of ways, which include viewing the data from a user interface or other platforms like Tableau. Ultimately, analysts would be able to view metrics data in a more streamlined way, allowing them to discover insights more easily and effectively.
An AI-powered investment application that utilizes natural language processing and sentiment analysis of weekly financial news articles to make real-time stock market recommendations. ZenStock aims to help users navigate the complexities of the stock market and make more informed decisions based on current events.
A web application driven by AI that customizes summaries of ongoing clinical trial data based on a user's depth of medical expertise and purpose in seeking the information (e.g., to learn more about their diagnosis, for research purposes, etc.). This application was created to address the information asymmetry between patients and clinical trial data, and seeks to provide more understandable information to any user who wants to learn more about a medical condition.
As a member of the project team, I developed features to enhance the CARLA driving simulator for human factors research on driver workload, driver distraction, and driver interfaces for partially automated vehicles. For instance, I worked on doubling the efficiency of conducting experiments on the simulator by combining two different driving scenarios (intersection and freeway), which were originally developed on separate interfaces, into a single backend infrastructure. Additionally, I designed realistic virtual worlds to test different driving scenarios for the simulator, developing proficiency in computer aided design and various application software.
As a leader of the project team, I made sure that the team engaged in productive weekly meetings and that the team's progress aligned with our long-term project roadmap. With around 30 members in our team, I strived to create an inclusive and stress-free environment by encouraging open discussions and by hosting game nights to foster team bonding. Additionally, I created a project management spreadsheet to help our team keep track of their progress in order to meet key milestones and objectives. These initiatives helped to make our team meetings effective, allowing our team to make significant advancements to the driving simulator.
A social media platform similar to Instagram! With features such as an infinite scrolling feed, double tap likes, human readable timestamps, and client side rendering of like and comment updates. Through this project, I developed proficiency in many web development concepts/ practices, including authentication, sessions, the use of REST APIs, CRUD operations, HTTP requests, server side dynamic pages, and client side dynamic pages. Additionally, while working on this full-stack project, I practiced database management, frontend and backend development, as well as infrastructure deployment.
A scalable search engine like Google! While working on this application, I learned retrieval concepts such as text analysis (tf-idf) and link analysis (PageRank), and I practiced parallel data processing with MapReduce. Using Hadoop and a pipeline of MapReduce programs written in Python, I created a segmented inverted index of web pages. Additionally, I created index servers, which are REST APIs for each inverted index segment, integrating in PageRank scores to output a list of hits based on the user's queries. Finally, I developed an end-to-end application consisting of an interface for users to search, a server that makes REST API requests to each index server, and a database that stores information about the web pages. Combining all these parts, I developed a fully functional and scalable search engine application that allows users to find any web page on the internet.
In this project, I trained and fine-tuned a supervised learning model to identify the mood of an online forum based on sentiment analysis of the comments. I mastered proficiency in techniques such as the use of linear and quadratic kernal support vector machines, hyperparameter selection using k-fold cross validation, as well as performance evaluation using train-test splitting.
Using deep learning techniques, I created a dog breed classifier! I trained a convolutional neural network to classify between two different breeds- collies and golden retrievers- and applied transfer learning to accomplish the target task which is to distinguish all breeds. Additionally, I performed data augmentation by including grayscale and rotated images in the training set. This model was able to classify over 12,000 images of dogs with over 75% accuracy!
I implemented my very own thread library! This library provides a robust framework for thread creation and management, including scheduling, context switching, and termination, as well as synchronization mechanisms, including mutexes and condition variables. In addition, this thread library supports multi-processor systems to leverage parallelism and increased performance. Some of the challenges that occurred while working on this project were balancing performance and fairness in thread scheduling, managing resources with thread control blocks during context switches, avoiding deadlock situations, and handling external thread control events such as interrupts. Through this project, I was able to consider many different design decisions and ultimately build a safe, reliable, and efficient thread library.
A multithreaded, secure network file system! Clients send network messages to the file server, which consist of file system operations like create, delete, read, and write. The file server provides a hierarchical system of files and directories, which are described by inodes and stored on disk blocks. In order to implement a robust file system, I ensured crash consistency by atomically updating the file system and maintaining a certain order of disk writes. In addition, I utilized hand-over-hand locking when traversing through file system objects in order to effectively control access to shared resources across multiple threads. Throughout this project, I was not only able to examine many file system concepts, but also practice using TCP sockets and secure multithreaded programming.
In this project, I designed and implemented a pager (the memory management part of the operating system kernel) that manages application processes' virtual address spaces. Application processes communicate with the kernel via system calls and page faults to manipulate its address space. The kernel then provides address space abstraction to application processes by reading and writing physical memory, page tables, swap space, and files. In order to optimize performance and minimize thrashing, I employed techniques such as write-back caching, the clock algorithm (an approximation of LRU) for page eviction, and eager swap reservation. Through this project, I learned how to plan out effective data structures to store relevant information about each page (dirty page, resident page, etc.), as well as how to manipulate protection bits of page table entries to reflect the different states a page can be in.