В качестве книги с доказательствами, написанной для студентов и аспирантов, я настоятельно рекомендую Introduction to Algorithms1 («Алгоритмы. Вводный курс») Кормена (Cormen), Лейзерсона (Leiserson), Ривеста (Rivest) и Стейна (Stein) (этих авторов обычно объединяют под аббревиатурой CLRS).
http://www.whatwilliamsaid.com/books/ вы найдете тесты для самопроверки к каждой главе.
Важным навыком в программировании является умение оптимизировать только те части программы, которые необходимо оптимизировать
Эффективная сортировка занимает одну секунду, а неэффективная может длиться несколько недель.
В 1998 году, когда компания Google начала свою деятельность, у ее соучредителей было всего четыре компьютера и несколько сотен гигабайтов дискового пространства. Сейчас ее работу обеспечивают более двух миллионов серверов в нескольких центрах обработки данных по всему миру.
три составляющие информационной безопасности: конфиденциальность, целостность и доступность
Если компьютер предусматривает несколько процессоров, то на нем могут одновременно выполняться несколько процессов.
Вместо того чтобы напрямую управлять оборудованием, код приложения может просто обратиться к API ОС, чтобы задействовать те или иные системные функции.
Операции битового сдвига (<< и >> в языках семейства C) сдвигают все биты в регистре на одну позицию.
Когда следует использовать язык ассемблера
Программисты, которые пишут код на языке ассемблера, говорят, что у такого подхода есть три преимущества. Первые два очевидны: код занимает меньше места и работает быстрее. Третье не столь очевидно: если в коде есть ошибка, то она, как правило, приводит к катастрофическому сбою. На первый взгляд это не кажется преимуществом, однако сразу дает понять, что вы сделали что-то не так.