Source: https://www.ecse.rpi.edu/courses/CStudio/MPS/Embedded_Cntl_mat/Lecture01.pdf