Satvik Mudgal

Research Intern • Computer Science Student • Portland State University

About Me

Satvik Mudgal

Hey! I'm Satvik, a technology enthusiast and a Computer Science Student at Portland State University. My journey in Computer Science has taken me through some incredibly exciting areas, from diving deep into Web Development, to understanding how computers truly work in Operating Systems. I've also spent time building an Android App, a Python interpreter, explored the world of Data Clustering, and much more. Beyond coursework, I've had some hands-on research experience where I got to apply theoretical knowledge to real-world problems. I love the challenge of solving complex issues and am always eager to learn more. When I'm not coding, you can find me rowing a boat on the river, playing badminton, or in the woods hiking.

Previous Work

Database and Internet Privacy Lab at PSU

My research focused on Fine-Grained Access Control in dynamic IoT environments. Access Control for databases is a crucial aspect of security, and improving the efficiency of access control policies is essential for maintaining the integrity and confidentiality of data. I worked on developing a system that generates workloads for an algorithm known as Sieve. The results gave us a solid insight into the performance of the algorithm, and the parameters that increase the enforcement cost of the algorithm.

Learn More about Sieve:

New Student Welcome Showcase Photo

STEM Research Showcase Poster Competition - 3rd Place

Presented my findings on Scalable Access Control for dynamic IoT environments in a Research Poster Competition at the STEM Research Showcase 2025 at Portland State University. It was an honor to show the Dean, the Department Chair, faculty members, and all participants the work I had done in the past year.

STEM Showcase Photo

Presentation at The New Student Orientation - 2024

I had the opportunity to present my research on Fine-Grained Access Control in dynamic IoT environments at the New Student Orientation. Many of the participants were new students, and it was a great experience to be able to inspire them to join our work in the lab. I also got to learn about various other research projects and opportunities available in the University through faculty members who I presented my research to at the event.

Notable Projects

Built a recursive-descent parser and interpreter for a custom language supporting arithmetic operators, variable scoping, string operations, boolean and comparison operators. As part of the Principles of Programming Languages Course, I got to learn a lot about how languages are built and what the fundamental logic behind most programming languages are. It also gave me an intuitive idea about how compilers and interpreters are built using other compilers and pre-built functionalities.

The program relies on Context-Free Grammar (CFGs) provided by lark expressions to convert standard language expressions into raw abstract syntax trees and also produces a pretty printed output of the expression showing how precedence operators work with the custom language. It can also be extended to support many other operators and domain specific languages. The domain I chose for the project was String operations.

Below is an Abstract Syntax Tree for adding/subtracting two numbers in a custom language

Interpreter Screenshot

Developed an Android application maintained in Java. Used extensive Java APIs to leverage Android file system, and Android Studio's constraints and layouts. This was an incremental build that supported various stages of a software development lifecycle. Thus, the android application can be operated through the web using HTTP requests and responses, and can also launch a command-line application equipped with a pretty printer that can create an Airline, add flights, and ensure schedules match.

The skills I obtained in Object-Oriented Programming as a result of this project have been immense. Inheritance, heirarchies, and data sharing among objects, was extremely crucial for the correct implementation of this project. As a result, it taught me how to design accessible, easy to use apps for mobile, while teaching me what the Android back-end consists of. This was also a solid foundation for learning about emulators and tools such as Android Studio.

Repository: Private - available upon request

Linux's archiving functionality (ar command) is a great tool for sending files, storing backups, and managing project directories. In my Operating Systems course, I implemented this functionality using archiving tools from linux and using file functionalities like stat, lseek, and open/close to allow binary files to be read and written. This reimplementation extended the functionality to process the archiving in a deterministic or non-deterministic mode, with selective verbosity.

This was one of the projects that taught me the most about memory management, linux utilities, the importance of file information, file metadata, and most importantly how different filetypes can be condensed into a simple representation. I also used a Makefile to ease the processing required. This reimplementation is interoperable with the Linux 'ar' utility.

Repository: Private - available upon request

Contact

Preferred Pronouns