Techniques for computing cup products in singular cohomology Suppose that we are given a CW complex X in terms of the cells and the gluing maps. My understanding is that computing the cup product of the singular cohomology ring from this information is a non-trivial task. I know of two basic strategies that one might take:
1) If the X is homotopy equivalent to a closed oriented manifold, then we can translate from cup product into intersection product and the problem becomes easier to visualize.
2) If X is not too complicated, then we can try to find a simple presentation of X as a finite simplicial complex and compute the cup product explicitly for all the cochains.
My question is: what are other techniques/tricks that can be used to find the cup product?
Surely there must be some general approaches beyond the naive ones I mentioned. Feel free to strengthen the hypotheses or consider specific situations, as I don't expect there to be one trick which works for everything.
 A: You can find maps $X\rightarrow Y$ or $Y\rightarrow X$ for some space $Y$ where the cup product is already known, and use the fact that cohomology induces a map of rings.
A: The cup product is ultimately the map induced by the diagonal $\Delta: X\to X\times X$.  You can get lots of information by studying the actual map.  
A: This is going to be a perhaps tendentious diatribe.  But it is what is.
Naturality, dimensional arguments, and Poincare duality give a 
reservoir of elementary examples such as spheres and projective spaces. 
In practice, to go from there to more serious examples, one uses spectral
sequences to bootstrap up, and then one uses still more spectral sequences to
bootstrap up to still more serious examples. The dirty secret is that modern 
algebraic topologists rarely if ever try to compute cup products by use of 
cochains, which means that they rarely if ever use cochains for serious 
calculations. The huge range of known calculations show how well this works.
The actual diagonal map $X\longrightarrow X\times X$ can only be helpful 
in the very simplest examples, for the obvious reason that explicit 
calculations must use cellular cochains (not singular, which are far too 
large for explicit computation), and the diagonal map is never cellular: 
it takes the n-skeleton to the 2n-skeleton. To compute cup products with
cellular cochains, one must find a cellular map homotopic to the diagonal
map.  While such a cellular approximation always exists, it is rarely an
easy task to write one down explicitly.   
Peter May
A: One of the most useful tools is the Gysin sequence: if $f:E \to B$ is an oriented $S^{n-1}$-bundle, there is a long exact sequence $H^{\ast} (B) \stackrel{f^{\ast}}{\to} H^{\ast} (E) \stackrel{f_{!}}{\to} H^{\ast-n+1}(B) \stackrel{\chi}{\to} H^{\ast+1} \ldots $, where the last map is multiplication by the Euler class. This is derived from the Thom isomorphism, and the main ingredient for the proof is the Kuenneth theorem, but no nontrivial cup structure is needed. The Gysin sequence is strong enough to compute the cohomology rings of $CP^n$, $CP^{\infty}$, $BU(n)$, $U(n)$, $BZ/n$ and some other spaces.
