algorithm design course notes 3419692