Building Parallel Programs: SMPs, Clusters & Java (Advanced Topics)