# Syllabus

## Administrative Information

- Meeting times: Monday & Wednesday from 1:25-2:45 PM.
- The class will be held online via zoom. Follow this link to connect, using the password available on Piazza and sent to you via email.
- This zoom link will be active any time if you want to use it to work together on homework, etc.

- Instructor: James C. Sutherland, Professor of Chemical Engineering
- Office hours: I’m happy to meet with you by appointment. Feel free to email me directly or message me on Piazza to set up an appointment.

- College of engineering guidelines discusses withdrawal policies, ADA policies, etc.

## Course objectives & topics:

The objective of this course is to give students a working knowledge of solution techniques for:

- Numerical integration (quadrature)
- Linear and nonlinear systems of equations, with focus on those arising from solutions of ODEs and PDEs.
- Ordinary differential equations:
- initial and boundary value problems
- dealing with nonlinearities
- characterizing and handling stiffness

- Partial differential equations:
- Finite difference and finite volume discretization schemes
- Analysis of difference schemes including truncation error, numerical error, stability, etc.
- Application to reaction-diffusion systems arising from steady state and transient applications
- Introduction to hyperbolic (convective) systems

- Linear and nonlinear regression
- Optimization (time permitting)

The course will also provide students with significant experience programming in Python.

## Resources:

### Getting Help:

#### Piazza

We will be using Piazza for discussion this semester. You can add images, code snippets and LaTeX equations in questions and answers. Please use this frequently – I think that it will be very helpful to you.

I encourage you to ask all questions about the class (lectures, homework, etc.) through Piazza so that everyone has the benefit of answers.

I will be using Piazza for announcements etc. so check that regularly in addition to the class web page.

#### Jamboard

Google’s jamboard provides an interactive whiteboard tool that can be useful when talking with each other. We’ll use this occasionally in class and in help discussions.

### Reference materials

I don’t require a textbook for the class. I’ll post my own lecture notes on the lectures page for your reference. But below are several references that I think are pretty good:

- Numerical Methods for Engineers, Chapra & Canale, McGraw Hill. This book covers a wide variety of topics in numerical methods, and is a great addition to any personal library. It provides examples in Matlab.
- Numerical Methods for Engineers and Scientists, Joe D. Hoffman, ISBN 0-8247-0443-6. This is another great book that covers a variety of topics, but provides examples in Fortran, which isn’t too useful.
- Finite Difference and Spectral Methods for Ordinary and Partial Differential Equations, Lloyd N. Trefethen. This online, freely-available book is a great reference on ODEs and PDEs.
- Recorded lectures on a variety of numerical methods topics by Lloyd N. Trefethen.

### Python programming:

Python is very ubiquitous and a google search can usually turn up answers to many of your questions. But here are a few ideas of places to look if you want to learn python:

- General Python programming resources:
- CodeAcademy Python class and the you-tube version
- Google’s Python class
- Python for data science
- Trinket is an online programming platform that provides some pretty good python documentation/tutorials.
- Professor Tony Saad has prepared a set of introductory material for python available here.

- A brief tutorial on
**arrays in python**that includes discussion of python lists as well as numpy arrays. **Python has a vast number of libraries**to simplify many tasks. Among those that you will probably use regularly:- matplotlib provides very powerful (but sometimes challenging to use) plotting capabilities. A quick way to get started on a plot is to look at the matplotlib gallery to obtain code to generate a plot like the one you want to create. Here is another great resource on matplotlib.
- plotly is another great plotting library that allows more interactive plots.
- NumPy provides really powerful array handling capabilities like those in Matlab to allow you to create and manipulate arrays of data. It also has some algorithms that operate on the data. We will use numpy extensively in this class.
- SciPy has a large number of algorithms such as interpolation, quadrature (numerical integration), optimization, ODE solvers, linear algebra tools, etc. There is some duplication between NumPy and SciPy.
- pandas provides a lot of data analysis tools. This includes tools to read/write data, analyze and manipulate data, etc.
- SymPy provides support for symbolic mathematics within Python.

- If you are a
**Matlab user**, here are a few resources:- Numpy for Matlab users (I find this quite useful as a general summary of common Python operations)
- Python primer for Matlab users

### Jupyter Notebooks:

Jupyter notebooks allow you to run Python code fragments interspersed with markup text including equations, plots, etc. This is really useful for communicating results, and will be the format required for homework submission.

You will need to familiarize yourself with Jupyter notebooks since you will be submitting homework as a notebook.

Here is a link to a Jupyter notebook that provides a crash course on some of the key features of a notebook.

#### Web-Based Access for Jupyter Notebooks:

There are two options for web-based access to Jupyter

- You should have access to juno.chpc.utah.edu using your University login credentials for the duration of the semester.

When you first log in, open a terminal (choose the “New” box then “Terminal”) and execute the following command:

`wget -O - http://home.chpc.utah.edu/~u0424091/install_nbextensions.sh 2>/dev/null | bash`

You should see “Nbextensions” appear in your jupyter browser window. Click on it and check the box labeled “(some) LaTeX environments for Jupyter” - The chemical engineering virtual machine pool. Log in with your ICC credentials and use the UG (not graduate) VM pools. This will open a full windows machine where you can launch jupyter from the start menu.

These are great options if you have consistent web access and don’t want to perform a local python installation on your own laptop.

#### Local Python Installations

If you want to install it on your computer, I strongly suggest using Anaconda to install Python and Jupyter, and I also suggest using Python 3.5+ (not 2.7), which will be the default if you install python through anaconda.

You will probably want to install the `jupyter_contrib_nbextensions`

toolkit to super-charge your Jupyter notebook:

- If you are using the terminal, do:
`conda install -c conda-forge jupyter_contrib_nbextensions`

- If you are using the anaconda navigator application, go to “environments” and search for this package.

## Teaching Philosophy:

I assume that you are here to learn. I will do my best to help you achieve that goal. However, learning is primarily your responsibility. You should come to class prepared to participate in the lecture and ask questions. I am happy to meet with you outside of class to discuss questions you have. I also try to respond to email in a timely manner when possible.

## Homework

Homework is designed to provide you with the opportunity to solidify concepts discussed in class. Homework assignments will typically require you to assimilate several concepts to solve a problem. I do this purposely, since I believe that this will help you to learn problem solving skills that will be crucial to your success as an engineer.

Homework assignments will be posted on the homework page of the course web site.

Solutions will be posted on the class web site shortly after the due date.

I strongly encourage you to work together on homework assignments. Discuss the problem and your solution approaches with each other. However, you must submit your ** own work**. Copying others’ work is plagiarism and will not be tolerated. Consequences of cheating and plagiarism include failure of homework assignments, failure of this class, and possibly dismissal from the chemical engineering program.

Homework assignments must be submitted electronically as a `*.zip` file that contains a Jupyter notebook and any other files required to execute the notebook. For more information, see the homework page.

## Grading policy

This is a tentative grading policy:

- 40% Homework
- 20% Each midterm (two midterms)
- 20% Project

Grades will be assigned on the following scale, normalized to the highest student in the class:

- 93: A, 90: A-
- 87: B+, 83: B, 80: B-
- 77: C+, 73: C, 70: C-
- 67: D+, 63: D, 60: D-

I reserve the right to adjust this scale downward if I deem it necessary.

## Student Resources

The University of Utah values the safety of all campus community members. To report suspicious activity or to request a courtesy escort, call campus police at 801-585-COPS (801-585-2677). You will receive important emergency alerts and safety messages regarding campus safety via text message. For more information regarding safety and to view available training resources, including helpful videos, visit safeu.utah.edu.

- safeu.utah.edu – a collection of student resources available on campus.
- The University counseling center 801-581-6826, available for appointments to discuss issues you may be having.
- SafeUT – smartphone application that provides access to resources.
- University Neuropsychiatric institute (UNI) hotline: 801-587-3000
- Crisis intervention
- National Suicide Prevention Lifeline: 1-800-273-TALK (8255)

### Addressing Sexual Misconduct

Title IX makes it clear that violence and harassment based on sex and gender (which includes sexual orientation and gender identity/expression) is a Civil Rights offense subject to the same kinds of accountability and the same kinds of support applied to offenses against other protected categories such as race, national origin, color, religion, age, status as a person with a disability, veteran?s status or genetic information. If you or someone you know has been harassed or assaulted, you are encouraged to report it to the Title IX Coordinator in the Office of Equal Opportunity and Affirmative Action, 135 Park Building, 801-581-8365, or the Office of the Dean of Students, 270 Union Building, 801-581-7066. For support and confidential consultation, contact the Center for Student Wellness, 426 SSB, 801-581-7776. To report to the police, contact the Department of Public Safety, 801-585-2677(COPS).