Course Schedule — topological sort (Kahn's algorithm)
A course's in-degree counts its unmet prerequisites. Start with the courses that need none, take them, and each time a course's prerequisites all clear, it becomes takeable. If everything gets taken, there's no cycle.
Try:
courses (badge = unmet prerequisites)
queue (in-degree 0)