This document provides a review of optimization algorithms that have been used to solve job shop scheduling problems (JSSP). It first discusses how JSSPs are NP-hard combinatorial optimization problems that are difficult to solve exactly. It then reviews both traditional and non-traditional algorithms that have been applied to JSSPs, including mathematical programming approaches, heuristic construction methods, evolutionary algorithms like genetic algorithms, and local search methods like simulated annealing and tabu search. The document also discusses metaheuristic algorithms and provides a classification of different metaheuristics. Overall, the document aims to assess the various techniques that have been used to approach solving JSSPs.