This project is a collection of learning modules in engineering computations for undergraduate students. The project lead is Prof. Lorena A. Barba at the George Washington University, Mechanical and Aerospace Engineering department. In Fall 2017, Prof. Barba worked with doctoral student Natalia C. Clementi to produce the first three modules of the series. With student Tingyu Wang, we wrote the fourth module in 2019. We began writing Module 5 in 2020 and Module 6 in 2021. These are work-in-progress
Eeach learning modules is made up of several lessons, written as a Jupyter notebook, and addressing an area of application or skills in computing. We use Python as the programming language.
- Barba, L.A., 2020. Engineers Code: reusable open learning modules for engineering computations. Computing in Science & Engineering, 22(4), pp.26-35. doi:10.1109/MCSE.2020.2976002 Preprint on arXiv::2001.00228
This repository uses git submodules to include contents from individual repositories for each course module. To clone the complete collection, use the command:
git clone --recursive https://github.com/engineersCode/EngComp.git
We take inspiration in the ideas of Seymour Papert about computational thinking. In particular, we want to design learning modules that adhere to Papert's Power Principle:
What comes first, "using" or "understanding"? The natural mode of learning is to first use, leading slowly to understanding. New ideas are a source of power to do something.
Module 1: Get data off the ground — Learn to interact with Python and handle data with Python.
- Interacting with Python
- Play with data in Jupyter
- Strings and lists in action (a full example)
- Play with NumPy arrays
- Linear regression with real data
- Get a PDF version to print: Engineering Computations Module 1: Get data off the ground. figshare. https://doi.org/10.6084/m9.figshare.5673454.v1
Module 2: Take off with stats — Hands-on data analysis using a computational approach and real-life applications.
- Cheers! Stats with beers
- Seeing stats in a new light
- Lead in lipstick (a full example)
- Life expectancy and wealth
- Get a PDF version to print: Engineering Computations Module 2: Take off with stats. figshare. https://doi.org/10.6084/m9.figshare.5673499.v1
Module 3: Tour the dynamics of change and motion — Tackling the dynamics of change with computational thinking.
- Catch things in motion
- Step to the future
- Get with the oscillations
- Bird's-eye view of mechanical vibrations
- Get a PDF version to print: Engineering Computations Module 3: Fly at change in systems. figshare. https://doi.org/10.6084/m9.figshare.5673526
Module 4: Land on vector spaces — Using computational thinking to get deep insights on the foundations of linear algebra
- Transform all the vectors
- The matrix is everywhere
- Eigenvectors for the win
- Stick to the essentials: SVD
Module 5: Transform all the waves (Work-in-progress)
- Manipulate complex numbers using Python. Explore information in wave form, programmatically and through visualization. Apply Fourier analysis on wave-like data.
- The simplicity of the complex (DONE)
- Untangle any waveform (WIP)
- From waves to Fourier
- What is a Fourier transform?
Module 6: Deep learning (Work-in-progress)**
- Coming soon
All content is under Creative Commons Attribution CC-BY 4.0, and all code is under BSD-3 clause. We are happy if you re-use the content in any way!