  A celebrated theorem of Spencer states that for every set system $S_1,\dots,
S_m \subseteq [n]$, there is a coloring of the ground set with $\{\pm 1\}$ with
discrepancy $O(\sqrt{n\log(m/n+2)})$. We provide an algorithm to find such a
coloring in near input-sparsity time $\tilde{O}(n+\sum_{i=1}^{m}|S_i|)$. A key
ingredient in our work, which may be of independent interest, is a novel width
reduction technique for solving linear programs, not of covering/packing type,
in near input-sparsity time using the multiplicative weights update method.
