В курсе будут разобраны основные алгоритмические методы: жадные алгоритмы, «разделяй и властвуй», динамическое программирование. Помимо теоретических основ, будут рассмотрены тонкости реализации рассмотренных алгоритмов на языках C++, Java и Python. Слушателям будет предложено реализовать большинство разобранных в курсе алгоритмов. Решения будут проверяться тестирующей системой на тщательно подобранных тестах.
Программа
Обзор
Введение: теория и задачи
Введение
Числа Фибоначчи
Наибольший общий делитель
O-символика
Введение: практика и разбор задач
Практика на C++: Введение
Практика на C++: Числа Фибоначчи
Практика на C++: Наибольший общий делитель
Практика на Python: Введение
Практика на Python: Числа Фибоначчи
Практика на Python: Наибольший общий делитель
Практика на Java: Введение
Практика на Java: Числа Фибоначчи
Практика на Java: Наибольший общий делитель
Жадные алгоритмы: теория и задачи
Введение
Коды Хаффмана
Очереди с приоритетами
Жадные алгоритмы: практика и разбор задач
Практика на C++: Непрерывный рюкзак
Практика на C++: Коды Хаффмана
Практика на Python: Непрерывный рюкзак
Практика на Python: Коды Хаффмана
Практика на Java: Непрерывный рюкзак
Практика на Java: Коды Хаффмана
«Разделяй и властвуй»: теория и задачи
Двоичный поиск
Умножение чисел
Умножение матриц
Сортировка слиянием
Быстрая сортировка
Порядковые статистики
Сортировка кучей
Сортировки, основанные не на сравнениях
Рекуррентные соотношения
«Разделяй и властвуй»: практика и разбор задач
Практика на C++: Двоичный поиск
Практика на Python: Двоичный поиск
Практика на Java: Двоичный поиск
Практика на Java: Число инверсий
Динамическое программирование: теория и задачи
Введение
Наибольшая возрастающая подпоследовательность
Расстояние редактирования
Рюкзак
Перемножение последовательности матриц
Независимые множества во взвешенных деревьях
Обзор
Динамическое программирование: практика и разбор задач
Уважаемые студенты, пройдя курс, вы повторите, закрепите и расширите знания из раздела «Теория алгоритмов» полученные ранее. Вам предстоит выполнить практические работы и изучить некоторые темы самостоятельно
Программа
Введение
Основные модели алгоритмов
Неформальное определение алгоритма
Машина Тьюринга
Свойства алгоритма
Разработка алгоритмов линейной структуры
Разработка алгоритмов разветвляющейся структуры
Разработка алгоритмов циклической структуры
Рекурсивные функции
Нормальные алгоритмы Маркова
Алгоритмически неразрешимые проблемы
Анализ алгоритмов
Сравнительные оценки алгоритмов
2 Классификация алгоритмов по виду функции трудоёмкости
Курс представляет собой изучение основных алгоритмов и структур данных, необходимых программистам для качественного решения ежедневных задач. По окончанию курса у вас появится личный опыт реализации основных алгоритмов и представление о том, как оценивать эффективность по времени работы и по количеству используемой дополнительной памяти.
Начальные сведения о языке Python. Курс рассчитан на учеников 8 класса, занимающихся по учебнику Л. Л. Босовой и желающих освоить язык программирования Python. А так же для учителей, которые преподают по учебнику Босовой Л. Л. и хотят перейти с языка Паскаль на Python.
Курс создан в рамках программы переподготовки МНМЦ СПбГУ «Разработка программного обеспечения и анализ данных». В курсе будут разобраны основные алгоритмические методы: жадные алгоритмы, «разделяй и властвуй», динамическое программирование. Помимо теоретических основ, будут рассмотрены тонкости реализации рассмотренных алгоритмов на языках C++, Java и Python. Слушателям будет предложено реализовать большинство разобранных в курсе алгоритмов. Решения будут проверяться тестирующей системой на тщательно подобранных тестах.
Программа
Обзор
Введение: теория и задачи
Введение
Числа Фибоначчи
Наибольший общий делитель
O-символика
Введение: практика и разбор задач
Практика на C++: Введение
Практика на C++: Числа Фибоначчи
Практика на C++: Наибольший общий делитель
Практика на Python: Введение
Практика на Python: Числа Фибоначчи
Практика на Python: Наибольший общий делитель
Практика на Java: Введение
Практика на Java: Числа Фибоначчи
Практика на Java: Наибольший общий делитель
Жадные алгоритмы: теория и задачи
Введение
Коды Хаффмана
Очереди с приоритетами
Жадные алгоритмы: практика и разбор задач
Практика на C++: Непрерывный рюкзак
Практика на C++: Коды Хаффмана
Практика на Python: Непрерывный рюкзак
Практика на Python: Коды Хаффмана
Практика на Java: Непрерывный рюкзак
Практика на Java: Коды Хаффмана
«Разделяй и властвуй»: теория и задачи
Двоичный поиск
Умножение чисел
Умножение матриц
Сортировка слиянием
Быстрая сортировка
Порядковые статистики
Сортировка кучей
Сортировки, основанные не на сравнениях
Рекуррентные соотношения
«Разделяй и властвуй»: практика и разбор задач
Практика на C++: Двоичный поиск
Практика на Python: Двоичный поиск
Практика на Java: Двоичный поиск
Практика на Java: Число инверсий
Code review
Задача на code review: ближайшие точки
Динамическое программирование: теория и задачи
Введение
Наибольшая возрастающая подпоследовательность
Расстояние редактирования
Рюкзак
Перемножение последовательности матриц
Независимые множества во взвешенных деревьях
Обзор
Динамическое программирование: практика и разбор задач
Это курс для тренировок решения алгоритмических задач. Задачи разбиты по темам. Темы охватывают основные структуры данных (списки, стеки, очереди, строки, файлы, словари, кортежи, классы и объекты) и ряд алгоритмов сортировки, поиска, комбинаторики, оптимизации.
В этом курсе мы затронем те темы дискретной математики, которые необходимы для понимания подходов к анализу научных данных. Модули будут последовательно посвящены программированию на языке Python, теории множеств, комбинаторике и теории вероятности, основам статистики и статистическим методам, а также работе с библиотеками языка Python, алгоритмам биоинформатики и методам искусственного интеллекта. Кроме того, курс включает модуль подготовки к олимпиадам по программированию до регионального уровня включительно.
Программа
Программирование на Python
Теория множеств и введение в матлогику
Понятие множеств. Операции над множествами
Формула включения-исключения
Алгебра множеств и ее моделирование с помощью множеств R
Сравнение множеств
Параллели теории множеств и матлогики
Решение задач
Введение в комбинаторику
Правила сложения и умножения [193092]
Комбинаторные задачи [346553]
Решение комбинаторных задач [346555]
Комбинаторные объекты
Формулы для расчета количества комбинаций
Треугольник Паскаля
Свойства сочетаний, расчет сложных комбинаций
Решение задач
Введение в теорию вероятностей
Основные понятия. Классическая формула вероятности
Сложение и умножение вероятностей. Дерево решений [346559]
Условная и полная вероятность. Формула Байеса
Случайные величины. Частотная вероятность
Свойства случайных величин. Матожидание и дисперсия
Распределения вероятностей случайных величин
Закон больших чисел
Введение в статистику.
Центральная предельная теорема.
Решение задач
Работа с библиотеками для анализа данных
Рекомендации по установке и работе с Anaconda 3 Jupyter Notebook
Библиотеки csv и pandas. Работа с таблицами в Python
Первичная обработка и объединение данных
Решение задач в pandas
Научная графика в Python - matplotlib и seaborn
Работа с матрицами. Библиотека numpy
Статистические методы с библиотекой scipy.stats
Сравнение средних в Python
Однофакторный и многофакторный дисперсионный анализ в Py
Корреляция и регрессия в Python
Решение задач
Введение в алгоритмы. Алгоритмы биоинформатики
Введение. Рекурсивные алгоритмы [346645]
Линейные структуры данных. Стеки, очереди, деки
Иерархические структуры. Деревья и их разновидности
Python подходит для решения львиной доли повседневных задач, будь то резервное копирование, чтение электронной почты, либо же какая-нибудь игрушка. Язык программирования Python практически ничем не ограничен, поэтому также может использоваться в крупных проектах. К примеру, python интенсивно применяется IT-гигантами, такими как, например, Google и Yandex. К тому же простота и универсальность python делают его одним из лучших языков программирования.
Курс посвящен базовым принципам языка Python и программирования в целом. Он хорошо подойдет тем, кто уже может писать простейшие программы на Python или тем, кто до этого программировал на других языках.
Программа
Базовые принципы языка Python
Cтандартные средства языка Python
Ошибки и исключения
Работа с кодом: модули и импорт
Итераторы и генераторы
Работа с файловой системой и файлами
Работа с функциями: functool и лямбда функции
Стиль программирования: pep8 и документация
Применение Python: анализ текста
Стандартные методы и функции для строк
Регулярные выражения в Python
Обзорно об интернете: http-запросы, html-страницы и requests
Курс по базовому и продвинутому Python от школы программирования LoveToCode для детей и подростков. Дети могут самостоятельно идти по курсу, а также могут задавать вопросы преподавателю, если у них возникают трудности. По итогам курса дети будут иметь хорошую подготовку для школьных курсов информатики, смогут построить простые графики и диаграммы, используя библиотеки Python и Excel файлы, смогут создать свое небольшое приложение-калькулятор, а также будут владеть базовыми принципами построения алгоритмов, например, линейного и бинарного поисков.
Программа
Часть I. Знакомство с Python
Часть II. Операции
Операции над строками
Форматирование строк
Ввод данных
Арифметические операторы
Логические операторы
Практика
Часть III. Условия
Условие If
Условия If/Else/Elif
Вложенные условия
Сочетание нескольких условий
Практика и повторение
Часть IV. Массивы
Одномерные массивы
Индексирование массивов
Функция len()
Функция sort()
Двумерные массивы
Часть V. Циклы
While
While и использование break/continue
Цикл for
Использование range
Практика: камень-ножницы-бумага и морской бой
Часть VI. Функции
Общий синтаксис функций
Аргументы в функциях
Return в функциях
Работа функций с массивами
Вызов одной функции внутри другой
Практика: чат-бот и калькулятор
Часть VII. Алгоритмы
Устройство алгоритмов
Алгоритм бинарного поиска
Рекурсия
Быстрая сортировка
Практика: задачи с использованием алгоритмов
Часть VIII. Объекты
Общий синтаксис объектов
Атрибуты объектов
Методы в объектах
Массивы объектов
Применение функций на объектах
Часть IX. Практическое приложение
Файлы в Python
Чтение данных из файла
Запись данных в файл
Библиотека pandas
Создание простого графика с помощью pandas и matplotlib