Given a bilinear map, how do I produce a cross-product on cohomology? If $M$, $N$, and $P$ are $R$-modules, and there exists a bilinear map between $M\times N$ and $P$, how do I construct a cross product $$\times: H^p(X;M)\times H^q(Y;N)\to H^{p+q}(X\times Y;P)?$$
I say let $S^*(X;M)$ be the singular cochain complex of $X$ with coefficients in the $R$-module $M$, $S^*(Y;N)$ be the singular cochain complex of $Y$ with coefficients in the $R$-module $N$, and $S^*(X\times Y;P)$ be the singular cochain complex of $X\times Y$ with coefficients in the $R$-module $P$. I thought about defining a map $\times:S^p(X;M)\times S^q(Y;N)\to S^{p+q}(X\times Y;P)$  that commutes with the differential maps but I cannot think of how it should be defined?
 A: It is useful to think of the "topological" cross product as the combination of the "algebraic" cross product + some formalities (such as Eilenberg-Zilber when working with singular complexes, or some straightforward manipulation when dealing with cellular complexes).
Note that you have an algebraic cross product $S^p(X;M) \times S^q(Y;N)$ to the cochain complex tensor product $S^{p+q}(S^p(X) \otimes S^q(Y), M \otimes_R N)$ (for lack of better notation) given by $\alpha \otimes \beta \mapsto \alpha \times \beta$ where $(\alpha \times \beta) (z,w) = \alpha (z) \otimes \beta (w)$. Since you have a bilinear map $M \times N \to P$, this is the same as a homomorphism $M \otimes_R N \to P$ and so you can change coefficients. This is the step that most concerns your problem.
After this, you need to use the fact that $H^\ast(S^*(X) \otimes S^*(Y)) \cong H^\ast(S^*(X \times Y))$ and naturally so. Essentially the tensor product chain complex and the chain complex associated to product of topological spaces are chain homotopic. For cellular cochains, this isn't too hard to show directly. For singular (and therefore simplicial) cochains, you might have to resort to Eilenberg-Zilber.
