Polynomial factorization over finite fields