This document describes the Shortest Job First (SJF) CPU scheduling algorithm. SJF prioritizes processes in the ready queue based on the shortest estimated CPU burst time so that the process with the shortest burst time is selected first. SJF aims to minimize average waiting times and turnaround times. However, it requires accurate predictions of burst times and cannot always be implemented in practice due to lack of future knowledge.