Modern algorithm design