Applied Numerical Computing Course
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.
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
- Lesson on the plotting capabilities of Python and MATLAB.
- L11 Parameter Estimation in MATLAB
- Lesson on parameter estimation with MATLAB examples.
- L12 Advanced Parameter Estimation in MATLAB
- Lesson on further capabilities of MATLAB for parameter estimation.
- L13 Parameter Estimation in Python
- Lesson on parameter estimatation with Python examples.
- L14 Introduction to GUIs
- Lesson on GUIs, their prevalence in everyday life, and an overview of the MATLAB tools for creating them.
- L15 MATLAB and GUIDE
- Lesson demonstrating the power of GUIDE, how to design callbacks and walkthrough of a sample GUI.
- L16 Further Exploration of GUIDE in MATLAB
- Lesson demonstrating and live walkthrough of editing an app within guide.
- L17 Sensitivity Analysis
- Lesson on sensitivity analysis, and how to code this within Matlab.
- L18 Publication Quality Figures in MATLAB and Python
- Lesson on publication quality images in MATLAB and Python, how to create and export them, and examples of publications using them.
- L19 GUIs in Python
- Lesson on Python GUIs, PyQt5, and creation or utilization thereof.
- L20 Validation and Verification
- Lesson on Verification and Validation.
- L21 Agent Based Modeling and Open Source Software
- Lesson focusing on further explanations of ABM, as well as a variety of tools and examples of open source software.
- L22 Reproducible Research Computing
- Lesson focusing on the case for reproducible research
- 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
(c) 2020 Ashlee N. Ford Versypt, Duncan H. Mullins