Мы используем cookie для стабильной работы сервиса. Подробнее

Алгоритмы: теория и практика. Методы

ФорматОнлайн
Длительность5-7 часов в неделю
Объём10 занятий
По окончанииComputer Science Center
О курсе

Подробнее

Алгоритмы — важнейший раздел computer science и программирования. Благодаря развитию информационных технологий и алгоритмам мы сегодня имеем возможность быстро находить информацию в интернете (в частности, искать по картинкам), находить кратчайшие пути, анализировать геномы и так далее. Алгоритмы используются практически во всех областях computer science — в анализе изображений, в интернет-поиске, в машинном обучении, в биоинформатике, в криптографии, в кодировании, в сетях, в распределённых системах, в компиляторах. В курсе будут подробно разобраны базовые алгоритмические методы: жадные алгоритмы, метод «разделяй и властвуй», динамическое программирование. Для всех алгоритмов будут математически строго доказаны корректность и оценки на время работы. Мы постарались изложить материал так, чтобы были понятны и сами алгоритмы, и то, как можно было бы догадаться до их основных идей. Помимо теоретических основ, будут рассказаны тонкости реализации алгоритмов на языках программирования C++, Java и Python. В частности, будет рассказано, какие есть общие практики написания кода, позволяющие минимизировать вероятность ошибки, как писать и тестировать код, где стоит использовать стандартные методы, а не изобретать колесо. Мы тщательно подобрали задачи для закрепления материала. Большинство алгоритмов, которые вы узнаете, вам нужно будет запрограммировать. Это лучший способ убедиться, что вы разобрались во всех деталях. Решая такие задачи, вы получите ценный опыт написания и отладки эффективных и надёжных программ. Задачи на программирование помогут вам почувствовать разницу между плохим (медленным) и хорошим (быстрым) алгоритмом. Вас также ждут тесты (где нужно выбрать правильные ответы из предложенных) и теоретические задачи (в них нужно доказать математическое утверждение). Наконец, в курсе есть также задачи повышенной сложности — менее стандартные задачи, которые не являются обязательными для прохождения курса. Получить удовольствие от решения этих задач смогут и те, кто уже знаком с базовыми алгоритмами.
Требования

Что нужно для старта

  • Знание одного из распространённых языков программирования (C++, Java, Python, Octave, Haskell) на базовом уровне: циклы, массивы, списки, очереди. Базовые знания математики: доказательство от противного, доказательство по индукции, логарифм, экспонента.
Аудитория

Для кого этот курс

  • Курс подойдёт студентам младших курсов и школьники, а также поможет всем, кто готовится к алгоритмической секции собеседования.
Содержание

Программа курса

10 занятий
ТемаЧто внутри
01Обзор

- Обзор
- Математические основы
- Алгоритмические собеседования

02Введение: теория и задачи

- Введение
- Числа Фибоначчи
- Наибольший общий делитель
- O-символика

03Введение: практика и разбор задач

- Практика на C++: Введение
- Практика на C++: Числа Фибоначчи
- Практика на C++: Наибольший общий делитель
- Практика на Python: Введение
- Практика на Python: Числа Фибоначчи
- Практика на Python: Наибольший общий делитель
- Практика на Java: Введение
- Практика на Java: Числа Фибоначчи
- Практика на Java: Наибольший общий делитель

04Жадные алгоритмы: теория и задачи

- Введение
- Коды Хаффмана
- Очереди с приоритетами

05Жадные алгоритмы: практика и разбор задач

- Практика на C++: Непрерывный рюкзак
- Практика на C++: Коды Хаффмана
- Практика на Python: Непрерывный рюкзак
- Практика на Python: Коды Хаффмана
- Практика на Java: Непрерывный рюкзак
- Практика на Java: Коды Хаффмана

06«Разделяй и властвуй»: теория и задачи

- Двоичный поиск
- Умножение чисел
- Умножение матриц
- Сортировка слиянием
- Быстрая сортировка
- Порядковые статистики
- Сортировка кучей
- Сортировки, основанные не на сравнениях
- Рекуррентные соотношения

07«Разделяй и властвуй»: практика и разбор задач

- Практика на C++: Двоичный поиск
- Практика на Python: Двоичный поиск
- Практика на Java: Двоичный поиск
- Практика на Java: Число инверсий

08Динамическое программирование: теория и задачи

- Введение
- Наибольшая возрастающая подпоследовательность
- Расстояние редактирования
- Рюкзак
- Перемножение последовательности матриц
- Независимые множества во взвешенных деревьях
- Обзор

09Динамическое программирование: практика и разбор задач

- Практика на C++: Расстояние редактирования
- Практика на Python: Расстояние редактирования
- Практика на Java: Расстояние редактирования

10Заключительный модуль

- Отзывы и предложения

01Обзор

- Обзор
- Математические основы
- Алгоритмические собеседования

02Введение: теория и задачи

- Введение
- Числа Фибоначчи
- Наибольший общий делитель
- O-символика

03Введение: практика и разбор задач

- Практика на C++: Введение
- Практика на C++: Числа Фибоначчи
- Практика на C++: Наибольший общий делитель
- Практика на Python: Введение
- Практика на Python: Числа Фибоначчи
- Практика на Python: Наибольший общий делитель
- Практика на Java: Введение
- Практика на Java: Числа Фибоначчи
- Практика на Java: Наибольший общий делитель

04Жадные алгоритмы: теория и задачи

- Введение
- Коды Хаффмана
- Очереди с приоритетами

05Жадные алгоритмы: практика и разбор задач

- Практика на C++: Непрерывный рюкзак
- Практика на C++: Коды Хаффмана
- Практика на Python: Непрерывный рюкзак
- Практика на Python: Коды Хаффмана
- Практика на Java: Непрерывный рюкзак
- Практика на Java: Коды Хаффмана

06«Разделяй и властвуй»: теория и задачи

- Двоичный поиск
- Умножение чисел
- Умножение матриц
- Сортировка слиянием
- Быстрая сортировка
- Порядковые статистики
- Сортировка кучей
- Сортировки, основанные не на сравнениях
- Рекуррентные соотношения

07«Разделяй и властвуй»: практика и разбор задач

- Практика на C++: Двоичный поиск
- Практика на Python: Двоичный поиск
- Практика на Java: Двоичный поиск
- Практика на Java: Число инверсий

08Динамическое программирование: теория и задачи

- Введение
- Наибольшая возрастающая подпоследовательность
- Расстояние редактирования
- Рюкзак
- Перемножение последовательности матриц
- Независимые множества во взвешенных деревьях
- Обзор

09Динамическое программирование: практика и разбор задач

- Практика на C++: Расстояние редактирования
- Практика на Python: Расстояние редактирования
- Практика на Java: Расстояние редактирования

10Заключительный модуль

- Отзывы и предложения

Документ после выпуска

Computer Science Center

Организатор

Автор курса

StepikStepik
Stepik — образовательная платформа и конструктор онлайн-курсов. Мы разрабатываем алгоритмы адаптивного обучения, сотрудничаем с авторами MOOC, помогаем в проведении олимпиад и программ переподготовки. Наша цель — сделать образование открытым и удобным. Stepik — широко известная российская образовательная платформа, основанная в 2013 году. На Stepik зарегистрировано более миллиона пользователей из России и стран СНГ. В настоящее время на Stepik представлены несколько тысяч учебных курсов на самые разные темы.
Подробнее об авторе
Мнения учеников

Отзывы о курсе

Оставьте отзыв

Расскажите о качестве обучения, поддержке и результате. Это поможет другим выбрать организацию осознанно.

Напишите ваш коментарий, не менее 30 символов

Нажимая кнопку, вы даете согласие на обработку персональных данных

Оставьте заявку

Консультант ответит на вопросы о курсе «Алгоритмы: теория и практика. Методы» и поможет разобраться в деталях обучения.

Комментарий ...

Нажимая кнопку, вы даете согласие на обработку персональных данных

Информация обновлена 7 сентября 2026 г.

Продолжить выбор

Похожие курсы

Bioinformatics Algorithms @UNBC
Bioinformatics Algorithms @UNBC

How do we sequence and compare genomes? How do we identify the genetic basis for disease? How do we construct an evolutionary Tree of Life for all species on Earth? When you compl…

Онлайн11 занятий
70 ₽
Основы C#
Основы C#

Курс несомненно подойдёт начинающим разработчикам, который хотят освоить современный и востребованный язык программирования. Курс мы начнём с изучения основ - встроенных в язык ти…

Онлайн10 занятий
3 999 ₽
Профессиональная переподготовка «Инженер-программист станков ЧПУ»
−8%256 часов
Профессиональная переподготовка «Инженер-программист станков ЧПУ»

▶️ Профессиональная переподготовка «Инженер-программист станков ЧПУ» с выдачей диплома. Дистанционное (онлайн) обучение в учебном центре «НЦПО». 🔥Обучение в рассрочку от 1320 руб.…

Онлайн3 занятий
Домашние заданияИнтерактивные тренажёры+3
17 250 ₽−8%
15 850 ₽от 1 320 ₽/мес на 12 мес.
AI-first разработка на Python
1 месяц
AI-first разработка на Python

Соберете и настроите свою профессиональную среду для разработки с агентами: от написания кода до ревью, автотестов и проверки безопасности.

Онлайн12 занятий
Домашние заданияИнтерактивные тренажёры+3
12 000 ₽от 704 ₽/мес на 24 мес.
Начать без затрат

Бесплатные курсы

Python для решения практических задач
Бесплатно
Python для решения практических задач

Научились решать простые задачи на питоне, но не можете понять, как сделать что-то полезное? Наш курс научит вас правильно гуглить! На примерах задач сбора данных (Data Scraping)…

Онлайн5 занятий
Бесплатно
Claude Code с нуля до реальных задач
Бесплатно1 месяц
Claude Code с нуля до реальных задач

Вы разовьёте аналитическое мышление, научитесь искать уязвимости и обеспечивать безопасность IT-систем. Освоите востребованную профессию даже с нулевым опытом в IT. Программа курс…

Онлайн
Бесплатноот 11 647 ₽/мес
Markdown синтаксис
Бесплатно2 часа
Markdown синтаксис

Этот курс предназначен для всех, кто работает с текстом в digital-среде. Вы освоите Markdown — универсальный язык разметки, который используют в GitHub, документации, блогах и соо…

Онлайн3 занятий
Бесплатно