MATH-GA.2043 or CSCI-GA.2112

Scientific Computing

Warren Weaver Hall, room 1302, Thursdays, 5:10 - 7 pm
Courant Institute of Mathematical Sciences
New York University
  Fall Semester, 2019

Instructor

Aleksandar Donev, 1016 Warren Weaver Hall
E-mail: donev@courant.nyu.edu ; Phone: (212) 992-7315
Office hours starting 9/12/2019 : 3-4 pm Tuesdays, 4-5pm on Thursdays, or by appointment

Grader

Sachin Nachin (netid srn324).
Office hours: Fridays 4-5pm in room 406 at 60 Fifth Ave (Data Science building, not Courant!)

Course description

This course is a graduate-level introduction to practical introduction to computational problem solving, including both mathematical analysis of numerical algorithms (numerical analysis) and practical problem solving. This is not a programming course but programming in homework projects with Matlab or numerical/scientific Python is an important part of the course work.

3 points per term

Topics covered include:

  • floating point arithmetic, conditioning and stability
  • direct methods for systems of linear equations
  • matrix eigenvalue problems and SVD decomposition
  • numerical interpolation, differentiation and integration
  • nonlinear systems of equations and unconstrained optimization
  • Fourier and wavelet transforms
  • ordinary and partial differential equations
  • Monte Carlo methods.
All materials related to this course, including lecture notes, homeworks, schedule, etc., will be posted here. Homework assignments and the exams will be handled via NYU Classes. Videos of my lectures as well as some example solutions of assignments will also be posted there.

Textbook(s)

For lectures, I will use my own lecture slides (complemented by the blackboard) that will be posted here. I will not follow any specific textbook per se, however, you will need to complement the lectures and my slides with additional reading. This will not only give you a broader perspective but it will also give you a different perspective, which is very important. The two textbooks listed below have been placed on 24h reserve in the Courant library.

As the primary textbook that I will point you to for additional reading, I recommend Numerical Methods: Design, Analysis, and Computer Implementation of Algorithms by Anne Greenbaum & Timothy P. Chartier (library call number QA297.G15 2012). This book is available to you freely in electronic format via NYU's library (permalink). Codes can be found at the author's website.

A secondary optional textbook is Fundamentals of numerical computation by Tobin Driscoll (QA297.D75 2018), see additional resources including codes/slides in Matlab/Julia/Python. This book is not available freely but an electronic copy can be purchased via google play -- if you wish to purchase a hard copy use this 20% discount flier. This textbook is very applied and hands on with Matlab and more elementary in some respects.

Additional Resources

A more advanced text that is not a first textbook on numerical methods but has very nice case studies demonstrating applications of scientific computing in various disciplines can be found in the book Scientific Computing with Case Studies by Dianne P. O'Leary (library call number QA401.O44 2009), also available freely to you in PDF format. Additional case studies can be found here.

Some of the lectures will be more closely based on a draft of an upcoming book Principles of Scientific Computing by my colleagues Jonathan Goodman and David Bindel, to be found here as one PDF or as individual chapters.

There are many free online materials that can be consulted as additional reading, depending on your background and interests. Here are some suggestions (more may be added as the course progresses) that you have special access to through the NYU/Courant library:
  1. Numerical Computing with MATLAB, by Cleve Moler, available for free in PDF form at the MATLAB site.
  2. The Cambridge Engineering guide to MATLAB has lots of useful information.
  3. An Introduction to Programming and Numerical Methods in MATLAB, Stephen R. Otto & James P. Denier, Springer, 2005, available in PDF format through the library. This book provides an elementary introduction to Matlab with less focus on actual scientific computing.
Also see these resources listed by my colleague David Bindell.

Prerequisites

A solid background (undergraduate level) in multivariate calculus and linear algebra. Experience with writing computer programs (in Matlab, Python, Julia or other high-level language) is strongly recommended as homework assignments will involve programming from the start and you will be expected to catch up on your own (summer break is a good time to learn programming!).

Prior knowledge of Matlab is not required, but it will be used as the main language for the course. If you have experience with other languages (Fortran, C, C++, Python), Matlab will be easy to learn and use, and comes with a great help facility. Please look at some of the "Additional Readings" above for programming guides.

Assignments and grading

There will be regular (biweekly or weekly) challenging assignments and a take-home final. The assignments will be mostly computational. You will be expected to submit a PDF of your solutions, as explained in more detail under Assignments. The grade will be 50% based on assignments and 50% on a take-home final which will be similar to the homework assignments and will be due by 9am on Thurday December 19th. Assuming the total possible number of points (excluding extra credit) is 100, the grade scale will be based on the weights used in computing your GPA:

  • >92.5       = A
  • 87.5-92.5 = A-
  • 80.0-87.5 = B+
  • 72.5-80.0 = B
  • 65.0-72.5 = B-
  • 57.5-65.0 = C+
  • 50.0-57.5 = C
  • 42.5-50.0 = C-
  • <42.5       = F
Academic integrity policies will be strictly enforced for homework assignments. In particular, group work on assignments is not allowed and will be treated as a violation of academic integrity.

Communication

The NYU Classes webpage will be used for messages related to the assignments and any scheduling changes, as well as material that is for your personal use only such as sample solutions of past assignments. If you register for the class, you automatically have access. All course materials including lecture notes and assignments will be posted on this site as they become available.

You should feel free to email the instructor with any questions, concerns, or special requests such as deadline extensions, meeting outside of office hours, etc.

Computing

Computing on your own will form an essential part of the learning process and your own applied mathematics training. Matlab is available to all NYU students via our ITS software service. You can install it on your personal laptop without a charge.

The Courant Institute has computer labs with Linux workstations that have Matlab (matlab), Maple (xmaple), Mathematica (mathematica), the GNU (gcc,g++,gfortran), Intel and Pathscale C/C++/Fortran compiler suites, and other useful software installed.

You are encouraged to submit reports as PDFs produced using LaTex (latex), as a good practice in learning how to use mathematical typesetting software for future papers and thesis reports. I recommend trying out the LyX word processor as a front-end GUI to LaTex, especially if you are new to LaTex.

Also see these resources listed by my colleague David Bindell. In particular, some coding advice that may be useful in general.