A bilinear map is a function b : U x V to W, where U,V and W are k-vector spaces, that is k-linear in each domain component. Such maps, and their associated algebraic structures, arise naturally when studying p-groups and their automorphism groups, and also when considering intersections of classical subgroups of GL(V). In this talk I will introduce a linear invariant of a bilinear map, called its algebra of adjoints, and present effective algorithms both to construct it, and to determine its structure. I will also demonstrate that this algebra is an extremely useful tool with which to investigate various group theoretic problems. This is a report on recent and ongoing joint work with James Wilson.