This document discusses parallel architecture and parallel programming. It begins by introducing the traditional von Neumann architecture and serial computation model. It then defines parallel architecture, noting its use of multiple processors to solve problems concurrently by breaking work into discrete parts that can execute simultaneously. Key concepts in parallel programming models are also introduced, including shared memory, message passing, and data parallelism. The document outlines approaches for designing parallel programs, such as automatic and manual parallelization, as well as domain and functional decomposition. It concludes by mentioning examples of parallel algorithms and case studies in parallel application development using Java mobile agents and threads.