This document discusses different types of parallelism in computing including data parallelism and task parallelism. It describes how vector instructions can perform the same operation on multiple data elements simultaneously, like adding two arrays element by element. Pipelining is described as overlapping the execution stages of instructions to improve performance similar to an assembly line. Limitations of pipelining include being limited by the slowest stage and penalties for mispredicted branches in deep pipelines. Super scalar execution and multiple pipelines can help alleviate these bottlenecks by issuing multiple instructions per cycle.