Algorithms are essential building blocks of computer applications. However, advancements in computer hardware, which render traditional computer models more and more unrealistic, and an ever increasing demand for efficient solution to actual real world problems have led to a rising gap between class[...]