Basically, a depth-first search of the graph (more on this later).
Also related to a post-order traversal of the appropriately defined depth-first tree.
Can also define the topological sort in terms of a breadth-first traversal. This is actually nicer if you want to output all possible topological sorts.