Constructing groups with a given subgroup I have a finite group $H$ and a number $n$ and would like to construct all groups $G$ of order $n$ such that $H$ is a subgroup of $G$. (In fact, I would prefer to construct only those which have $H\mathrel{\unlhd}G$ if this is possible—otherwise I'll just filter out the ones that aren't normal subgroups.)
I don't know if this is simple enough to do by hand but if not I have GAP. My motivation is that I'm looking for groups with a particular property but there are too many groups of order $2^k$ to reasonably search through them all.
Edit: I was asked to give an example. I have several groups $H$ of interest; here is $H_1$ in the format generated by GAP's GapInputPcGroup:
H:=function()
    local g1,g2,g3,g4,g5,g6,g7,g8,r,f,g,rws,x;
    f:=FreeGroup(IsSyllableWordsFamily,8);
    g:=GeneratorsOfGroup(f);
    g1:=g[1];
    g2:=g[2];
    g3:=g[3];
    g4:=g[4];
    g5:=g[5];
    g6:=g[6];
    g7:=g[7];
    g8:=g[8];
    rws:=SingleCollector(f,[ 2, 3, 2, 2, 2, 3, 3, 3 ]);
    r:=[
        [2,g8^2],
        [3,g5],
        [4,g5],
    ];
    for x in r do SetPower(rws,x[1],x[2]);od;
    r:=[
        [2,1,g2*g8],
        [3,1,g4],
        [4,1,g5],
        [6,1,g6*g7*g8],
        [7,1,g8],
        [8,1,g8],
        [3,2,g3*g4*g5],
        [4,2,g3],
        [6,2,g7],
        [4,3,g5],
        [6,3,g6^2*g7^2],
        [7,3,g6*g7^2],
        [6,4,g6*g7*g8^2],
        [7,4,g6],
        [6,5,g6*g8],
        [7,5,g7*g8^2],
        [7,6,g8^2],
    ];
    for x in r do SetCommutator(rws,x[1],x[2],x[3]);od;
    return GroupByRwsNC(rws);
end;
H1:=H();

$H_1$ (like $H_2$ and $H_3$) has order 1296 and I am interested in $n$ which are small multiples of this order. Its StructureDescription is $((((C_3\times C_3) : C_3) : Q_8) : C_3) : C_2$ but this does not uniquely define it—in fact $H_3$ has the same StructureDescription.
 A: Your specific $H_1$ has enough structure that the extensions of $H_1$ by small groups are fairly controlled. Unfortunately moving up from $H$ to $G$ is less well supported than moving from $G/H$ to $H$, but with $H$ so large compared to $G/H$, it makes more sense to start with $H$.
Suppose you wanted $G/H_1$ to be the dihedral group of order 10. The following GAP code does this by realizing that the dihedral group of order 10 has a minimal subnormal subgroup of order 5, and above that a composition factor of order 2.
# Get access to "CyclicExtensions"
gap> LoadPackage("GrpConst");;

# convert input to a form CyclicExtensions likes
gap> h := Image( IsomorphismPermGroup( H1 ) );;

# make larger groups K with [K:h] = 5
gap> h5s := CyclicExtensions( h, 5 );;

# make even larger groups G with [G:K]=2, so [G:h] = 10
gap> h52s := Concatenation( List( h5s, x -> CyclicExtensions( x, 2 ) ) );;

# make even larger groups? choose another prime
# gap> h522s := Concatenation( List( h52s, x -> CyclicExtensions( x, 2 ) ) );;

# Fancy code for solvable groups -- removes duplicates
gap> nodupes := List( RandomIsomorphismTest(
> List( h52s, g -> rec(code:=CodePcGroup(g), order:=Order(g) ) ), 7),
> r -> PcGroupCode(r.code, r.order) );;

Now we have a list of possible G. We can choose the ones we like however we like, but for instance if we wanted $G/H$ to be dihedral, we might proceed like this:
gap> AbelianInvariants( h );
[ 2 ]
gap> List( nodupes, AbelianInvariants );
[ [ 2, 2, 5 ], [ 2, 2 ] ]
gap> hd10 := nodupes[2];; # Where did the 5 come from? Ah, G/H was cyclic not dihedral
# Now find the copy of h in there, notice the weird order
# Also, we only find one injection, but there are two distinct injections
gap> inj:=IsomorphicSubgroups( hd10, h :findall:=false)[1];;
gap> g := hd10;; h := Image(inj,h);; StructureDescription(g/h);
"D10"

If you didn't mind $G/H$ being cyclic, then you could do the same idea:
gap> hc10 := nodupes[1];;
gap> inj:=IsomorphicSubgroups( hc10, h :findall:=false)[1];;
gap> g := hc10;; h := Image(inj,h);; StructureDescription(g/h);
"C10"

As $[G:H]$ gets larger (especially if it has lots of factors), the story of where $G/H$ came from becomes more complicated. Once $[G:H]$ is divisible by 60, you run into other serious problems: $G/H$ may no longer have a composition series with cyclic factors. You are then stuck with the methods that start with $G/H$ and go “down” to $G$ by constructing $H$'s chief series.
