By the end of this module you should:
- understand how Dijkstra's shortest-paths algorithm works
- be able to analyze its complexity on dense and sparse graphs,
with a binary or Fibonacci heap
- understand why priority queues are relevant to graph algorithms