Principles of De Novo Genome Assembly and Annotation