This document outlines principles of parallel algorithm design. It discusses tasks and decomposition, processes and mapping tasks to processes. Different techniques for decomposing problems are covered, including recursive, exploratory, and hybrid decomposition. Characteristics of tasks such as granularity, concurrency, and interactions are defined. Mapping techniques can help balance load and minimize communication overheads between tasks. Different parallel algorithm design models are also introduced.