Course Introduction
 
Why Parallel Computing?
 
    - In order to improve program performance, we now need to program multi-core machines.
- We want to solve larger and larger problems.
- Single-core machines will be increasingly rare.
 
Parallel Programming Applications
    - Simulation: The Third Pillar of Science
    
    - Weather Modeling
- Bioinformatics
- Energy Research
- Astrophysics
- Earthquake Simulation
- Computational Chemistry
 
- Data Analysis
- Processor Design
- Search
- Cryptography
- Games
 
Terminology
    - Concurrent computing
- Parallel computing
- Distributed computing
 
What we'll be doing
    - Learning to write explicitly parallel programs.
- Analyzing parallel algorithms.
- Using the C or C++ programming language.
- Using the following libraries/extensions:
    
        - Posix threads (pthreads)
- OpenMP
- Message-Passing Interface (MPI)