Background#
I am currently a second year Ph.D student at the University of Wisconsin, Madison studying computer science. I’m working on formal verification of software as part of the madPL group with my advisor Tej Chajed.
Before moving to Madison, I got my undergraduate degree in Computer Science at Michigan Technological University, graduating in December 2022. Previously, I was a head teaching assistant in CS 400, Programming III after being a standard teaching assistant my first semester in Wisconsin. While at Michigan Tech, I served as a Learning Center Coach for four semesters, Teaching Assistant for two semesters, and a Lab Instructor for one semester. During the summer of 2021, I participated in the Google Summer of Code by working with NetworkX on implementing an Asymmetric Traveling Salesperson Problem approximation algorithm. Blog posts from that project are available on the Scientific Python blog. The next summer, I was part of a Research Experiences for Undergraduates (REU) program funded through the National Science Foundation. Working with Dr. Satish Puri, I developed a multi-threaded C++ system for finding the approximate nearest neighbor for polygons. Last summer, I overhauled the graph visualization API in NetworkX, moving to an API design were all information is read off the graph directly.
For more information, please see my curriculum vitae.
Research Interests#
My research interests lay in program verification, roughly speaking how we can
formally prove that programs behave correctly under all circumstances. My
current project seeks to reason about software updates, ensuring that a new
version of the program can successfully interpret persistent state and handle
interactions with the environment in a compatible way with the old version of
the program. Before that I worked on
grackle
, a program which generated
validated or proof-instrumented data marshaling and unmarshaling go
code. Though this process, I’m been learning more about proof assistants,
specifically coq
(soon be to known as rocq
). My venture into the field of
programming languages has been extremely rewarding, blending all of the aspects
I love about theory with practical applications about how we can reason about
the behavior of programs.
Other Interests#
Computer science education is a secondary topic of interest for me. While working with students over the last 4 years, I’ve seen a lot of different methods to teach students computer science concepts and how they develop those concepts into programs. Often, too much emphasis is placed on the final result or program behavior, while ignoring the development progress itself.
Outside of my academia interests, I am passionate about open source software, which I believe is important for a private and secure digital experience. In my free time, I enjoy playing tabletop role-playing games such as Dungeons & Dragons or Stars Without Number, watching movies, exploring the outdoors and cooking. You can even find a collection of recipes on this website.
Timeline#
NetworkX - New Graph Visualization API
Jun 2024 - Aug 2024
Indpendent Contract
Rewrote the existing visualization API to be agnostic to the visualization tool (in this casematplotlib
), provide more flexibility and the potential for visualization dispatching in the future.Tutorial - Software Tools for Supporting Network Science
June 2024
International School and Conference on Network Science
I presented a tutorial titled Software Tools for Supporting Network Science along with Tamás Nepusz fromigraph
and Tiago Peixoto fromgraph-tool
at NetSci 2024 in Québec City.OPLSS@BU
June 2024
Attended the 2024 Oregon Programming Languages Summer School at Boston University. The topic of the conference is Types, Semantics and Applications.Began Graduate Studies
Sept 2023
University of Wisconsin, Madison
Pursuing a Ph.D. in Computer Science.Graduation
May 2023
Michigan Technological University
Graduated with a B.S. in computer science, minor in mathematical studies.Lab Instructor
Jan 2023 - May 2023
CS 1121 Introduction to Programming I
Worked with Sarah Larkin to teach CS 1121 Introduction to Programming I. This course is an introductory Java programming course covering objects, loops, methods, code design, documentation and debugging programs. My responsibilities included running a weekly lab assignment, grading, holding office hours and proctoring exams.Undergraduate TA
Aug 2022 - May 2023
CS 3411 Systems Programming
Worked with Dr. Soner Onder (Fall 2022) and Dr. Jean Mayo (Spring 2023) to teach CS 3411 Systems Programming. This course includes file I/O using system calls, process creation and management, linking and libraries, interprocess communication and socket programming. My responsibilities included grading, holding office hours, proctoring exams and developing automatic graders.Research Experience for Undergraduates
May 2022 - Aug 2022
Marquette University
Worked on finding the approximate nearest neighbors of polygons using locality sensitive hashing. The work resulted in a multi-threaded C++ system using the developed techniques.Google Summer of Code
May 2021 - Aug 2021
Worked with NetworkX implementing the Asadpour et al. algorithm to approximate the asymmetric traveling salesperson problem. For more information, seeLearning Center Coach
Jan 2021 - Dec 2023
College of Computing - Michigan Technological University
Help students completing assignments for beginning and intermediate classes at Michigan Technological University, on topics including- Data Structures
- MIPS and C programs
- Introductory Java programs
Michigan Technological University
Aug 2019
Began courses at Michigan Technological University pursuing a degree in computer science.