I've finally understood priority queues or how to learn better

A year ago I took a Coursera specialization about data structures and algorithms. In the very beginning when topics were easy to comprehend or already known it was pretty easy to keep up a good pace but eventually I realized that some of the topics are pretty hard for me, especially those which I am not using on daily basis. Eventually, I finished the course but my pace was uneven and I decided to stop right after 2 courses (out of 6).

One of the data structure which I "learned" was a Priority queue.

The Priority queue is an abstract data type which most common implementation is a heap. I remember that this topic was covered in the course but it I struck me that I simply can not explain what it's about.

Then I started again but chose a different approach this time. I chose 3 different videos about the same concept:

CS 61B Lecture 24: Priority Queues : Free Download, Borrow, and Streaming : Internet Archive
CS 61B: Data Structures - Fall 2006 Instructor Jonathan Shewchuk Fundamental dynamic data structures, including linear lists, queues, trees, and other linked...

This time it was an absolutely different experience.

All 3 video lectures are using different vocabulary but this doesn't make any difference as soon as you've understood the core concepts. I realized that when you are looking at the same problem from the different angles you start seeing the core concept.

Probably for most of you, it makes sense but for me, it was an enlightenment.

To summarize:

  1. Not getting something, especially hard concept, is OK
  2. Try to look at the problem from different angles and using different courses.
  3. Try to practically apply this knowledge. It could be dummy example or production code, it doesn't matter.