Aspects of algorithms and complexity by Bart Tromp