GithubHelp home page GithubHelp logo

00mjk / 2019-fall-polytech-cs Goto Github PK

View Code? Open in Web Editor NEW

This project forked from ckorikov/2019-fall-polytech-cs

0.0 0.0 0.0 43.65 MB

Курс по информатике в Политехе

License: MIT License

Python 100.00%

2019-fall-polytech-cs's Introduction

Информатика 2019 🔥

Курс по информатике в Политехе.

Содержание

О чем курс

syllabus

Слайды

  1. Вводная лекция
  • Как устроен курс.
  • Инфраструктура: slack, github, docker, linux.
  • Курс молодого питониста.
  • Дополнительно: элементарная комбинаторика, решето Эратосфена, линейный конгруэнтный метод.
  1. Алгоритмы и структуры данных. Начало
  • Основные определения: алгоритм, АТД, структура данных, тип данных.
  • Нужная математика: числовые ряды, О-большое, рекуррентные формулы.
  • Как сравнивать алгоритмы.
  • Поиск: линейный, бинарный.
  • Дополнительно: интерполяционный поиск, поиск прыжками, фибоначчиев поиск, экспоненциальный поиск.
  1. Проектирование алгоритмов ☠️
  • Метод грубой силы (aka решение «в лоб»). Исчерпывающий перебор. Метод поиска с возвратом, ветвей и границ.
  • Метод преобразования (aka «преобразуй и властвуй»).
  • Жадные методы.
  • Метод уменьшения размера задачи (aka «уменьшай и властвуй»). Рекурсия.
  • Метод декомпозиции (aka «разделяй и властвуй»).
  • Компромисс время-память. Динамическое программирование. Мемоизация.
  • Дополнительно: сортировка Шелла, сортировка пузырьком, быстрая сортировка, порядковые статистики, radix-сортировка.
  1. АТД с линейным порядком
  • АТД список.
  • Строка — список символов.
  • АТД очередь. Стек и дек. Очередь с приоритетом.
  • Структуры: массив, связный список, список с пропусками.
  • Дополнительно: куча (aka пирамида).
  1. Бонус: программирование, IT и рок-н-ролл 🎸
  • Парадигмы программирования.
  • Типизация.
  • Компиляторы и интерпретаторы.
  1. Бонус: ООП, функциональное программирование, TDD и чистый код
  • Объектно-ориентированное программирование, S.O.L.I.D., паттерны.
  • Чистые функции, высшие функции.
  • Разработка через тестирование (TDD).
  • Рекомендации.
  1. Бонус: планирование в IT
  • Водопадная модель, Agile, Scrum, канбан-доска.
  • Максим Дорофеев и игры.
  1. АТД: словарь и множество
  • АТД словарь и АТД множество, мультимножество.
  • Хэш-таблица. Хэширование. Разрешение коллизий.
  • Алгоритм Рабина-Карпа.
  • Словарь и множество в Python.
  • Дополнительно: фильтр Блума.
  1. АТД: дерево ☠️
  • АТД дерево
  • Реализация деревьев
  • Бинарное дерево
  • Бинарное дерево поиска
  • Сбалансированные деревья: АВЛ-дерево, RB-дерево, 2-3-дерево, B-дерево
  • Дополнительно: splay-дерево, k-d дерево, scapegoat-дерево.
  1. Графы: карта злачных мест Петербурга. 18+
  • АТД граф
  • Обход графа
  • Топологическая сортировка
  • Кратчайшие пути
  • Минимальное остовое дерево
  • Задача о максимальном потоке
  • Задача коммивояжера
  1. Числа в компьютере
  • Как работает компьютер
  • Как биты превращаются в числа
  • Дополнительно: алгоритм Евклида, алгоритм Карацубы, алгоритм Штрассена, метод Ньютона, Алгоритм численного дифференцирования.
  1. Конкурентное программирование
  • Parallelism != Concurrency
  • Threads и processes
  • Синхронизация
  • Actors
  • GPU: параллелизм данных
  • Лямбда-архитектура

Что не вошло в курс и предлагается для самостоятельного изучения:

  • Машинное обучение: решающие деревья, нейронные сети, обучение с подкреплением, уменьшение размерности.
  • NP-задачи и эвристики
  • Квантовые алгоритмы ☠️

Практика

Задачи курса находятся тут.

Что уже прошли?

syllabus

Известные алгоритмы и структуры данных в курсе

  • 2-3 дерево [см. тема 9]
  • Scapegoat-дерево [см. тема 9]
  • Splay-дерево [см. тема 9]
  • k-d дерево [см. тема 9]
  • АВЛ-дерево [см. тема 9]
  • Алгоритм Дейкстры [см. тема 10]
  • Алгоритм Крускала [см. тема 10]
  • Алгоритм Прима [см. тема 10]
  • Алгоритм Рабина-Карпа [см. тема 8]
  • Бинарный поиск [см. тема 2]
  • Быстрая сортировка [см. тема 3]
  • Граф [см. тема 10]
  • Дек [см. тема 4]
  • Интерполяционный поиск [см. тема 2]
  • Код Хаффмана [см. тема 9]
  • Красно-черное дерево [см. тема 9]
  • Куча (aka пирамида) [см. тема 4, тема 3]
  • Линейный конгруэнтный метод [см. тема 1]
  • Линейный поиск [см. тема 2]
  • Массив [см. тема 4]
  • Обход дерева в глубину (DFS) [см. тема 9]
  • Обход дерева в ширину (BFS) [см. тема 9]
  • Очередь [см. тема 4]
  • Очередь с приоритетом [см. тема 4]
  • Пирамидальная сортировка (сортировка кучей) [см. тема 3]
  • Поиск прыжками [см. тема 2]
  • Решето Эратосфена [см. тема 1]
  • Связный список [см. тема 4]
  • Сортировка Шелла [см. тема 3]
  • Сортировка вставкой [см. тема 3]
  • Сортировка выбором [см. тема 3]
  • Сортировка кучей (пирамидой) [см. тема 3]
  • Сортировка пузырьком [см. тема 3]
  • Сортировка слиянием [см. тема 3]
  • Топологическая сортировка [см. тема 10]
  • Фибоначчиев поиск [см. тема 2]
  • Хэш-таблица [см. тема 8]
  • Экспоненциальный поиск [см. тема 2]

Что не успели рассмотреть

  • Kadane's algorithm
  • Q-learning
  • Radix-сортировка
  • SVD-разложение
  • Алгоритм A*
  • Алгоритм k-mean
  • Алгоритм kNN
  • Алгоритм PageRank
  • Алгоритм PCA
  • Алгоритм QR
  • Алгоритм Белмана-Форда
  • Алгоритм Бойера-Мура
  • Алгоритм Евклида
  • Алгоритм Карацубы
  • Алгоритм Кнута-Морриса-Пратта
  • Алгоритм обратного распространения ошибки
  • Алгоритм Флойда
  • Алгоритм численного дифференцирования
  • Алгоритм Шора
  • Алгоритм Штрассена
  • Градиентный спуск
  • Код Хэмминга
  • Кольцевая очередь
  • Метод t-SNE
  • Метод Монте-Карло
  • Метод Ньютона
  • Префиксное дерево
  • Симплекс-метод
  • Система непересекающихся множеств
  • Суффиксное дерево
  • Схема Горнера
  • Фильтр Блума
  • Фильтр Калмана

2019-fall-polytech-cs's People

Contributors

ckorikov avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.