I. Introduction
Motivated by distributed machine learning, we consider matrix-matrix multiplication, which is the core computation of many common machine learning algorithms. Due to the tremendous amount of data being collected and processed, computing matrix multiplications locally is becoming a bottleneck. Distributed computing emerged as a solution to alleviate this computation bottleneck. A master node possessing the input matrices partitions them into smaller matrices and sends the partitions to worker nodes. The workers compute the smaller matrix multiplications in parallel and return the results to the master. The master aggregates the results received from the workers to obtain the desired matrix product. The main challenges of distributed computing, which we focus on, are: stragglers, privacy and security.