Code Monkey home page Code Monkey logo

applnumcomp's Introduction

ApplNumComp: 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. This material is based upon work supported by the National Science Foundation under Grant No. 1845117 to Dr. Ford Versypt.

Course repository: DOI

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

Recommended Software

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

(c) 2021 Ashlee N. Ford Versypt and Duncan H. Mullins

applnumcomp's People

Contributors

ashleefv avatar duncahm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.