Distributed computing has become one of the most important frameworks in dealing with large computation tasks. In this paper, we investigate a MapReduce like distributed computing system. Our main contribution is the characterization of the optimal tradeoff between storage space, computation load, and communication load. To this end, we derive an information-theoretical converse and show that time-and memory-sharing between the operating points achieved by the modified coded distributed computing (M-CDC) scheme proposed by Ezzeldin et al. attains all the points on this tradeoff. Our result thus extends the result by Li et al. on the optimum tradeoff between storage and communication to account also for the computation load. We further show how to obtain a distributed computing scheme from any placement delivery array (PDA) whose ordinary symbols occur at least twice. Previously proposed PDAs to solve the subpacketization problem in coded caching by Yan et al. and Shangguan et al. allow us then to derive optimal distributed computing schemes that require only a small number of files, and thus have reduced complexity.Recently, Li et al.[3] proposed a scheme, termed coded distributed computing (CDC), that in the map phase stores files multiple times across users so as to enable multicast opportunities for the shuffle phase. This approach can significantly reduce the communication load over traditional uncoded schemes as illustrated in Fig. 2, and was proved in [3] to have the smallest communication load among all the distributed computing schemes with same total storage requirements. It is worth mentioning that Li et al. in [3] used the term computation-communication tradeoff, because they assumed that each node calculates all the IVAs that can be obtained from the data stored at that node, irrespective of whether these IVAs are used in the sequel or not. In this sense, the total number of calculated IVAs is actually a measure of the total storage space consumed across the nodes. This is why we would rather refer to it as the storage-communication tradeoff. In this context, it is natural to investigate a more general framework, where each node is allowed to choose for each IVA that it can calculate from its locally stored data, whether or not to perform this calculation. The number of IVAs effectively calculated at all the nodes, normalized by the total number of IVAs, is then used to measure the real computation load. In this sense, we extend the storage-communication tradeoff in [3] to a storage-computation-communication tradeoff. That means, our goal is to identify all storage-computation-communication (SCC) triples, for which the task of computing the K output functions in (1) can be accomplished.August 28, 2018 DRAFT Fig. 2: Comparison of CDC scheme and uncoded scheme for a task of computing K = 10 output functions.In this work, we fully characterize all feasible SCC triples, and as a consequence, the pareto-optimal tradeoff surface. We show that any feasible triple on this optimal tradeoff surface can be attai...