Хватит тратить время на скучные академические фолианты! Изучение Computer Science может быть веселым и увлекательным занятием.
Владстон Феррейра Фило знакомит нас с вычислительным мышлением, позволяющим решать любые сложные задачи. Научиться писать код просто пара недель на курсах, и вы «программист», но чтобы стать профи, который будет востребован всегда и везде, нужны фундаментальные знания. Здесь вы найдете только самую важную информацию, которая необходима каждому разработчику и программисту каждый день.

Математические модели.
Модель — это набор идей, которые описывают задачу и ее свойства. Модель помогает рассуждать п принимать решения относительно задачи. Создание моделей настолько важно, что их преподают в школе ведь в математике нужно иметь представление, как последовательно решать уравнения и совершать другие операции с числами и переменными.
Математические модели имеют большое преимущество: их можно приспособить для компьютеров при помощи четко сформулированных математических методов. Если ваша модель основана на графах, используйте теорию графов. Если она задействует уравнения, используйте алгебру. Встаньте на плечи гигантов, которые создали эти инструменты, и вы достигнете цели. Давайте посмотрим, как они работают, на примере типичной задачи из средней школы.
Содержание.
Предисловие.
Эта книга для меня?.
Но разве computer science не только для ученых?.
Глава 1. Основы.
1.1. Идеи.
Блок-схемы.
Псевдокод.
Математические модели.
1.2. Логика.
Операторы.
Булева алгебра.
Таблицы истинности.
Логика в вычислениях.
1.3. Комбинаторика.
Правило умножения.
Перестановки.
Перестановки без повторений.
Комбинации.
Правило суммирования.
1.4. Вероятность.
Подсчет количества возможных вариантов.
Независимые (совместные) события.
Несовместные события.
Взаимодополняющие события.
«Заблуждение игрока».
Более сложные вероятности.
Подведем итоги.
Полезные материалы.
Глава 2. Вычислительная сложность.
Надейтесь на лучшее, но готовьтесь к худшему.
2.1. Оценка затрат времени.
Понимание роста затрат.
2.2. Нотация «О большое».
2.3. Экспоненциальное время.
2.4. Оценка затрат памяти.
Подведем итоги.
Полезные материалы.
Глава 3. Стратегия.
3.1. Итерация.
Вложенные циклы и степенные множества.
3.2. Рекурсия.
Рекурсия против итераций.
3.3. Полный перебор.
3.4. Поиск (перебор) с возвратом.
3.5. Эвристические алгоритмы.
«Жадные» алгоритмы.
Когда жадность побеждает силу.
3.6. Разделяй и властвуй.
Разделить и отсортировать.
Разделить и заключить сделку.
Разделить и упаковать.
3.7. Динамическое программирование.
Мемоизация Фибоначчи.
Мемоизация предметов в рюкзаке.
Лучшая сделка снизу вверх.
3.8. Ветви и границы.
Верхние и нижние границы.
Ветви и границы в задаче о рюкзаке.
Подведем итоги.
Полезные материалы.
Глава 4. Данные.
Абстракции.
Тип данных.
4.1. Абстрактные тупы данных.
Преимущества использования АТД.
4.2. Общие абстракции.
Примитивные типы данных.
Стек.
Очередь.
Очередь с приоритетом.
Список.
Сортированный список.
Множество.
4.3. Структуры.
Массив.
Связный список.
Двусвязный список.
Массивы против связных списков.
Дерево.
Двоичное дерево поиска.
Двоичная куча.
Граф.
Хеш-таблица.
Подведем итоги.
Полезные материалы.
Глава 5. Алгоритмы.
5.1. Сортировка.
5.2. Поиск.
5.3. Графы.
Поиск в графах.
Раскраска графов.
Поиск путей в графе.
PageRank.
5.4. Исследование операций.
Задачи линейной оптимизации.
Задачи о максимальном потоке в Сети.
Подведем итоги.
Полезные материалы.
Глава 6. Базы данных.
6.1. Реляционная модель.
Отношения.
Миграция схемы.
SQL.
Индексация.
Транзакции.
6.2. Нереляционная модель.
Документные хранилища.
Хранилища «ключ — значение».
Графовые базы данных.
Большие данные.
SQL против NoSQL.
6.3. Распределенная модель.
Репликация с одним ведущим.
Репликация с многочисленными ведущими.
Фрагментирование.
Непротиворечивость данных.
6.4. Географическая модель.
6.5. Форматы сериализации.
Подведем итоги.
Полезные материалы.
Глава 7. Компьютеры.
7.1. Архитектура.
Память.
Процессор.
7.2. Компиляторы.
Операционные системы.
Оптимизация при компиляции.
Языки сценариев.
Дизассемблирование и обратный инженерный анализ.
Программное обеспечение с открытым исходным кодом.
7.3. Иерархия памяти.
Разрыв между памятью и процессором.
Временная и пространственная локальность.
Кэш L1.
Кэш L2.
Первичная память против вторичной.
Внешняя и третичная память.
Тенденции в технологии памяти.
Подведем итоги.
Полезные материалы.
Глава 8. Программирование.
8.1. Лингвистика.
Значения.
Выражения.
Инструкции.
8.2. Переменные.
Типизация переменных.
Область видимости переменных.
8.3. Парадигмы.
Императивное программирование.
Декларативное программирование.
Логическое программирование.
Подведем итоги.
Полезные материалы.
Заключение.
Приложения.
I. Системы счисления.
II. Метод Гаусса.
III. Множества.
IV. Алгоритм Кэдейна.
Ниже можно купить эту книгу, если она есть в продаже, и похожие книги по лучшей цене со скидкой с доставкой по всей России.Купить книги
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «Литрес», и потом ее скачать на сайте Литреса.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Хештеги: #учебник по программированию :: #программирование :: #Феррейра








