- PVSM.RU - https://www.pvsm.ru -

UNIGINE С++ School: бесплатный онлайн-курс для продвинутых

В феврале мы запустили бесплатный онлайн-курс [1]программирования на С++, рассчитанный на продвинутых разработчиков. Цели было в основном две — сделать так, чтобы в мире было больше хороших программистов, а заодно набрать себе пополнение в команду. Идея взлетела: участвовать в первом наборе захотело 185 человек из 57 городов и 8 стран. В курсанты попало 30 из них, но со словами «неинтересно» ушёл только 1. Остальные по итогам курса сообщили, что было в целом круто и они с пользой провели время.

UNIGINE С++ School: бесплатный онлайн-курс для продвинутых - 1

Обкатав всю затею и учебный процесс на начальном бета-наборе, мы решили повторить курс ещё раз. Набор уже во всю идёт, подать заявку можно до понедельника, 26 июня. Чему, как и кто учит — рассказываем внутри.

Чему учат?

UNIGINE С++ School [1] — это курс для тех, кто уже умеет и практикует C++, любит выжимать производительность, но пока ещё не Степанов, не Александреску и не компания EA. И свой первый STL ещё не написал.

Мы назвали «продвинутым», но на самом деле стоило назвать его «углубленным». В целом курс для тех, кому уже становится небезразлична скорость работы программ и детали внутреннего устройства важных чёрных ящиков. Если хотите посмотреть, как ускорять программы в разы, если вам интересен достаточно низкий уровень кода и его связь с железом, и если вы хоть иногда считаете миллисекунды — курс наверняка вам будет полезен.

Программа занятий в деталях

Занятие #1.
Мировые константы.

Про стоимости операций CPU/RAM/HDD, про устройство частей C++ рантайма, про вытекающие оптимизации.

Занятие #2.
Всем «известные» азы.

Массивы, вектора, баги. И как правильно бенчмаркать.

Занятие #3.
Списки всех сортов.

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

Занятие #4.
Хеши и все такое.

Cами таблицы, функции, коллизии и по самые фильтры Блума. И ещё чуток KV-структур, если успеем.

Занятие #5.
Композитные структуры.
Складываем любое нужное слово из только что изученных букв В, С, Х.

Занятие #6.
Деревья и кучи (heaps).

И укладка «сложной» структуры в тупой массив.

Занятие #7.
Обзор эзотерических структур данных.

От тупого circular buffer до адовых HyperLogLog.

Занятие #8.
Бонус: обзор устройства 3D графики.
От векторов и матриц (с разбором) и до современных техник рендера (без подробного разбора).

Как все происходит?

Всего в первом курсе 8 лекций, 7 практических занятий и домашние работы. По первому опыту учёба предстоит очень интенсивная, но и эффект соответствующий.

Кто ведёт?

Придумал курс и ведёт занятия Андрей Аксёнов, он же Шодан [2], ведущий разработчик команды 3D-движка UNIGINE [3], а также автор поискового движка Sphinx, на котором работает Хабр, например.

Отзывы участников первого набора

Магия оптимизации, которую Шодан показал в первом задании, выглядела впечатляюще. Узнал, в каких местах можно обогнать std и что это делается малой кровью. В первый раз услышал об устройстве hash-таблиц. Узнал, как бенчмаркать свой код, чтобы компилятор всё не соптимизировал. Не смотреть информацию в книгах/статьях, а проверять самому, потому что время идёт, многое меняется и то, что раньше работало медленно, сейчас может быть реализовано достаточно быстро.

Антон Тарасов, Новосибирск

Очень много нового, причём, в тех областях, которые считал давно проясненными и закрытыми для экспериментов.
— Об особенностях использования STL. Ещё раз покопался в его внутреннем устройстве, с более критическим подходом. С вопросом «А что в нём плохо?».
— Много новых фишек про оптимизацию программ. Часть из них слышал — но «мимо», не применял. Как все эти бесконечные закладки в браузере из серии «будет время — разберусь».
— Некоторые вещи были для меня совсем новые. Trie-tree, например. Даже не слышал о такой штуке. Не так, чтобы это перевернуло вселенную вверх ногами, но рассказано это было понятно, и наверняка пригодится.

Сергей Коптев, Москва (ООО ПФ «Логос»)

Что узнал нового? Что STL действительно можно уделать на порядок, и это проще чем кажется. Что для внятной оптимизации нужно знать намного больше чем мне известно сейчас.

Ренат Дусаев, Томск

Что узнал? На самом деле, много. Понял насколько крут и на самом деле «разноуровнев» C++. Тематические штуковины (например размытый ключ деревьев на примере). Ссылки, подобранные уже в скайпе. Например про битхаки в духе nonbranching code.

Александр Баранов, Красноярск

Никогда не пробовал замерять собственно скорость работы STL контейнеров, и думал что он и так норм. В процессе курса я был вынужден этим заняться и своими руками получил нужные мне результаты на собственном железе. Кое-какие взгляды на STL поменялись.

Оценил inplacement new подход к инициализации объектов и malloc для аллокации памяти. Раньше всегда пользовался new, но, видимо, просто не вставало нужды что-то оптимизировать до такой степени.

Игорь, Томск

Узнал про Bloom filter, экзотические и композитные структуры данных. Маленькие трюки, типа компактной укладки сложных структур в линейный массив. Привёл в порядок голову и систематизировал знания. Была пара моментов, когда думал что знаешь как оно работает, а потом случалось озарение. Сборка собственного велосипеда оказалась не таким очевидным делом.

Павел Наказненко, Красноярск

Хочу учиться, как поступить?

Курс бесплатный, но предполагает наличие у вас базовых скиллов. Так что зачислять в курсанты будем по итогам входного тестирования. Подать заявку и пройти входной тест можно на сайте школы [1] до понедельника, 26 июня.

Решайтесь и записывайтесь!

А на закуску, тизер нового сезона.

Автор: UNIGINE

Источник [4]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/258428

Ссылки в тексте:

[1] бесплатный онлайн-курс : http://cpp-school.unigine.com?utm_source=habrahabr&utm_medium=post&utm_campaign=cpp_school_1_1

[2] Шодан: https://habrahabr.ru/users/shodan/

[3] 3D-движка UNIGINE: http://unigine.com/en/products/engine

[4] Источник: https://habrahabr.ru/post/331330/?utm_source=habrahabr&utm_medium=rss&utm_campaign=best