Dijkstra’s algorithm is a well known algorithm to solve the single-source shortest paths problem. This paper explains the algorithm by focusing on the algorithm design technique used, which is the Greedy Technique. This technique works well to the problem because the problem has the Optimal Substructure property. To show the formal proof of correctness of this algorithm, the Loop Invariant technique is used. Finally, the paper shows that Dijkstra’s algorithm complexity is determined by the implementation of the data structure used in the algorithm. The goal of this paper is to emphasize that in explaining an algorithm, one must show the design technique used, its formal proof of correctness and its complexity analysis. All these three must present, otherwise the algorithm is considered incomplete.