Source: https://www.sfu.ca/~mbahrami/ENSC 388/Notes/Intro and Basic Concepts.pdf