introduction to programming for computational sciences