The objective of this exercise is to implement several multi-process versions of an application that calculates the number of occurrences of words in a set of input files using the MapReduce paradigm.
The versions to be implemented are the following:
    1b. Multi-process application where child processes execute different Linux commands.
    2a. Multi-process application where child processes sequentially execute the different MapReduce stages, communicating via files.
    2b. Multi-process application where child processes concurrently execute the Map and Reduce stages, communicating via files.
    3a. Multi-process application where child processes concurrently execute the Map and Reduce stages, communicating via stdin and stdout.
    3b. Multi-process application where child processes concurrently execute the Map and Reduce stages, communicating via pipes and sending binary data.