Новый курс "Алгоритмы и структуры данных"

Общие подходы и полезные методики для решения сложных задач!
26 сентября 201663Geek Brains3533710

Без знаний алгоритмов начинающий программист часто изобретает велосипед вместо того, чтобы решать задачу уже проверенными способами. Современные языки программирования всячески облегчают жизнь программиста, выполняя множество "грязной" работы. С одной стороны, это хорошо, но с другой - многие современные программисты перестают понимать, как на самом деле работает компьютер. Знание алгоритмов и структур данных просто необходимо как начинающим, так и уже работающим программистам.

Пользуетесь ли вы списком или стеком? Знаете ли вы, как они работают? Если нет, то как вы можете быть уверены в правильности выбранного вами алгоритма? Умение определять и сравнивать их сложность - первый шаг к пониманию алгоритмов и структур данных.

Измерение сложности алгоритмов - что это такое? 

Начнём с другого вопроса: сколько времени уходит на обработку массива из десяти элементов? А сколько уйдёт на обработку тысячи, миллионов элементов? Измерение сложности алгоритма - это анализ времени, которое требуется для обработки очень большого количества данных. Такой процесс называется "асимптотический анализ".

Задача: алгоритм обрабатывает пятьсот элементов за 10 миллисекунд. Что будет, если загрузить в него ещё тысячу? Сколько времени уйдёт на обработку данных: десять минут, три года? Стоит ли задумываться об этом перед тем, как сдавать проект заказчику?

Новый курс GeekBrains "Алгоритмы и структуры данных"

На курсе мы подробно исследуем язык C - это превосходная возможность “пощупать” механизмы, которые лежат в основе современных фреймворков.

Чему вы научитесь:

  • Основам программирования на языке C;
  • Структурам данных и алгоритмам, которые лежат в основе их работы;
  • Общим подходам и полезным методикам для решения сложных задач;
  • Инструментам оценки сложности решаемых задач;
  • Создавать консольные программы на языке C в среде разработки QT;
  • Создавать программы, используя собственные алгоритмы;
  • Создавать собственные структуры данных: стеки, списки, деревья и др.;
  • Оценивать производительность программ;
  • Использовать “незащищённый” режим работы с памятью, основанный на указателях;
  • Динамически выделять и освобождать память;
  • Использовать рекурсию.

Мы добавили новый курс в профессии:

Посмотреть описание уроков и дату начала обучения можно здесь: