This repository contains a set of lessons on Applied Numerical Computing covering Git for version control, LaTeX for typesetting, and MATLAB and Python for high-level programming and scientific computing.
Note: this site is based on the Fall 2020 course offering: CHE 4753/5753 Applied Numerical Computing for Scientists & Engineers at Oklahoma State University created and taught by Ashlee N. Ford Versypt, Ph.D. and assisted by Duncan H. Mullins. The translation of course materials to the online lessons here was supported by a mini-grant from the Computer Aids in Chemical Engineering (CACHE) Corporation. This material is based upon work supported by the National Science Foundation under Grant No. 1845117 to Dr. Ford Versypt.
Practical software tools for computational problem solving in science and engineering: version control (e.g., Git), mathematical typesetting (e.g., LaTeX), graphical user interfaces, and high level programming languages with libraries of solvers and visualization tools (e.g., Python and MATLAB). Application of numerical computing methods to solve systems of differential and algebraic equations and to estimate model parameters using optimization.
- Junior, Senior, or Graduate Student status
- Differential equations and/or Calculus III
- Basic familiarity with at least one programming language and introductory terminology such as program, for loop, if statement, etc. (e.g. C/C++, Fortran, Python, MATLAB, Maple, Java, Polymath, VBA). Note that these expectations are at the level of a first year engineering introductory computer programming class.
- Or consent of the instructor
Upon completion of this course, you should be able to
- utilize Git for version control using common commands: status, add, commit, push, pull
- write scientific reports and similar documents in the LaTeX typesetting language using an article template and include equations, figures, tables, document hierarchy, cross referencing, and citations (using BibTeX) in the documents
- use best practices for computational problem solving and research and scientific computing as described in publications provided as assigned readings
- develop graphical user interfaces for interactive applied numerical computing
- program well-documented, readable code in the high-level languages of Python and MATLAB that uses libraries, built-in functions, and user-defined functions
- to solve systems of linear and nonlinear equations,
- to numerically integrate functions and data,
- to solve systems of ordinary and partial differential equations,
- to estimate parameters for mathematical models using optimization and data fitting tools,
- to create publication quality figures
A full list of recommended and optional reading materials that complement the course lessons are available here.
All of the YouTube videos produced by Dr. Ford Versypt have captions transcribed by Otter.ai and edited by Dr. Ford Veryspt and Duncan Mullins. PDF versions of all video transcripts are available upon request.
- L01 Git for Version Control
- Downloading, installing, and using Git for version control.
- L02 LaTeX Basics
- Downloading, installing, and using LaTeX for typesetting and computational writing.
- L03 Advanced LaTeX Topics
- Walkthrough of LaTeX functionality, examples, and templates for journals or thesis writing.
- L04 MATLAB Basics
- Basic MATLAB functionality.
- L05 MATLAB Basics Continued
- Learning MATLAB functions, how to write modules, and sample problems.
- L06 Python Basics
- Learning basics of Python and converting an existing MATLAB code into Python.
- L07 MATLAB Functions
- Introducing MATLAB built-in functions: nonlinear equation solving, integration, ODE IVPs.
- L08 Python Functions
- Introducing Python built-in functions: nonlinear equation solving, integration, and basic ODEs.
- L09 MATLAB to Python Conversion
- Converting MATLAB code into Python code, using a system of ODEs.
- L10 Python and MATLAB Plotting
- Plotting capabilities of Python and MATLAB.
- L11 Parameter Estimation in MATLAB
- Estimating parameters in MATLAB and examples.
- L12 Advanced Parameter Estimation in MATLAB
- Further capabilities of MATLAB for parameter estimation.
- L13 Parameter Estimation in Python
- Parameter estimatation in Python and examples.
- L14 Introduction to GUIs and GUIs in MATLAB
- Graphical User Interfaces (GUIs) and an overview of the MATLAB tools for creating them.
- L15 GUI Examples in MATLAB
- Using GUIDE in MATLAB and designing callbacks.
- L16 Further Exploration of GUIDE in MATLAB
- Editing apps with GUIDE.
- L17 Sensitivity Analysis
- Conducting a sensitivity analysis.
- L18 Publication Quality Figures in MATLAB and Python
- Creating publication quality images in MATLAB and Python.
- L19 GUIs in Python
- Creating GUIs in Python and PyQt5.
- L20 Validation and Verification
- Validation and verification.
- L21 Agent Based Modeling and Open Source Software
- Agent based modeling and a variety of tools and examples of open source software.
- L22 Reproducible Research Computing
- Presenting the case for reproducible research computing.
- Anaconda Python 3.x
- Online editor: Google Colab
- MATLAB through OSU software downloads for OSU students and faculty only
- Online editor: MATLAB Online
- Git
- LaTeX
- MiKTeX
- MacTeX for Mac users
- Preferred editor: Texmaker
- Online editor: Overleaf
The assignments, related files, and grading rubrics are available in the Assignments folder of this repository. The overviews for the assignments are as follows:
- Version control in Git and document typesetting in LaTeX
- Create a Git repository to track versions of assignment files (in this and subsequent assignments)
- Produce a LaTeX document with several required components using research or major course work as the topic
- Programming in MATLAB while developing best practices for scientific computing (version control, commenting, and documentation)
- Write a function to define a system of ODEs
- Provide well-documented code following specified standards
- Generate an HTML output file from MATLAB documenting the code
- Using built-in functions and library routines for numerical methods (specifically ODE solvers) in MATLAB and Python
- Solve a system of ODEs using numerical solvers in MATLAB and Python
- Plot the results
- Generate an HTML file to document the code from MATLAB
- Generate a Jupyter Notebook file and a LaTeX file to document the code from Python
- Parameter estimation of dynamic models using MATLAB and Python
- Solve a system of ODEs using numerical solvers in MATLAB and Python
- Use an optimization routine to iterate the ODE model parameters to fit data
- Plot the results
- Generate an HTML file to document the code from MATLAB
- Generate a Jupyter Notebook file and a LaTeX file to document the code from Python
- Develop a GUI in MATLAB starting with an existing computational model
- Create a GUI in MATLAB to take user inputs and display simulation results from a set of user-defined functions provided by the instructor
- "Final Project": Design and construct a GUI in MATLAB, verify code implementation, and review content covered throughout the course
- Develop a GUI for MATLAB that takes a user-specified number of ODEs and explicit equations as input, solves the system of ODEs using ode45 in MATLAB, returns and exports the solution vector, and plots the solution vector components against the independent variable
- Verify that the GUI works for test cases from the systems of ODEs used in Computational Assignments 3 and 4
- A. N. Ford Versypt, An Interdisciplinary Elective Course to Build Computational Skills for Mathematical Modeling in Science and Engineering, Proceedings of the ASEE Annual Conference, Tampa, FL, 2019. DOI: 10.18260/1-2--32072.
- “Teaching Computational Skills for Chemical Engineers,” Webinar, AIChE Education Division, Feb 2020. Archived recording
(c) 2021 Ashlee N. Ford Versypt and Duncan H. Mullins