Khovanov homology can be computed quite well, by Dror Bar-Natan's algorithm, as Ben says. It's nowhere near as good as algorithms for computing the Jones polynomial however.
The basic idea is that the speed of the computation depends largely on the "girth" of the link diagram. This is greatest number of intersections you see with a horizontal line. Within each girth, the algorithm applies to be a small degree polynomial in the number of crossings. However changing the girth dramatically affects the algorithm. Girth 14 is critical -- we can do up to about 80 crossings. See my paper with Freedman, Gompf and Walker on the smooth 4-d Poincare conjecture for details. Girth 12 and below is 'easy', and yes, 100 crossings is plausible, but more likely in weeks than seconds! Girth 16 and above seems to be out of range of current computers.
It's important to point out that memory constraints are the real issue for large Khovanov homology calculations. There's only a limited degree to which you can parallelize the computation, and so you end up wanting a single big computer with tonnes of RAM. The latest implementation of Dror's algorithm (my partial rewrite of Jeremy Green's program) tries to cache a lot of stuff of disk, but nevertheless we've done runs on 32gb machines and wished we had more memory!
As Ben says, Khovanov-Rozansky is much harder, and the purely combinatorial calculations you do for Khovanov homology get replaced by lots of commutative algebra. Ben at one point had a program that was doing this -- I'm not sure what the status of that is.
Knot Floer homology is a different matter. Even though there is now a nice 'cube of resolutions' picture for Knot Floer homology, it's only directly for knots, rather than tangles, so Dror's divide and conquer strategy doesn't apply. Dylan Thurston and others have a local description for tangles, but I don't know that anyone has tried implementing it. Computers aren't yet good at A_\infty
tensor products!
If anyone is ever interested in writing better programs for Khovanov homology (or indeed trying to generalize to cover some of the other cases), please contact me, as I have some ideas! I'm no longer interested in writing code myself, but I'm happy to talk about it and assist. Particularly next semester at MSRI, if anyone is interested in doing some link homology programming they should talk to me.
Autumn's answer captures the essence why there is a $\mathbb{Z}_2$ is in the first homology
of a closed nonorientable surface.
If you remove a disk from a closed surface, the resulting object has a $1$-dimensional $CW$-complex as a strong deformation retract, so that the homology of the resulting object
has no torsion.
A closed nonorientable surface is always the result of the connect sum of an orientable surface
with a projective plane or two projective planes. That is you are gluing one Moebius band, or two Moebius bands into the boundary of an orientable surface. The core or cores of the Moebius bands, oriented appropriately represent the generator of the $2$-torsion in the first homology of the surface.
Best Answer
If your homology theory is of the form $H_n(X) = H_n(S(X)) $ where $S$ is some functor from your original category to non-negative chain complexes, then the Dold-Kan correspondence gives you a corresponding simplicial abelian group $\Gamma(S(X)) $ and hence (by realization) a topological space in which you are "counting holes".