Adventures in STEM Education

Over my career I’ve taught a mixture of astronomy courses and computational science courses. In all of these courses I’ve worked to integrate research-based methods to maximize student learning gains and have worked to create equitable and inclusive classroom spaces.

Most recently, as a member of the CMSE faculty at Michigan State, my focus has been on the computational science side of things. For an overview of some of the courses I’ve taught in CMSE, read on!

CMSE 201 - Computational Modeling and Data Analysis I

The goal of this course is to take students who have never programmed and teach them to write and use Python code to build computational models and perform data analysis. In order to provide students with numerous opportunities to practice writing code, building models, and analyzing data with the support of an instructor, we take a flipped classroom approach in the this course. Students spend time before class doing readings, watching video lectures, and performing simple programming tasks so that they can come to class ready to work on a more sophisticated exercise with a group of peers. During class, groups of students work on guided assignments that involved a combination of provided code and prompts for writing code from scratch all in the pursuit of modeling a phenomenon or extracting meaning from data. Throughout these in-class assignments, the course instructor, a graduate teaching assistant, and one or more undergraduate learning assistants monitor student progress and facilitate their learning process. Topics in the course include, but are not limited to, solving systems of ordinary differential equations to model systems, building and using agent-based models, analyzing and visualizing datasets using Pandas and Matplotlib, looking for trends in and fitting models to data using NumPy and Scipy, and exploring Monte Carlo methods for solving problems. The content for the course is delivered as a series of Jupyter Notebooks, which allow for the seamless integration of narrative text and runnable code.

For a additional details on the pedagogical design of this course, the topics covered, and the assessments used to probe student understanding, see this article from the 2019 International Conference on Computational Science.

CMSE 202 - Computational Modeling and Data Analysis II

Building off of the Python skills developed in CMSE 201, the goal of this course is to learn additional modeling and data analysis techniques while also integrating software tools commonly used within the computational science community, e.g. version control and command-line interfaces. As with CMSE 201, this is a flipped classroom where pre-class assignments prepare students for in-class group work. Topics in the course include, but are not limited to, building models and running simulations using Python classes, extracting information from data using basic machine learning models, and exploring the numerical accuracy of computational solutions to mathematical problems.

CMSE 801 - Introduction to Computational Modeling

This is a graduate-level version of CMSE 201, where the content is covered at an accelerated pace and some topics from CMSE 202 are also covered. The motivation for this course is to provide graduate students the opportunity to build computational proficiencies that will aid in their graduate studies or research efforts, especially those students who did not have the opportunity to acquire meaningful computational experiences as undergraduates.

CMSE 402 - Data Visualization Principles and Techniques

Currently teaching this course during the Spring 2020 semester. Check back for more details – so far this course is a blast to teach!