Introducing parallel programming across the undergraduate curriculum through an interdisciplinary course on computational modeling