We've started to discuss the assembly problem and we've established some basic principles to frame that problem but how do we solve it with an algorithm? We'll answer that in this module and first we'll discuss one computational problem that corresponds to the assembly problem which is called the shortest common super strength problem. And this is going to be difficult for us to solve quickly but we'll see one solution that's fast, but where the speed comes at a cost. After that we'll have to face a tough reality, which is that when the genome is repetitive, any algorithm, no matter what algorithm we pick, to put the genome back together is going to make some mistakes. And then after this, we'll see a rather different algorithm for solving the assembly problem which is based on the DeBruin graph. Finally, after having spent some time in the abstract world of algorithms and tidy computational problems, we'll get down and dirty and discuss what some aspects about how real assembly programs actually work. Finally, after having spent some time in the abstract world of algorithms and tidy computational problems, we'll get down and dirty and look at how real assembly programs actually work in practice. Then, at the end I'll leave you with some perspective about how the problems we've discussed are changing over time. And about why computer scientists have so much to contribute to the basic sciences and especially life science.