Graphs are topological objects called 1-dimensional CW complexes, and their fundamental groups are free groups. More generally, any group can be represented by a 2-dimensional CW complex, which is a graph with discs glued along the boundaries of closed paths corresponding to relations in the group. These objects can be studied from the topological viewpoint of covering space theory, introduced by John R. Stallings, which allows us to "visualize" groups and determine their subgroup structure. Alternatively, graphs can be studied from a combinatorial point of view, developed by Ilya Kapovich and Alexei Myasnikov, which provides simple algorithms that answer questions about free groups. We give an exposition of both approaches and demonstrate how they are used to answer questions about subgroups of free groups and free products.