I will give an elementary introduction to congruence subgroups and their action on the upper half complex plane, using a java program to illustrate some of the ideas. I will briefly discuss some background and motivation. Then I will talk about the methods used for computing fundamental domains for this action, in particular the method of Kulkarni. I will give a demonstration and illustration of this method as implemented in magma, and I will discuss problems for further work and computation.