Theory and Practice of Parallel Computing with Julian Shun