Algorithm for finding the discriminant of algebraic number fields

I am reading J.S. Milne's Algebraic Number Theory notes, http://jmilne.org/math/CourseNotes/ANT.pdf. I am quite confused with the section "Algorithm for finding the ring of integers".

There is an efficient way to find the discriminant of polynomials, and there is also an algorithm to find the ring of integers. Is there an efficient algorithm for finding the discriminant of algebraic number fields, i.e. disc($\mathcal{O}_K/Z)$?

Of course, once we find out the ring of integers, it is not hard to find the discriminant of the algebraic number fields. But is there a more direct way?

Besides, generally speaking, given $\alpha$ a root of an irreducible polynomial $f$, if we have got disc$(f)$, how could we find disc($\mathcal{O}_{\mathbb{Z}[\alpha]}/\mathbb{Z}$)? If disc$(f)$ is square-free, then it is automatically the discriminant of the algebraic number field. But what if it is not square free?

I am a beginner in algebraic number theory, these questions might be silly, and I am even not quite sure whether the terms I use are accurate. So I would appreciate it if you could help me to edit the questions. Thank you.

-