Underlying Principles Of Parallel And Distributed Computing