«Проникни в мир Pentest до 27 июля по специальной цене!»
Подробнее
Проходил 11 сентября 2018 года в 20:00

Открытый вебинар "Разработчик C++"
Cтранно рекурсивный шаблон

Открытый вебинар онлайн

Широко распространённая практика использования виртуальных методов для изменения функциональности во время исполнения может приводить к снижению производительности. Учимся достижению подобной цели без потери производительности и динамического полиморфизма. Также рассмотрим недостатки виртуальных методов с точки зрения производительности, поймём, как устроен статический полиморфизм, и как правильно употреблять аббревиатуру CRTP.
Преподаватель
Дмитрий Шебордаев

Запись

О курсе

Разработчик C++
50 000 ₽
5 месяцев
Начало 26 сентября
  • Умение писать на С++ правильно.
  • Понимание современных проблем языка и специфики его применения.
  • Освоение паттернов проектирования, принципов написания многопоточного кода.
  • Знание, как взаимодействовать с сетью, хранить и обрабатывать большие объемы данных.
  • Владение нюансами программирования на С++, которые отличают разработчика уровня Middle от Junior.
Обучено студентов 200+
32 практических …
Программа курса
Модуль 1
Современный C++
Модуль 2
Архитектура
Модуль 3
Параллельные вычисления
Модуль 4
Сеть
Модуль 5
Хранилища
Модуль 6
ML
Модуль 7
Проектная работа
Современный C++
CI/CD. C++11. C++14. C++17. Управление памятью. Шаблонная магия
Система сборки: build, test and deploy.
познакомиться и понять, как будем работать,
узнать, с кем и как общаться,
понять, зачем нужна автоматизация сборки,
расшифровывать аббревиатуру CI/CD,
подготовить стенд для выполнения самостоятельных работ
26 сентября, 20:00 — 21:30
Лектор: Дмитрий Шебордаев
Домашние задания: 1
ДЗ
ДЗ-1. Сборка и публикация пакета. В это самостоятельной работе создаём сборочную ферму для работы по схеме CI/CD на протяжении всего курса.

Что требуется сделать:
1. Выполнить задание, описанное в 01.homework.pdf
2. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом;
- ссылку на проект на travis-ci.org с историей (и хотя бы одной успешной) сборок;
- ссылку на репозиторий bintray.com, откуда можно скачать получившийся deb-пакет.
Особенности C++11. auto, lambda, tuple
узнать новые фичи C++11 (пригодится дальше по курсу),
обсудить особенности, которые важно учитывать
30 сентября, 20:00 — 21:30
Особенности C++11. Move, variadic templates.
освежить основы по C++11 (пригодится дальше по курсу),
узнать новые детали,
обсудить особенности, которые стоит учитывать
3 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-02. Фильтрация IP-адресов. В это самостоятельной работе применяем изученные на занятиях возможности новых стандартов языка (C++11/C++14). Используем ранее созданную сборочную ферму.

Что требуется сделать:
1. Выполнить задание описанное в 02.homework.pdf

2. Зарегистрироваться в http://acm.timus.ru
Решить первые пять простых задач:
1001 1000 1785 1293 2012

3. Опционально!
Реализовать constexpr-функцию нахождения ближайшей большей степени двойки
https://goo.gl/CBfjE9

4. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com с реализованным проектом;
- ссылку на проект на travis-ci.org с историей (и хотя бы одной успешной) сборок;
- ссылку на репозиторий bintray.com, откуда можно скачать получившийся deb-пакет;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач.
Сравнение C++11/C++14 с С++ 03
освежить знания по C++14,
узнать новые детали,
обсудить особенности С++ 14, на которые стоит обратить внимание
7 октября, 20:00 — 21:30
Обзор C++17. Constexpr lambda. Fold expression. Attributes. Type deduction.
разобраться с основными нововведениями С++ 17,
понять, в каких случаях они используются,
обойти несколько спорных моментов
10 октября, 20:00 — 21:30
Обзор C++17. If constexpr. Structured bindings. Statements with initializer. Std::filesystem.
разобраться с основными нововведениями С++17
понять кейсы использования
обcудить несколько тонких моментов
научиться пользоваться новым стандартом языка
14 октября, 20:00 — 21:30
Реализация умных указателей
запомнить правило: "взял память - верни, когда больше не нужна",
понять, как следовать этому правилу,
разобраться с разными типами умных указателей
17 октября, 20:00 — 21:30
Идея аллокаторов
осознать важность стратегий аллокации памяти,
понять, что можно использовать разные аллокаторы,
разобраться, как реализовать свой аллокатор,
понять, как расширяется std::vector, и почему именно так
21 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-03. allocator. В это самостоятельной работе реализуем собственный аллокатор, используем его в стандартных контейнерах. Пишем свой контейнер и пробуем использовать аллокатор.

Что требуется сделать:
1. Выполнить задание описанное в 03.homework.pdf

2. На acm.timus.ru выполнить задачи:
1409, 1877, 2001, 1264, 1787

3. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач.
Шаблонная магия
перестать бояться шаблонов,
пообещать себе перестать пользоваться макросами,
читать STL,
искать документацию
24 октября, 20:00 — 21:30
Архитектура
Принципы проектирования ПО, GRASP, шаблоны GoF, STL, Boost
Принципы проектирования ПО
разобраться, зачем нужны принципы;
научиться пользоваться принципами;
научиться читать UML диаграммы.
28 октября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-04. Doxygen. В это самостоятельной работе применяем полученные знания про шаблоны, реализуем функционал вывода IP-адреса в общем виде, подключаем к своему проекту doxygen и генерируем документацию.

Что требуется сделать:
1. Выполнить задание описанное в 04.homework.pdf

2. Решить первые 15 задач на acm.timus.ru (от простых к сложным). Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty

3. Сделать ревью решений ДЗ-02 двух коллег (которые его выполнили)

4. Опционально: предоставить примеры, из своей практики, использования Принципов Проектирования

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью.
GRASP
обращать внимание на архитектурные детали кода,
улучшать метрики кода,
находить ошибки в коде коллег
31 октября, 20:00 — 21:30
Шаблоны GoF. Порождающие.
читать и использовать паттерны проектирования,
понять ценность экспериментов с паттернами
4 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-05. Editor.. В это самостоятельной работе разрабатываем архитектуру проекта, применяем полученные знания принципов проектирования, используем паттерны, генерируем документацию.

Что требуется сделать:
1. Выполнить задание, описанное в 05.homework.pdf

2. На acm.timus.ru решить любые 3 задачи с уровнем сложности от 100 до 150.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-03 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-02.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны GoF. Структурные
читать и использовать паттерны проектирования,
понять ценность экспериментов с паттернами
7 ноября, 20:00 — 21:30
Шаблоны GoF. Поведенческие. Command, Interpreter, Iterator, Mediator, Memento, Chain of responsibilily
читать и использовать паттерны проектирования,
понять ценность экспериментов с паттернами
11 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-06. Matrix.. В это самостоятельной работе создаём проект бесконечной разряженной матрицы с использованием паттернов проектирования, не забываем про принципы и документацию.

Что требуется сделать:
1. Выполнить задание, описанное в 06.homework.pdf

2. На acm.timus.ru решить любые 3 задачи с уровнем сложности от 151 до 200.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-04 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на РЕВЬЮ ДЗ-03.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны GoF. Поведенческие. Observer, State, Strategy, Template method, Visitor
научиться читать паттерны проектирования,
научиться использовать паттерны,
понять ценность экспериментов.
14 ноября, 20:00 — 21:30
STL. Контейнеры.
понять, какие типы контейнеров есть в STL;
настраивать поведение контейнеров.
18 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-07. cmd. В это самостоятельной работе реализуем проект обработки последовательностей команд фиксированного и произвольного размера. Стремимся к снижению зависимостей между модулями.

Что требуется сделать:
1. Выполнить задание, описанное в 07.homework.pdf

2. На acm.timus.ru решить 3 любые задачи с уровнем сложности от 201 до 300.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-05 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-04.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
STL. Алгоритмы.
понять, зачем нужны алгоритмы в STL и почему их так много;
использовать алгоритмы в STL
21 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-08. timus. В это самостоятельной работе практикуемся в использовании STL, стараемся использовать разные контейнеры и алгоритмы для решения разных задач.

Что требуется сделать:
1. Выполнить задание, описанное в 08.homework.pdf

2. Опционально: на acm.timus.ru решить 3 любые задачи с уровнем сложности от 301 до 400.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-06 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-05.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Boost. Разное.
понять философию проекта Boost,
читать документацию Boost,
выбирать и применять библиотеки
25 ноября, 20:00 — 21:30
Boost. Паттерны проектирования
посмотреть на реализацию паттернов проектирования с использованием Boost,
расширить знания про библиотеку.
28 ноября, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-09. Boost Concept Check Library. В это самостоятельной работе разбираемся с понятием концептов, практикуемся в использовании реализации концептов в библиотеке Boost (BCCL).

Что требуется сделать:
1. Выполнить задание, описанное в 09.homework.pdf

2. Опционально: на acm.timus.ru решить 3 любые задачи с уровнем сложности от 401 до 450.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Сделать ревью решений ДЗ-07 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-06.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Параллельные вычисления
Многопоточность, шаблоны многопоточности, асинхронное программирование, Lock-free, Атомарные типы данных и модели памяти.
Многопоточность
использовать потоки в своих приложениях,
решать основные проблемы многопоточности,
использовать инструменты стандартной библиотеки
2 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-10. Многопоточная версия cmd. В это самостоятельной работе практикуемся в использовании потоков.

Что требуется сделать:
1. Выполнить задание, описанное в 10.homework.pdf

2. Опционально: на acm.timus.ru решить 3 любые задачи с уровнем сложности от 451 до 500.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: сделать ревью решений ДЗ-09 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-07.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Шаблоны 5
понимать многопоточные паттерны,
использовать многопоточные паттерны для решения задач
5 декабря, 20:00 — 21:30
Асинхронное программирование
понять разницу между многопоточностью, параллельностью и асинхронностью,
выбирать подходящее решение для своей задачи,
использовать возможности стандартной библиотеки
9 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-11. Асинхронная версия cmd. В это самостоятельной работе используем асинхронный подход для решения задания. На этот раз разрабатываем библиотеку, а не исполняемый файл.

Что требуется сделать:
1. Выполнить задание, описанное в 11.homework.pdf

2. Опционально: На acm.timus.ru решить 3 любые задачи с уровнем сложности от 501 до 550.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: сделать ревью решений ДЗ-10 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-08.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Lockfree DS
разобраться в том, что такое lock-free подход,
видеть сценарии его использования,
читать lock-free код
12 декабря, 20:00 — 21:30
Атомарные типы данных
использовать атомарные операции в своём коде,
разобраться в принципах и стоимости их работы
16 декабря, 20:00 — 21:30
Сеть
Сетевое взаимодействие, асинхронный ввод-вывод (Boost.Asio)
Сетевое взаимодействие
понять, зачем нужна сеть в программах на C++ и как решать возникающие проблемы
19 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-12. Асинхронная сетевая версия cmd. В это самостоятельной работе используем асинхронный подход для решения задания. На этот раз разрабатываем библиотеку, а не исполняемый файл.

Что требуется сделать:
1. Выполнить задание, описанное в 12.homework.pdf

2. Опционально: На acm.timus.ru решить 2 любые задачи с уровнем сложности от 551 до 600.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: сделать ревью решения ДЗ-11 двух коллег (которые его выполнили).

4. Опционально: сделать ревью на ревью ДЗ-09.

5. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- опционально: ссылки на выполненные ревью;
- опционально: ссылку на ревью на ревью.
Асинхронный ввод/вывод
использовать библиотеки для работы с сетью,
выбирать подходящие инструменты.
23 декабря, 20:00 — 21:30
Хранилища
РСУБД, NoSQL, MapReduce, ORM
РСУБД
использовать хранилища данных в своих проектах
26 декабря, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-13. outer join. В это самостоятельной работе создаём сервер по принципу РСУБД. Реализуем несколько операций над данными.

Что требуется сделать:
1. Выполнить задание, описанное в 13.homework.pdf

2. Опционально: На acm.timus.ru решить 2 любые задачи с уровнем сложности от 601 до 650.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: выполнить ревью решения ДЗ-12 двух коллег (которые его выполнили).

4. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- опционально: ссылки на выполненные ревью.
Key Value
разобраться в том, что же такое NoSQL,
выбирать решение под задачу.
30 декабря, 20:00 — 21:30
Много данных
разобраться в идеологии map reduce,
немного поэкспериментировать при ее реализации
2 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-14. mapreduce. В это самостоятельной работе реализуем каркас mapreduce с использованием полученных на занятии знаний. Получившийся каркас используем для решения задачи нахождения минимального префикса для идентификации строки.

Что требуется сделать:
1. Выполнить задание, описанное в 14.homework.pdf

2. Опционально: На acm.timus.ru решить 2 любые задачи с уровнем сложности от 651 до 700.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: выполнить ревью решения на решения ДЗ-13 двух коллег (которые его выполнили).

4. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- опционально: ссылки на выполненные ревью.
ORM
разобраться, зачем нужны ORM,
применять их в своих приложениях
6 января, 20:00 — 21:30
ML
Задачи ML, кластеризация, классификация, регрессия.
Dlib. Кластеризация.
разобраться, зачем нужно машинное обучение,
решать базовые задачи ML,
читать документацию Dlib
9 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-15. Кластеризация. В это самостоятельной работе с использованием библиотеки dlib решаем задачу кластеризации с помощью машинного обучения.

Что требуется сделать:
1. Выполнить задание, описанное в 15.homework.pdf

2. Опционально: На acm.timus.ru решить 1 любую задачу с уровнем сложности от 700 до 800.
Отсортированный по сложности список:
http://acm.timus.ru/problemset.aspx?space=1&page=all&skipac=False&sort=difficulty
Если выбрать сложно, есть ещё списки задач по темам (ближе к концу страницы):
http://acm.timus.ru/problemset.aspx

3. Опционально: выполнить ревью решения на решения ДЗ-14 двух коллег (которые его выполнили).

4. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com;
- ссылку на аккаунт на acm.timus.ru со списком принятых задач;
- опционально: ссылки на выполненные ревью.
Dlib. Классификация.
разобраться с принципами классификации и решать задачи
13 января, 20:00 — 21:30
Dlib. Регрессия.
разобраться с формулировкой и решение задачи регрессии
16 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
ДЗ-16. Недвижимость. В это самостоятельной работе с использованием библиотеки dlib решаем сразу несколько задач кластеризации и классификации, выдаем рекомендации.

Что требуется сделать:
1. Выполнить задание, описанное в 16.homework.pdf

2. Да и хватит на этом. Пора приступать к проекту.

3. Отправить на проверку в "Чат с преподавателем":
- ссылку на свой репозиторий на guthub.com;
- ссылку на проект на travis-ci.org;
- ссылку на репозиторий bintray.com.
Проектная работа
Заключительная часть курса о программировании на С++ посвящена проектной работе.
Мало что доставляет столько же удовольствия, как самостоятельно реализованный проект на выбранную самостоятельно тему на основе знаний, полученных на курсе.
В процессе написания (и даже в процессе выбора темы) можно получить консультации преподавателей.

При удачном стечении обстоятельств (в основном, при наличии должного усердия со стороны студента) проект станет достойным примером кода, который можно будет показывать потенциальным работодателям в качестве портфолио. Таким образом обучение программированию завершится большой практической работой, и вы будете гордиться тем, что сделали своими руками.
защитить свой проект и получить рекомендации экспертов
20 января, 20:00 — 21:30
Домашние задания: 1
ДЗ
Проектная работа. Преполагаемые этапы выполнения:
1. Проработанные требования к реализации
2. Планируемая архитектура
3. Полная итоговая реализация.
Сдавать можно как по частям, так и сразу итоговый вариант.

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

Преподаватель

Дмитрий Шебордаев
Rambler&Co
Руководитель отдела разработки технологий в Rambler&Co
Получил образование по специальности «Прикладная математика» в Московском государственном университете экономики статистики и информатики.
Начинал рядовым разработчиком в компании, автоматизирующей процессы розничной торговли. Автор одной из самых популярных систем в РФ и бывших республиках. Не прекращая активной деятельности в разработке, прошёл путь до руководителя. Последние несколько лет работает в области информационного поиска в крупной российской ИТ-компании. Остаётся верен своей профессии свыше 20 лет. Читает образовательные курсы по специальности.
Преподаватель курсов:
Разработчик C++