Email from Noam Elkies: {{{ About your concluding parenthetical comment of page 16: the snarky reply would be "what part of lambda don't you understand?" :-) but seriously is there anything it might help for me to explain? The idea is: \lambda is a rational coordinate of X(2), which is a normal cover of X(1) with Galois group (P)SL_2(Z/2Z) =~= S_3. If E has good reduction outside a finite set S of primes of K, then the S_3 extension generated by \lambda generates an S_3 (or smaller) extension K'/K unramified outside 2S. Since S_3 is solvable, all such extensions can be listed effectively (and easily with existing tools, according to Cremona). Given K', let S' be the set of primes of K' above S. Since both \ lambda and \lambda-1 are modular units, it follows that both are 2S'-units of K'. Thus \lambda + (1-\lambda) = 1 is a solution of the 2S'-unit equation in K'. All such solutions can be obtained effectively (albeit not as easily as the previous step). It should help in practice that the Galois conjugates of \lambda are contained in its images 1-\lambda, 1/\lambda, etc. under Gal(X_2/X_1) =~= S_3. This is what's needed for a solution of the 2S'-unit equation in K' to give rise to a value of j in K. For each of the resulting values of j, it remains to find all twists (usually quadratic, but also quartic or sextic if j=1728 or j=0) that yield a curve with good reduction at S. This again is a finite and (again modulo existing number-field tools) easy computation. }}}