Engineering students level-up with new computational programming modules

The Computational Methods modules (Sakai site shown here) help students get up to speed on programming skills needed for their engineering coursework.

This is a guest blog post by Jonathan Holt, a PhD student in Civil and Environmental Engineering.

As a Bass Digital Education Fellow, I helped design and implement Computational Methods, a series of Sakai-based modules designed to enhance Duke undergraduate learning across STEM fields. Increasingly, undergraduates majoring in technical fields are expected to be proficient in one or more programming languages, like Python or Java. However, in many departments there is not a standardized framework for Duke undergrads to obtain core computational programming skills. For instance, the Pratt School of Engineering has various pathways for students to learn computational programming, with multiple languages being used. Pratt Professor Michael (“Gus”) Gustafson elaborates:

The Pratt School of Engineering opened up more pathways to satisfy a requirement that students take a course in Computational Methods. As it stands, some students will now take a Python class; some will take a Python class and then a Java class; some will use AP credit in Java. We need to be able to shore up the experiences and skills for each of these paths relative to the other.

Due to multiple pathways for students to learn the same core set of computational skills, professors find themselves teaching students whose skill level varies widely. In these cases, the onus is on the professor to introduce computational programming methods, which often takes the form of a “crash-course” during the first few weeks of the semester. This approach has several shortcomings, including (1) students who do have the skills become bored or disengaged; (2) the scope of content is typically “just enough” to get by, rather than a comprehensive review; (3) valuable class time is spent getting students up to speed rather than teaching core content.  

To solve this problem, I collaborated with Professor Gustafson from the Pratt School of Engineering and Heather Hans from Duke Learning Innovation to develop a series of online, self-paced modules that serve as an essential resource for computational skills. Topics include (but are not limited to) writing algorithms, writing conditional statements in Python, and visualizing data using Python libraries. 

A composite image that starts with a course banner with the words "Computational Methods" and the logos for the Pratt School of Engineering and the Innovation Co-lab, then an image with Python code. Then, photos of Heather Hans, Michael Gustafson, and Jonathan Holt.
From left to right: Heather Hans (Learning Innovation), Michael Gustafson (Pratt Faculty), and Jonathan Holt (Bass Digital Fellow).

Modular mini-courses such as these are often referred to as “level-up” experiences because they allow students to gain valuable skills independently. Any Duke student can enroll themselves in the Sakai-based modules once they have a link to the site, and instructors can be added to the course to monitor students’ progress. By assigning follow-up activities or assignments, instructors can use parts of the modules as credit towards their own main course. This partnership between Pratt and Learning innovation helped ensure that learning outcomes were aligned with Duke undergraduate coursework, and modules were pedagogically sound and consistent with contemporary digital learning design. 

The computational methods modules have three main components:

  1. Video instruction: Using a combination of in-house videos and lessons borrowed from Python for Everybody, we curated a series of instructional videos that introduce core concepts. Most videos are 5-7 minutes in length and are embedded into the Sakai site from YouTube. 
  2. Syntax examples: We used Jupyter Notebooks to produce Python coding examples interspersed with lecture notes and commentary. Jupyter Notebooks offer a clean-looking display where text, code, and plots are all organized in an attractive format. These notebooks themselves are hosted on Github, and embedded in the Sakai site using HTML.  
  3. Coding exercises: The modules include embedded coding exercises so that students can practice techniques without needing to navigate to external browsers or windows. Some coding examples were taken from Python for Everybody, while others were created using trinket, a popular code-sharing app.
A screenshot of a coding exercise in the Trinket app.
Students practice writing programs with interactive coding exercises that are embedded in the Sakai site.

For the many students who need computational programming in order to be successful in their engineering, math, or other STEM-related coursework, Computational Methods provides a flexible, self-paced framework for students to learn or brush up on key skills outside of the classroom.

During the pilot phase of the modules, we administered a Qualtrics survey to a small group of engineering majors in order to gauge the efficacy of the modules. Since the survey was administered towards the end of the spring semester, the respondents were inherently more experienced than the typical target audience of the modules. Nevertheless, the survey results suggest that the modules were effective in achieving the stated learning outcomes. 

An image with student survey results where students rated how confident they felt about doing three of the module's learning outcomes before and after completing the modules. Students agreed more strongly with the statements "I can edit, save, and run programs in an integrated design environment," "I can construct if-elif-else statements," and "I can write a function with parameters" after completing the modules.
Preliminary results suggest that student comprehension of the learning outcomes increased from before (“pre”) to after (“post”) completing the modules.

The modular nature of Computational Methods renders it easy to modify and expand. We have already identified several key areas for improvement based on student feedback. For example, undergraduates at Pratt suggested that we incorporate more coding exercises into the modules. We will also continue to expand the modules by adding more topics, such as a lesson on programming in MATLAB. Furthermore, we hope to incorporate skills that apply to a wider audience, such as the Computational Media, Arts & Cultures department, whose students employ computational methods to study digital media. Even as the modules undergo improvements, they are still accessible to all members of the Duke community via Sakai

At a time when coding knowledge is invaluable, Computational Methods provides a flexible, self-paced level-up course that gets students up to speed while saving precious class time. Gustafson notes, 

As Duke and other universities rethink how to effectively provide a liberal arts education to students, modules such as this may be an important part of filling in the gaps between in-person learning and online learning.