How to compute the (co)homology of a compact Riemann surface? The situation is the following. 
A finite-index subgroup $\Gamma$ of $SL_2(\mathbb Z)$ acts on the upper-half plane $\mathcal H$. It has a fundamental domain, obtained by a union of translates of the fundamental domain for $SL_2(\mathbb Z)$. The quotient $\mathcal H/\Gamma$ can be compactified by adding a finite number of cusps(I have checked that this can indeed be done, in some book). We call it $X$. 
Now I want to compute the de Rham cohomology or singular (co)homology of $X$. I am unable to do it in the general case. Any hints on how to proceed would be appreciated.
The difficulty I am facing is that I am given a group to work with, and the standard examples of computations are with simple spaces through Mayer-Vietories. I do not a priori have a nice Mayer-Vietories decomposition of the space. Or perhaps the best method is not through Mayer-Vietories? 
More generally, if $\Gamma$ is a discrete subgroup of $SL_2(\mathbb R)$, firstly, 1) How would one construct a fundamental domain? and, 2) How would one compute the homology?
Re to Sam Nead: I had only the computation of $H_1$ or $H^1$ in mind.
 A: It is hard to answer the question without actually knowing what the group is. Here are some remarks:


*

*For classical congruence subgroups of $PSL_2(\mathbf{Z})$ there is a formula for the number of cusps and the genus. It can be found in many books on modular forms and related things. If memory serves, it is given in Diamond-Shurman (and probably in Shimura's book too).

*For a general $\Gamma$ of finite index or not the quotient $H/\Gamma$ is homotopy equivalent to the graph $X_{comb}$ constructed as follows. Let $\Gamma\setminus PSL_2(\mathbf{Z})$ be the set of the right cosets; there is a natural right action of $PSL_2(\mathbf{Z})$ on it. The set of the vertices of $X_{comb}$ is the disjoint union of the sets of orbits of the standard elements of order 2 and 3 (tried to put the matrices here, but these won't show properly). Two vertices of $X_{comb}$ are joined with an edge iff  the corresponding orbits intersect (and there are as many edges joining the vertices as there are elements in the intersection). This gives the cohomology and more.
