AMSC 663-664 Catalog Descriptions
AMSC 663, Advanced Scientific Computing I (3 credits):
In the sequence AMSC 663-664 students work on a year-long
individual project to develop software for a scientific task in a
high perfomance computing environment. Lectures will be given on
available computational environments, code development,
implementation of parallel algorithms.
AMSC 664, Advanced Scientific Computing II (3 credits):
In the sequence AMSC 663-664 students work on a year-long
individual project to develop software for a scientific task in a
high perfomance computing environment. Lectures will be given on
code development and validation, parallel algorithms for partial
differential equations, nonlinear systems, and optimization.
Details and Syllabi
Advanced Scientific Computing I (ASC I)
In this course topics covered in SC I, SC II, and COPSC are
applied in the context of a year-long project to develop software
designed to carry out a computational scientific task in a high
performance computing environment. In this term the project
includes a written and oral proposal within one month, and a
written and oral progress report at the end of the term.
Prerequisites and Co-requisite
- SC I and SC II are prerequisites
- COPSC is a co-requisite
- permission of an instructor
Syllabus
- Project Design Proposal
- By the end of one month each student must find a faculty
advisor and identify a suitable project that includes a
deliverable suite of software that is designed to carry
out a computational scientific task, propose appropriate
algorithms, languages, and platforms for the development of
this software, write a short project proposal that also
includes a scientific justification, and present the
proposal orally.
- Available Computational Environments
- While the students are formulating their proposals, they
will taught specific capabilities of the various high
performance computational and graphical platforms available
to them. This includes the attendant networks and their
communication tools.
- Code Development
- modularity, portability, memory management
- post-processing, restarting, and writing to databases
- interactivity
- scientific visualisation
- documentation and version management tools
- debugging and profiling tools
- Implementation of Parallel Algorithms
- use of distributed memory and local caches
- masking communication costs, load balancing, granularity
- parallel numerical linear algebra
for full and sparse matrices
- basic parallel algorithms for PDE e.g., simple domain
decompositions
- Project Progress Report
- Each student must give a written and oral report on the
state of his or her project, explain how the software has
been developed and tested, give his or her current vision
of the finished product, and detail how that vision has
evolved over the course of the project.
Advanced Scientific Computing II (ASC II)
This course is a continuation of ASC I. This course focuses on
issues of code development and validation relevant to large
scientific computing projects on high performance computing
systems. In this term the project includes a seminar lecture and
a written final report.
Prerequisites
Syllabus
- Code Development and Validation
- round-off sensitivity, performance analysis,
tuning to platforms
- symmetry and stability studies
- analytical, experimental, and computational benchmark
comparisons
- convergence studies
- parametric sensitivity studies
- investigation of asymptotic regimes
- Advanced Parallel Computing
- parallel algorithms for PDE, e.g., adpative mesh refinement,
multigrid, independent time steps, domain decomposition,
operator splitting
- parallel algorithms for nonlinear systems
and optimization
- Computational Science Seminars
- Local and visiting computational scientists representing a
broad selection of scientific disciplines will explain the
computational aspects of their work. These aspects should
be reflected in the choice of topics covered above. Each
student is expected to listen to these seminars critically.
- Project Final Report
- Each student must give a one hour seminar and a complete
written report on his or her project, explain how the
software has been developed, tested and validated, document
the software and how it is used, show results of its use,
detail how his or her vision of the finished product has
evolved over the course of the project.