Taking the example of $X=S^1\vee S^1$ , to find the covering space $X$ what was done in Munkres is that we had the idea of how the real line wraps around the circle. Using this we attached circles tangentially to the integer points of the real line. Similarly we construct the covering space for the other circle. So the space we end up having is just the $x-y$ plane with circles been attached to all the integer points on both the $x$ and the $y$ axis.
Since I am new to algebraic topology all the spaces whose covering spaces I have seen invoke the same idea. We consider chunks of the actual space and see how a covering space might satisfy that chunk and then try expanding the covering space for the whole space. But this idea seems very informal as I was told this idea will not work for a surface of genus $g$.
Question: So as the title says what are the algorithms for finding covering spaces of a space $X$. I was told that there are algorithms hence this question.