Post 0
2/3/2026
Over the past two weeks, I have worked towards formalizing my project goals. The idea I had initially for my project fell through when the data was not easily accessible. With the help of Dr. Dunbar and BMVP, I was able to pivot to another topic. In addition to formalizing a project, I have spent time learning about recombination Markov chains. I have also been working on this website. I did not know any HTML coming into this, so I have learned a lot about this too!
Post 1
2/8/2026
The first step in my project was to gather data on Wisconsin Wards, which will be needed to create adjacency graphs to build maps. I have also been looking at the Wisconsin Elections Commission site to see what voter data is available at the ward level. This will shape how a user may eventually interact with the results. I have also been considering how I might store my data to best suit the end product.
Post 2
2/13/2026
This week has been a bit slow for me, but I did begin working on understanding the algorithms on smaller examples. Using square grids, the adjacency lists are much easier to create, so I have been working on looking at graph decomposition for those examples. Dr. Dunbar has created a few more examples, split into color districts, for me to begin working on creating random walks for. These will also help me work on the map visualization.
Post 3
2/18/2026
I have a graph! This week felt like the first time the mathematics of my project really became tangible. Up to this point, I had been reading about recombination Markov chains and working through small graph examples somewhat abstractly. Now, I am actually implementing the algorithm step by step: merging adjacent districts, constructing a spanning tree of the combined region, and cutting random edges to create new connected districts. Watching this process unfold on a 5x5 and 50x50 grid has made the theory feel much more concrete. From a mathematical standpoint, the spanning tree construction has been especially interesting to me. Enforcing contiguity in a redistricting algorithm is powerful. When randomly cutting one edge of the tree, the structure immediately decomposes into connected components. On a more personal level, this week involved a lot of debugging and restructuring. I had to carefully think about how adjacency lists, district labels, and JSON files interact. Getting the algorithm to update district assignments correctly and then render them visually forced me to be precise about how data flows through my program. Once this works consistently on grid examples, I will feel much more confident scaling the algorithm to Wisconsin ward data.