Using flipped classroom and Jupiter Notebooks to teach undergraduates parallel programming