I am taking a course in Network Analysis at my university and I would like to do something related to category theory in my home project. To be more precise, I would like to take some amount of finite groups and construct a graph with edges connecting two groups if there is a homomorphism from one group to the other, with edge weight dependent on the kernel of the homomorphism. Who knows, maybe something interesting will surface. For instance, I wonder if clustering this graph would do something meaningful, i.e. separate the symmetric groups into one cluster.
Is there some software that can help me iterate over finite groups and construct all the homomorphisms between them? I have no idea how computationally difficult group-theoretic problems are.
GAP has a function
AllHomomorphismClassesthat determines homomorphisms between groups up to equality of kernels and conjugacy of images. From that it would be easy to build a function as you suggest. (There isn't anything magical behind that function, but it uses a fair amount of existing functionality so that it would not be feasible to try implementing it from scratchHowever, in general there will be many homomorphisms -- e.g. $S_4$ has 5 homomorphism to itself, and cyclic images just indicate prime divisors of the commutator factor group.
You might want to limit to cases of "small" (whatever that means) kernels, and might want impose further restrictions, e.g. symmetrize and check whether there are such homomorphisms in both directions.