Principles of parallel and multiprocessing