PGE 311 - Numerical Methods and Computer Programming
Instructor: John T. Foster, Ph.D.
Office: POB 5.118
Phone: 512-471-6972
Email: john.foster@utexas.edu
Class Location: CPE 3.114A
Class Time: T-Th 11:00 PM - 12:30 PM
Office Hours: W 11:00 AM - 12:00 AM Virtual Zoom Link (password given in class) and by appointment (scheduling link). Note: Due to the "reverse classroom" nature of this course, we will spend the majority of in-class time working assignments. This is your opportunity to ask questions. If you need additional help outside of that, feel free to send me an email I'll be happy to meet with you provided that your in-class attendance and participation are acceptable.
Course Website: https://utexas.instructure.com/courses/1380276
Course Description: Introduction to mathematical equations typically encountered in petroleum and geosystems engineering; methods to solve equations graphically, analytically, and with numerical methods; applications of computers to problem solving.
Prerequisites: Physics 303K, Physics 103M, and Mathematics 427J
Book:
I will provide you with a comprehensive set of notes and will ensure that you will be adequately prepared for each homework assignment. Because of this, and the wealth of information available on the internet, I have chosen to not require you to purchase a text for this course. I am preparing a companion online book for this class available below:
Suggested References: (not required to purchase)
-
J. Kiusalaas, Numerical methods in engineering with Python 3, Cambridge University Press, Cambridge; New York, 2013.
-
M.A. Wood, Python and Matplotlib essentials for scientists and engineers, Morgan et Claypool; IOP Publ., San Rafael, Calif.; Bristol, 2015.
Online Python tutorials:
We will spend a few weeks learning some basic Python syntax and computer programming flow control conventions as part of this class; however, I strongly encourage you to utilize one of the online courses designed to teach Python. I recommend:
- Codecademy - Free 7-day trail
Course Introduction and Outline:
As engineers we often encounter problems too large or too difficult to solve in a conventional manner; therefore, we resort to using the computer to do the hard work for us. This is a first course in numerical methods, intended to introduce the student to the algorithms and techniques an engineer might employ in solving these difficult problems. Most of the algorithms discussed in this class are typically available nowadays in packaged libraries, whether within engineering tools such as MATLAB, Mathematica, or Python modules; or packaged solvers for lower-level languages such as BLAS, LAPAK, ODEPAK, etc. available for C/C++ and/or FORTRAN. In the typical course of engineering problem solving we will build our code with these highly robust packages and not try to "reinvent the wheel"; it is, however, important to have an underlying understanding of some of the fundamental algorithms employed in these packages. This allows us to choose solvers appropriate to the problem based on our desires for accuracy, stability, speed, etc. This course is designed to provide the student with this underlying understanding of basic algorithms and a degree of proficiency in programming them. Below is list of subjects that we will attempt to cover this semester. As the needs of the class are better understood, I may choose to focus on some areas more than others.
- Python Programming
- Loops
- Conditional statements
- Functions
- Object-oriented programming
- Array computing
- 2 and 3d visualizations
- Linear systems
- Gaussian elimination
- Pivoting
- Gauss-Jordan elimination
- LU factorization
- Inverses
- Determinants
- Iterative methods
- Singular-Value decomposition
- Eigenvalue problems
- Power method
- Inverse power method
- Householder method
- QR decomposition and algorithm
- Nonlinear equations of one variable
- Bisection method
- Newton-Raphson method
- Secant method
- Hybrid methods
- Polynomials
- Synthetic division
- Müller's method
- Deflation
- Nonlinear equations of more that one variable
- Newton's method
- Broyden's method
- Steepest decent technique
- Numerical differentiation and integration
- Newton-Gregory polynomials
- Newton-Cotes formulas for quadrature
- Gauss quadrature
- Ordinary differential equations
- Euler's explicit
- Euler's implicit
- Runge-Kutta methods
- Multistep methods
- Boundary value problems
- Shooting methods
- Finite-difference method
- Finite-element method
- Partial differential equations
I believe the only way to become proficient in numerical methods is to write and understand code; therefore, a significant portion of the grade allocation in the class will be from homework/small projects. It is acceptable to talk to each other about your assignments, but every student will be expected to do their own work. The grade allocation will be as follows:
Grading
-
20% Lecture quizzes
-
40% Daily/Weekly assignments
-
40% Projects
Grade Assignment
Range | Grade |
---|---|
>92 | A |
90-92 | A- |
88-90 | B+ |
82-88 | B |
80-82 | B- |
78-80 | C+ |
72-78 | C |
70-72 | C- |
60-70 | D |
< 60 | F |
Disability Statement: The University of Austin provides upon request appropriate academic accommodations for qualified students with disabilities. For more information, contact the Office of the Dean of Students at 512-471-6259 or see https://www.utexas.edu/diversity/ddce/ssd/ for more information.