A C++ implementation of the Smith - Waterman algorithm. The system consists of 3 different implementations: the one is sequential, while the other two parallelize the execution in a coarse and a fine level respectively, with the use of multithreading.