United States Representatives and state legislators are elected into office by voting districts within their state. Redistricting is the process of creating a new district boundaries within the state. This process is perceived to be done within the best interests of political parties trying to optimize the number of elected politicians that are a part of their party. The process of redistricting for this gain is known as gerrymandering. Legislators typically hire advisory commissions to make recommendations for the redistricting. The house will vote on the new districts and the governor then has the ability to veto the new boundaries.

No matter how it is done, there is always a political party that loses elected officials because of the redistricting. There have been many attempts to come up with a “fair” way to do it. Our goal was to develop a way to determine district boundaries in a fair and logical way. In this project, we used Python to algorithmically create 8 new districts in Maryland using census data from 2010. We created districts that were contiguous and of equal population. We also created districts that preserved “communities of interest” to protect the interests of the voters. Finally, we investigated the “fairness” of these districts and assessed how our algorithm could be improved.