A (v,k,t) {\em covering design}, or {\em covering}, is a family of
k-subsets, called blocks, chosen from a v-set, such that each t-subset is
contained in at least one of the blocks. The number of blocks is the covering's
{\em size}, and the minimum size of such a covering is denoted by C(v,k,t).
This paper gives three new methods for constructing good coverings: a greedy
algorithm similar to Conway and Sloane's algorithm for lexicographic
codes~\cite{lex}, and two methods that synthesize new coverings from
preexisting ones. Using these new methods, together with results in the
literature, we build tables of upper bounds on C(v,k,t) for vβ€32, kβ€16, and tβ€8.