Завдання цієї книги просте: розібрати «ідеї», що лежать в основі програм, і показати, як доводити їхню правильність. Як математично довести, що заданий алгоритм робить те, що він має робити? І чому це так важливо? Додається правильність класичних алгоритмів: цілеспрямованого поділу, алгоритм Евкліда, ранжування, ін. Крім традиційних алгоритмів, як-от жадібні алгоритми, алгоритми динамічного програмування й алгоритми «розділяй і володарюй», книга досліджує також рандомізовані й онлайнові алгоритми. Перші стали повсякденними через появу криптографії, а другі необхідні в багатьох галузях, починаючи з операційних систем і закінчуючи фондовим ринком. Книга вкрита завданнями. Більшість завдань теоретичні, але багато хто потребує реалізації алгоритму; для таких завдань використовується мова програмування Python 3. Попри свою стислість, видання є математично суворим. Бажано попереднє знайомство з дискретною математикою. Видання призначене для студентів вузів, фахівців у галузі інформатики та математики, а також широкого кола програмістів і розробників.