This is the home page for the course "Scientific Computing" offered by the Mathematics and Computer Science departments of the Courant Institute of Mathematical Sciences of New York University. The course instructor is Jonathan Goodman. The class meets Tuesdays from 7:30 to 9:30 p.m. in Warren Weaver Hall, room 1302.

A one semester overview of the mathematical and software principles of scientific computing. The purpose of the course is to enable students to combine all these ideas to produce numerical software that reliably "gets the right answer". Course assignments include mathematical exercises and programming assignments.

**Assignments and grading**: There will be a number of homework assignments,
most involving the computer. The grade will be based on the assignments.
It will based on the following three aspects:

- The writeup, in English, discussing the results and answering the questions.
- Output and/or graphics, carefully chosen to be illustrative without taking too much paper.
- The programs.

TIn particular, the programs need to be well written.

**Prerequisites**: multivariate calculus and linear algebra. Programming
experience in a high level language (FORTRAN, C/C++, Java) is very desirable.
It may be possible to learn programming while taking this course. If you
want to do this, you *must start immediately*, preferably before the
term starts. A good place to start is with the book "The C Programming
Language" be Kernighan and Ritchie.

**Computing environment:** The "standard computing environment"
for this class is the UNIX workstations network of the mathematics department.
This includes a C/C++ compiler, debugger (called "debugger"),
a graphics/data exploration package (MATLAB), access to the internet, and
the ability to read and print postscript documents. Students in the class
are welcome to use whatever computing environment is convenient for them,
as long as it contains these elements. Students may choose to program in
FORTRAN or Java instead of C/C++.

- Sources of error
- Roundoff error and computer arithmetic
- Ill conditioned problems and unstable algorithms
- Truncation error, error exapnaions, extrapolation and convergence analysis
- Differentiation, interpolation, integration
- Software engineering:
- Basic programming (learn on your own)
- Clarity of programs
- Use of visualization tools
- Algebraic equations
- Solving linear systems of equations
- Condition number
- Special problems: symmetric, positive definite, least squares, sparse
- Matrix factorizations
- Software packages (especially LAPACK)
- Solving nonlinear equations: Newton's method
- Robust optimization
- Line search
- Descent directions
- Iterative methods
- Software engineering:
- Modular software design and debugging
- Dynamics
- Time stepping methods in general
- Adams and Runge Kutta methods
- Error analysis and modified equations.
- Conservations principles and symplectic integrators
- Software ingineering:
- Adaptive methods
- Convergence studies
- Monte Carlo
- (pseudo) random number generators
- Sampling and simulation
- Statistics and error bars
- Advanced topics: rejection, Metropolis, importance sampling, reweighting
- Software engineering: programming for efficiency
- overhead
- redundance
- cache considerations

Most coarse materials are available in three formats, Postscript, LaTeX, and PDF. Postscript is a printer language created by Adobe. Software for viewing and printing postscript files, mostly under the name "ghostscript" is free for the downloading. LaTeX is a typesetting system used by most mathematicians and physicists. It too is shareware. The LaTeX files are the source files for the documents. The Acrobat reader, which allows you to view and print PDF format files, is an Adobe product and can be downloaded free.

**Assignment 1:** postscript
format, LaTeX
format, or PDF
format.

**Assignment 2**: postscript
format, LaTeX
format, or PDF
format.

**Assignment 3**: postscript
format, LaTeX
format, or PDF
format. This assignment uses three data sets, one with high
noise, one with medium noise,
and one with low noise. You can
look at graphs of the data: the high noise data, in
postscript or PDF format,
the medium noise data, in postscript
or PDF format, the low noise
data in postscript or PDF
format.

**Assignment 4**: postscript
format, LaTeX
format, or PDF
format.

**Assignment 5**: postscript
format, LaTeX
format, or PDF
format.

**Assignment 6**: postscript
format, LaTeX
format, or PDF
format.

**Assignment 7**: postscript
format, LaTeX
format, or PDF
format.

**Assignment 8**: postscript
format, LaTeX
format, or PDF
format.

- Sample program that types "Hello world.": Hello.C

- A set of files that represent a main programming style in C:
- A main program that calls other procedures and does io.
- A procedure that actually does the computation.
- A header file that contains common declarations.
- A makefile (for UNIX systems only) that tells the computer how to build the application.
- Sample program that error amplification through explores concellation:
cancellation.C

If you are on a UNIX system, you can download these files and type "make recurrence" to build an executable called "recurrence". Then type "recurrence" to run the program. The output will be in a file called "recurrence_output". Note that the numbers in the output line up for easy assimilation by humans. The file is suitable for MATLAB to read. If you are not in a UNIX environment, download the first three files and figure out for yourself how to build the executable.

**IEEE floating point arithmetic**: postscript
format, LaTeX
format, or PDF
format. (Last revised January 19, 1999)

**Sources of error**: postscript
format, LaTeX
format, or PDF
format. (Last revised January 19, 1999)

**Sources of error**, II: postscript format,
LaTeX format, or PDF
format. (Last revised January 26, 1999)

**Basic numerical analysis**: postscript
format, LaTeX
format, or PDF
format. (Last revised January 27, 1999)

**Interpolation**: postscript format,
LaTeX format, or PDF
format. (Last revised march 1, 1999)

**Solving nonlinear systems of equations and optimization**: postscript
format, LaTeX
format, or PDF format. (Last revised
April 8, 1999)

**The FFT and numerical use of harmonic analysis**: postscript
format, LaTeX format, or PDF
format. (Last revised April 8, 1999)

**Introduction to Monte Carlo methods**: postscript
format, LaTeX format, or PDF
format. (Last revised April 27, 1999)** This is a very preliminary version. It should get a few pages
longer in the next few days.**

Netlib is an excellent net resource.
It contains tons of reliable numerical software that can be downloaded
and links to most technical information on numerical analysis and scientific
computing on the internet.

Michael Overton has written some notes on IEEE
arithmetic

Check for new announcements often. Announcements will be dated and no announcements will be edited. Everything above the line might be edited.

**January 25**: The first homework assignment
is due a week from tomorrow, February 2, dispite what it says on the assignment.

**January 25**: Some of the terms mentioned
in the homework (cancellation, machine epsilon, ...) will be discussed
in class tomorrow, January 26.

**January 25**: You may get a (nearly)
free copy of MATLAB by going to ACF on the second floor of Warren Weaver
Hall with a writable CD. They will "burn" you a copy of MATLAB
with about a 24 hour turnaround time. The license for this copy will expire
at the end of the semester. You have to pay real money for a copy of MATLAB
(for example, at the NYU computer store) that doesn't expire.

**January 26:** Notes "Sources
of error, II" posted.

**January 26**: Assignment 1 fixed a
bit. The correct due date (February 2) inserted and question 2b clarified.

**January 26**: Assignment 2 assigned.
It is due in 2 weeks, February 9.

**January 27**: The lecture notes "Basic
Numerical Analysis" corrected. If you downloaded these notes before
this date, you should download a new copy and destroy the old copy.

**February 2**: The due date for homework
1 moved to February 9, a one week reprieve, because of a temporary failure
of the MATLAB license on our computer network.

**February 2**: A demonstration program
posted. Novice programmers may find it helpful.

**February 9**: Corrected two errors
in part 5 of assignment 2. Both involved "x" being replaced by
the wrong letter, "n" in one case, and "y" in the other.

**February 10**: A final (hopefully)
correction to assignment 2: the formula in part 5 got new coefficients.
If you haven't handed in assignment 2, please download the latest version.

**February 12**: A half finished version
of the interpolation notes posted.

**February 16**: Assignment 4 posted.

**March 23: **The lecture notes on interpolation
have been posted for about two weeks.

March 23: Assignments 5 and 6 are posted. Note that assignment 6 is due in three weeks.

**April 1**: Assignment revised and
corrected.

**April 19**: Lecture notes on FFT and
harmonic analysis posted. Very preliminary versions.

**April 21**: Assignment 7 posted.

**April 21: EMERGENCY REQUEST**: please
email to goodman@cims.nyu.edu
a copy of the lecture notes on nonlinear equations (latex format preferred,
other formats welcome). They were deleted from this directory somehow.