Leveraging coding techniques and redundancy for speeding up distributed computing and robustifying distributed learning