PGE 311  Numerical Methods and Computer Programming
Instructor: John T. Foster, Ph.D.
Office: POB 5.118
Phone: 5124716972
Email: john.foster@utexas.edu
Class Location: CPE 3.114A
Class Time: TTh 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 inclass 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 inclass 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 7day 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 lowerlevel 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
 Objectoriented programming
 Array computing
 2 and 3d visualizations
 Linear systems
 Gaussian elimination
 Pivoting
 GaussJordan elimination
 LU factorization
 Inverses
 Determinants
 Iterative methods
 SingularValue decomposition
 Eigenvalue problems
 Power method
 Inverse power method
 Householder method
 QR decomposition and algorithm
 Nonlinear equations of one variable
 Bisection method
 NewtonRaphson 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
 NewtonGregory polynomials
 NewtonCotes formulas for quadrature
 Gauss quadrature
 Ordinary differential equations
 Euler's explicit
 Euler's implicit
 RungeKutta methods
 Multistep methods
 Boundary value problems
 Shooting methods
 Finitedifference method
 Finiteelement 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 
9092  A 
8890  B+ 
8288  B 
8082  B 
7880  C+ 
7278  C 
7072  C 
6070  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 5124716259 or see https://www.utexas.edu/diversity/ddce/ssd/ for more information.