  Undergraduate programs in science and engineering include at least one course
in basic programming, but seldom presented in a contextualized format, where
computing is a tool for thinking and learning in the discipline. We have
created a series of learning modules to embed computing in engineering
education, and share this content under permissive public licenses. The modules
are created as a set of lessons using Jupyter notebooks, and complemented by
online courses in the Open edX platform, using new integrations we developed.
Learning sequences in the online course pull content dynamically from public
Jupyter notebooks and assessments are auto-graded on-the-fly, using our Jupyter
Viewer and Jupyter Grader third-party extensions for Open edX (XBlocks). The
learning content is modularized and designed for reuse in various formats. In
one of these formats---short but intense workshops---our university library is
leveraging the curriculum to offer extra-curricular training for all, at high
demands.
