This document discusses memory hard functions (mhfs) in cryptography, which require significant memory for evaluation and serve as proof-of-work. It contrasts mhfs with memory bound functions and explains their measurement through cumulative memory complexity, physical time integration, and memory bandwidth consumption. The document further categorizes mhfs into data-dependent and data-independent types, highlighting their applications in password hashing and potential vulnerabilities, especially in data-dependent functions.