Parallel programming or computing is the splitting of a single task into a number of subtasks that can be computed relatively independently and then aggregated to form a single coherent solution.
Distributed computing can be defined as a method of information processing in which work is performed by separate computers linked through a communications network. Parallel programming is most often used for tasks that can easily broken down into independent tasks such as purely mathematical problems e.g. factorisation. Problems such as these are known to be 'embarrassingly parallel'.
Topics in concurrent programming include: