Алгоритмы и структуры данных от А до Я
What you'll learn
- Реализация основных структур данных: список, стек, очередь и понимание того как они устроены
- Корректное использование структур данных встроенных в BCL
- Подготовка к собеседованиям, на которых вас будут мучить алгоритмами
- Деревья, хеш-таблицы и др. структуры данных
- Различные алгоритмы
Requirements
- Знание C# или Java на базовом уровне
- Из инструментов достаточно Visual Studio Community Edition
Description
В этом курсе мы пройдём основные алгоритмы и структуры данных. Примеры кода написаны на C#, однако 99% материала будет ясно любому Java-программисту, поскольку синтаксис языков очень схож, а примеры кода алгоритмов и структур данных так вообще будут почти полностью совпадать и в C# и в Java. В курсе есть лишь несколько лекций посвящённых исключительно библиотекам C#.
Зачем изучать алгоритмы и структуры данных?
Алгоритмы и структуры данных составляют основы программирования.
Понимание алгоритмов и структур данных – одно из самых важных
требований для устройства на работу в хорошие компании.
Вам придётся решать множество задач на собеседованиях связанных с алгоритмами и структурами данных. Действительно, вы, конечно, сможете прожить и без понимания алгоритмов и структур данных. Однако, вы сможете так спокойно жить до тех пор, пока вы не встретитесь с реальной проблемой, решение которой потребует грамотного выбора подходящей структуры данных или потребует кастомизации известных алгоритмов. Если вы никогда не сталкивались с подобными проблемами, то, поверьте, это всего лишь вопрос времени. Однажды, вы столкнётесь с такой проблемой и при отсутствии глубокого понимания структур данных и алгоритмов, вы почувствуете себя опозоренным и беспомощным. Вы застрянете.
Слабость понимания алгоритмов и структур данных сильно понижает ваши шансы пройти собеседование в хорошую компанию.
Почти все компании предпочитают нанимать разработчиков, хорошо разбирающихся в алгоритмах и структурах данных. Запомните это. Не откладывайте изучение фундаментальных концепций.
Более мощное «железо» – не всегда хорошее/доступное решение проблем связанных с производительностью. Иногда, возникает необходимость разрабатывать программы для очень низко производительных устройств. Использование какого-либо железа зачастую так же зависит от бюджета заказчика, поэтому далеко не всегда выбор железа диктуется разработчиком.
Понимание того, что происходит «под капотом» весьма желательно. Хотя бы на один уровень в глубину. Действительно, если вы не понимаете как устроен список, иногда вы будете принимать не оптимальные или вообще неверные решения.
Почему этот курс?
Вы можете меня спросить «почему я должен взять именно ваш курс»? И вот мой ответ:
этот курс покрывает множество тем
я старался сделать этот курс не слишком сухим
курс посвящён не только алгоритмам и структурам данных, но также освящает внутреннее устройство структур данных и алгоритмов встроенных в основную библиотеку классов .NET (библиотека классов в .NET Core в плане структур данных и алгоритмов устроена точно так же)
курс практический с домашними заданиями и решениями
курс поможет вам пройти технические собеседования
курс сделан профессиональным разработчиком с большим реальным опытом
и множество др. причин :)
Что внутри курса?
На данный момент курс покрывает следующие темы:
Введение в алгоритмы и структуры данных: структура данных, абстрактный тип данных,
разница между этими понятиями. Что такое алгоритм и почему всё это для нас важно?Введение в анализ алгоритмов: сколько времени займёт исполнение программы,
построение log-log графика, аппроксимации, порядок роста сложности (Big-O нотация), потребление памятиМассивы: массивы в C#, массивы в памяти, сложность операций на массивах
Алгоритмы сортировки: пузырьковая, выборкой, вставками, рекурсия, Шелл-сортировка, слиянием, быстрая, стабильность алгоритмов сортировки
Списки: List встроенный в BCL, узлы (ноды), связный список (односвязный, двусвязный),
LinkedList встроенный в BCLСтек: теория и практика, на массиве,
на связном списке, встроенный в BCLОчереди: теория и практика, на массиве, кольцевой буфер,
на связном списке, встроенная в BCLАлгоритмы поиска: линейный, бинарный
Символьные таблицы: введение, API, таблицы на последовательном поиске,
таблица на бинарном поискеХеш-таблицы: введение, хеширование, GetHashCode, подходы к разрешению коллизий: раздельные цепочки и линейное пробирование, тип Dictionary встроенный в BCL, типы представляющие множества встроенные в BCL
Деревья: двоичное дерево поиска и его реализация (больше будет добавлено в будущем)
Пирамиды: введение, пирамиды и массивы, пирамидальная сортировка
Различные алгоритмы: эта секция будет расширяться, а пока покрывает алгоритм «решето Эратосфена»
Зачисляйтесь на курс и вы не пожалеете! Не забывайте, что Udemy даёт 30 дней на возврат денежных средств, так что даже если вам курс не понравится – вы ничем не рискуете, всегда можно вернуть деньги парой кликов.
Who this course is for:
- C#-разработчики, которые хотят изучить алгоритмы и структуры данных на их любимом языке
- Начинающие разработчики, которые готовятся к поиску работы
Instructor
Я благодарен за то, что люблю своё дело.
Начинал карьеру, будучи аспирантом, участвуя в конкурсе программных проектов от Майкрософт - ImagineCup.
Работал с платформой .NET с 2003 года. Профессионально занимался проектированием и реализацией ПО больше 10 лет, преимущественно на платформе .NET. Люблю работать над созданием богатых и мощных приложений с использованием современных технологий. Сертифицированный специалист по WPF и WCF. Один из координаторов московских .NET митапов MskDotNet.
О стиле преподавания Самое главное, что характеризует мои курсы - выжимка самого необходимого. Не люблю растекания мыслями по древу (если ни о чём). Краткость - сестра таланта и я верю в то, что в современную эпоху информационной перегруженности - необходимо сосредотачиваться на самом главном и отсеивать "лишнее" до тех пор, пока это "лишнее" действительно не понадобится.
Студентам Fake it Till You Make it! Если вы не знаете, что это такое - то, вкратце, это означает следующее: притворяйся, пока не получится. Есть отличная статья Скотта Хансельмана (крутого девелопера и известного блогера), которая называется "I'm a phony. Are you?" ("Я пустышка. А вы?). Эта статья объясняет почему мы должны притворяться теми, кем хотим стать - как-бы имитировать деятельность того, кем вы хотите стать. Хотите стать senior developer? Имитируйте его деятельность, старайтесь делать всё то же, что делает senior developer и так или иначе - вы им станете. Все программисты в той или иной степени некомпетентны. Весь вопрос в границах некомпетентности. Нет ни одного программиста-супер-звезды, который ни чувствовал бы себя профаном постоянно или, как минимум, периодически. Поэтому - учиться, учиться и ещё раз учиться. Нет унынию. Fake it Till You Make it!
Интересы:
C#, WPF, WCF, Xamarin, DDD, TDD, Unit-testing, NUnit, NSubsitute, Design & Architecture