Polynomial Factorization Over Finite Fields