Home Material Tutorials Events Homework Archive

Harvard Applied Math 225

Advanced Scientific Computing: Numerical Methods II

Introduction

Scientific computing has become an indispensable tool in many branches of research, and is vitally important for studying a wide range of physical and social phenomena. Applied Math 225 is designed as a second graduate-level course in this field, and covers a variety of advanced topics in numerical analysis, algorithm design, and high-performance computing.

The course is loosely designed as a follow-up to Applied Math 205 and will follow a similar style, with an emphasis on numerical methods for ordinary and partial differential equations. Topics such as finite element methods, finite volume methods, spectral methods, and interface tracking methods will be covered. Advanced techniques in numerical linear algebra will also be covered.

There will be a significant programming component, and the course will extensively discuss the implementation of numerical algorithms on modern computer architectures. Due to the importance of parallelism in modern computing, the course will cover multithreaded programming using the OpenMP library.

Quick links

Teaching team

Chris
Chris Rycroft

Instructor

Nick
Nick Boffi

Teaching Fellow

Eder
Eder Medina

Teaching Fellow

Course information

A more detailed description of this information can be found in the course syllabus.

Lectures
Monday & Wednesday 10:30am ET via Zoom (see Canvas page for links)
Homework
There will be five homework assignments. The first is due on Thursday February 11th, and the remainder are due at roughly two week intervals. Homework assignments will be due at 5pm ET and can be uploaded via the course Canvas page. In addition, an introductory homework assignment 0 is provided, which is ungraded but designed for you to refresh your familiarity with programming.
Prerequisites
The course will assume that students have already taken a course in scientific computing that is similar to AM 205. Familiarity with linear algebra, calculus, and partial differential equations will be assumed. An intermediate level of programming ability (e.g. at the level of CS 50/51, AM 111/205) will be assumed. The course will also require the use of either C++ or Fortran—students should either be familiar with this, or have a willingness to learn.
Academic integrity policy
Discussion and the exchange of ideas are essential to doing academic work. For assignments in this course, you are encouraged to consult with your classmates as you work on problem sets. However, after discussions with peers, make sure that you can work through the problem yourself and ensure that any answers you submit for evaluation are the result of your own efforts. In addition, you must cite any books, articles, websites, lectures, etc. that have helped you with your work using appropriate citation practices. Similarly, you must list the names of students with whom you have collaborated on problem sets. Using homework solutions from previous years is forbidden.
Grades
The final grade will be based on homework assignments (65%), and the final project (35%).
Final project
In general, the final project will be completed in groups of two or three students. Single person or multi-person projects are also allowed with instructor permission. Each group will propose a project topic drawn from an application area of interest. The project should make use of concepts covered in the course. The project should be roughly equivalent in scope to a section of a published research article. You will be required to write software to solve your problem, and to submit a report that includes a mathematical discussion of your methodology in relation to the theory covered in the course. Projects will be assessed based on a written report, and the quality and correctness of software. Code should be well-documented and should be organized so that figures submitted in the report can be easily reproduced by the graders.