Math 625 Numerical Analysis Syllabus
“The purpose of computation is insight, not numbers.”
Math 625 is a graduate course in Numerical Analysis. The plan is to cover three broad topics in numerical linear algebra:
- Finding eigenvalues and eigenvectors with applications such as Google’s page rank algorithm
- Inner product spaces and orthogonal polynomials with applications to functional approximation, including least square approximation
- Singular value decomposition (SVD) with applications such as principal component analysis, recommender systems, and word embeddings in natural language processing
Projects
There will be three projects organized around the three broad topics that we'll be covering. You'll work in small groups on the projects. One component of the project will be a presentation of your results. Course grades will be determined by work on these projects.
Prerequisites
Students are expected to have a strong working knowledge of linear algebra and be comfortable with mathematical definitions, theorems, and proofs.
Programming experience is not assumed, but programming will be required in this course.
Textbook
There is no textbook for the course. I'll provide references as we go.
Calendar
Math 625 is scheduled to meet Tuesdays and Thursdays 5:00PM - 6:15PM in Kiely 283.
Be aware of the CUNY Academic Calendar. In particular, our class is not scheduled to meet on Thursday February 22, Tuesday April 23, Thursday April 25, and Tuesday February 30.
Contact info
- office hours:
- Tuesdays 3:30--4:30 in Kiely 243 (the math office)
- Thursdays 3:30--4:30 in Kiely 331 (the Math Lab).
- email: jterilla@qc.cuny.edu
Academic Integrity
Be aware of The CUNY Academic Integrity Policy.
Computing
Python
Computer programming experience is not a pre-requisite, but programming will be essential for success in this course. You'll learn as we go. This semester we'll be using python to write code. Python is a high level, interpreted programming language with sophisticated libraries for doing numerical, symbolic, and scientific computing.
You may want a python reference. There are many good ones. I recommend
- Think Python 2nd Edition by Allen B. Downey
It is freely available as a pdf, as well as in print, and in English, Spanish, and Chinese and other languages.
You won't have to learn everything about programming at the beginning, but it will be helpful if you can get acquainted with python basics in the first week. To do so, work through the first three chapters of Think Python:
- Chapter 1: The Way of the Program
- Chapter 2: Variables, Expressions, and Statements
- Chapter 3: Functions
Jupyter
Jupyter notebooks provide an advanced interactive programming environment for python that combine code and documentation together in a way that will make it easy for us to use.
It's not necessary to install anything on your computer in order to use python. There are at least two ways to use python in a jupyter notebook environment online. If you have a Google account, you can use Google's Colab. Alternatively, there is CoCalc. You need to sign up in order to use Colab or CoCalc, but they are free to use, with options to pay to upgrade for higher performance.
Once you have either a CoLab or CoCalc account, you can create a new Jupyter notebook and immediately have access to an interpretive python environment. You'll want to know that code is executed by pressing SHIFT-return or using the play button. Here's a simple notebook that I created Introduction.ipynb that you can use as a scratchpad to get started.
More resources
- You can find installation guides, tutorials, videos, and a whole lot more information at the official python website www.python.org.
- I think Jake Vanderplas's Whirlwind tour of Python is pretty great.
- You can read more about jupyter on the juptyer website docs.jupyter.org/en/latest/.
- Visual Studio Code is an interactive development environment that works with many programming languages. It has a great support for working with python and Jupyter notebooks natively.