Skip to main content

About Me

Matt Schwennesen
Author
Matt Schwennesen
Ph.D. Student and Tabletop Gaming Enthusiast
Table of Contents

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
#

  1. 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 case matplotlib), provide more flexibility and the potential for visualization dispatching in the future.
  2. 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 from igraph and Tiago Peixoto from graph-tool at NetSci 2024 in Québec City.
  3. 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.
  4. Began Graduate Studies

    Sept 2023

    University of Wisconsin, Madison

    Pursuing a Ph.D. in Computer Science.
  5. Graduation

    May 2023

    Michigan Technological University

    Graduated with a B.S. in computer science, minor in mathematical studies.
  6. 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.
  7. 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.
  8. 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.
  9. 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, see
  10. Learning 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
  11. Michigan Technological University

    Aug 2019

    Began courses at Michigan Technological University pursuing a degree in computer science.