https://github.com/ashleefv/applnumcomp
Applied Numerical Computing Course
Science Score: 49.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
○CITATION.cff file
-
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 11 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.6%) to scientific vocabulary
Repository
Applied Numerical Computing Course
Basic Info
- Host: GitHub
- Owner: ashleefv
- License: bsd-3-clause
- Language: Jupyter Notebook
- Default Branch: master
- Size: 35.8 MB
Statistics
- Stars: 27
- Watchers: 4
- Forks: 10
- Open Issues: 4
- Releases: 3
Metadata Files
README.md
ApplNumComp: An Open Access Introductory Course for Applied Numerical Computing
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. 2133411 (formerly 1845117) to Dr. Ford Versypt.
ASEE Conference proceedings paper about the course: A. N. Ford Versypt, "An Interdisciplinary Elective Course to Build Computational Skills for Mathematical Modeling in Science and Engineering," in ASEE Annual Meeting, Tampa, FL, 2019. Online.
Statement of Need
An introductory course on Applied Numerical Computing was developed for upper division undergraduate and graduate students interested in research and industrial projects involving mathematical modeling using computational tools. The class was designed to fill a gap distinct from introductory programming and numerical methods courses and was intended to be very practical. Graduate students new to computational research were the primary student group targeted for the course topics. We have previously detailed the course FordVersypt 2019 and the final course project Ruggiero 2018. No single textbook covers all of the topics in the Applied Numerical Computing course. As the course emphasized best practices for reproducible research computing, we sought to apply the concept to the course materials for a reproducible computing educational experience. Here, we have curated a set of open educational resources for others to engage with the course lessons outside of the institution's learning management system and outside of the formal course. The main repository is organized into a set of lessons as Markdown-formatted text-based open-source webpages that include code snippets, explanatory text, reflection questions, sample solution software files, links to supplemental videos, related references, and other instructional materials. Each lesson can be considered as a stand alone module on a particular computational topic; however, there are conceptual links between some of the lessons. Many of the lessons include detailed MATLAB or Python coding examples, or both as in the case for Lesson 10: Python and MATLAB Plotting. For instance, Lesson 13: Parameter Estimation in Python provides a worked example for fitting parameters to one differential equation and the solution .py file followed by a second example for fitting parameters to multiple differential equations. Related Lessons 11 and 12 provide supportive general information and complimentary content with examples in MATLAB. Documentation associated with MATLAB or Python often only shows much simpler examples. Open-source worked examples are limited for even just solving multiple differential equations simultaneously independently from the parameter estimation. The full list of lessons is available here. Other supporting materials include a list of suggested readings with links to the sources, the full set of computational assignments, and the course learning objectives.
Course Description
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.
Prerequisites
- 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
Course Learning Objectives
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
Reading Materials
A full list of recommended and optional reading materials that complement the course lessons are available here.
Note on Accessibility
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.
Lessons
- 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.
Recommended Software
- 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
Computational Assignments
The assignments, related files, and grading rubrics are available in the Assignments folder of this repository. The overviews for the assignments are as follows: 1. 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 2. 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 3. 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 4. 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 5. 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 6. "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
Course Implementation Tips
- 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
Community guidelines
For third parties wishing to 1) contribute to the module, 2) report issues or problems with the module, 3) or seek support, you may submit an issue suggesting an edit or modification. Dr. Ford Versypt can be contacted via her university email address ashleefv@buffalo.edu for further support.
(c) 2025 Ashlee N. Ford Versypt and Duncan H. Mullins
Owner
- Name: Ashlee Ford Versypt
- Login: ashleefv
- Kind: user
- Location: Buffalo, NY
- Company: University at Buffalo, The State University of New York
- Website: https://sites.google.com/site/ashleefordversypt/
- Twitter: FordVersyptLab
- Repositories: 1
- Profile: https://github.com/ashleefv
GitHub Events
Total
- Release event: 1
- Watch event: 4
- Push event: 21
- Create event: 1
Last Year
- Release event: 1
- Watch event: 4
- Push event: 21
- Create event: 1