Understanding Heaps and Priority Queues in Computer Science