Logos IT Academy проводить навчання для дітей! Детальніше

C++ Advanced

Курс не для новачків. Передбачається досить впевнене володіння основними конструкціями мови С++, здатність самостійно запрограмувати хоча б сортування або двійковий пошук. Цільова аудиторія – молодший розробник з досвідом роботи від півроку, який хоче отримати серйозний технічний стрибок, необхідний для подальшого розвитку. Мета курсу – цей стрибок надати.

С++ – мова із надзвичайно багатим вибором засобів. Для ефективного програмування слід вміти користуватися ними, а найголовніше – вміти вибирати правильні засоби, ті, які найкраще підходять до поставленої задачі. Не винаходити велосипедів, але й не стріляти з гармати по горобцях.

Крім того, володіння засобами мови програмування важливе, щоб мати можливість ефективно виразити свої ідеї, могти запрограмувати вирішення ваших задач. Однак, навіть ідеальне знання мови не наблизить до реального та ефективного володіння нею без знання того, як саме її використовувати на практиці. А практичне програмування завжди включатиме в себе взаємодію із зовнішнім світом – із сторонніми бібліотеками, framework-ами, toolkit-ами, тощо. З іншого боку, набір таких засобів гігантський. Неможливо передбачити, із якими з них вам доведеться мати справу. Тому необхідним є вміння самостійної роботи з ними, доповнене знанням, як типово вирішуються конкретні задачі. Даний курс включає роботу із підбіркою популярних засобів, із якими може стикатися програміст на С++, ілюструючи принципи, прийняті в індустрії.

Для проходження курсу необхідним є впевнене володіння основними засобами С++, але знання всіляких тонкощів не є критичним – воно приходить із практикою.Курс є практичним – в процесі слухачі пишуть власні програми, на прикладі розробки яких вивчаються відповідні принципи.

Програма навчання

Засоби продуктивного програмування:

- Роздільна компіляція програм. Компонування;

- Командний рядок. Unix shell;

- Системи автоматичної компіляції. Make, CMake, autotools;

- Розробка програмних бібліотек. Статичні та динамічні бібліотеки;

- Огляд інтегрованих середовищ розробки – IDE;

- Системи контролю версій. SVN, Git;

- Огляд компіляторів;

- Оптимізація та невизначена поведінка (undefinedbehavior);

- Статичні аналізатори коду: Cppcheck, cpplint, PVS-Studio;

- Засоби боротьби із витіканням пам'яті (memoryleaks) та переповненням буферів.

Перша зовнішня бібліотека, curses - робота з консольним вводом-виводом:

- Інсталяція. Використання скомпільованого варіанту. Робота із документацією;

- Самостійна компіляція.

Основні принципи GU:

- Основні компоненти графічного представлення GUI -- вікна, меню, ікони, засоби керування, віджети;

- Засоби взаємодії із GUI - фокус, курсори, виділення, тощо;

- Поняття про повідомлення;

- Типові віджети: кнопки, текстові поля, випадні та комбіновані списки, радіокнопки, таблиці, полоси прокрутки;

- Діалоги;

- Ілюстрація API для роботи із GUI, що надаються операційними системами, на прикладі Win32 API;

- Поняття про об'єктно-орієнтовані засоби розробки графічних інтерфейсів. Концепція framework-ів та toolkit-ів.

Популярний, кросплатформовий, Open Source фрейморк, Q:

- Основні компоненти – QApplication, віджети, менеджери розташування;

- Сигнали та слоти. MOC– meta-objectcompiler;

- Розробка програм із використанням редактора форму QtCreato;

- Діалоги;

- Розробка власних віджетів;

- Робота з пристроями вводу-виводу. Файли, потоки, послідовний порт;

- Паттерн MVC --- Model-View-Controller, на прикладі його реалізації в Qt;

- Середовище QtCreatorта QMakeяк система автоматичної побудови програм.

Багатопоточність та паралельні обчислення:

- Ідея багатопоточності. Потоки;

- Типові APIдля роботи з багато поточністю: pthread, WinThreads, threadsв С++11, реалізація потоків від Qt;

- Синхронізація. Примітиви синхронізації – мютекси, семафори. Умовні змінні. Атомарні операції та змінні. Thread-local storage;

- Використання std::async, std::future і std::promises як високорівневих засобів паралельних обчислень;

- Ідея map-reduce на прикладі QtConcurrent;

- Огляд OpenMPI.

Взаємодія програм на С++ з базами даних:

- Загальні поняття. Системи керування базами даних. MySQL, SQlite;

- Мова SQL – Structured Query Language;

- Інсталяція MySQL. Коротко про адміністрування. Створення баз та маніпуляція ними. Libmysqlclient;

- Використання MySQL C API;

- Connector/C++ --- засіб написання клієнтів для MySQL на C++;

- SQLite C API;

- Низькорівневі засоби Qtдля роботи із базами даних;

- Моделі Qt, призначені для роботи із базами даних в рамках MVC.

Робота із мережами:

- Загальні поняття;

- Сокети. APIдля роботи із сокетами в Unix, Win32;

- Високорівневі APIна прикладі Qt;

- Протоколи прикладного рівня – HTTP, FTP, SMTP, POP3.

Огляд бібліотеки Web Toolkit – Wt, призначеної для побудови web-програм:

- Інсталяція бібліотеки;

- Основні принципи на прикладі "Hello, world!";

- Обробка повідомлень, сигнали та слоти;

- Огляд віджетів;

- Розгортання програм, написаних з використанням wt. Поняття сесії.

Огляд програмування вбудованих систем з використанням C++:

- Мікроконтролери -- принципи організації. Використання мікроконтролерів;

- Сімейства AVRта SMT32. Платформа Arduino та STM32-discovery;

- GPIO --- основи взаємодії із зовнішнім світом;

- Таймери;

- Шини -- I2C, SPI.

Чисельні розрахунки:

- Огляд бібліотека eigen: робота із матрицями, векторами, масивами даних. Приклад бібліотеки, що складається виключно із файлів заголовків;

- Огляд бібліотеки GSL -- GNU Scientific Library;

- VTK – Visualization Toolkit.

Корисні технології та концепції C++:

- Ідіома RAII--- Resource Acquisition Is Initialization. Розумні вказівники;

- Шаблон (паттерн) проектування NVI--- Non-VirtualInterface;

- Шаблон (паттерн) проектування Visitor;

- Шаблон (паттерн) проектування Singleton.

boost -- набір високоякісних C++-бібліотек:

- Інсталяція;

- boost як засіб проти "велосипедобудування" --коли використовувати, а коли ні;

- Невеликі бібліотеки для вашої зручності: Foreach, Lexical Cast, Accumulators, Any, Algorithm, Result Of, Circular Buffer, Operators, String Algo, Timer, Utility;

- Робота з файловою системою, Filesystem;

- Регулярні вирази: Regex;

- Збереження та завантаження класів: Serialization;

- Робота із мережею: Asio;

- Числа довільного розміру: Multiprecision, раціональні числа: RatioiRational;

- Сигнали та слоти: Signals2;

- Генерація випадкових чисел: Random;

- Робота з часом, Timer, Chronoта Date Tim;

- Типобезпечний вивід із стрічкою формату, Format;

- Простий парсер текстів: Tokenizer;

- Лямбда-функції, потоки, кортежі (tuple), Bind, Functionта інші засоби C++11 в C++98/03;

- Огляд GIL, Locale, Log, MPI.

Вартість

Кількість занять

16

Кількість академ. Годин

32

Ціна індивідуального курсу

20000

ціна групового курсу

6500

Онлайн запис






Деталі курсу

Тривалість одного заняття 90 хв. (2 академічні години)

Можливе написання індивідуальної програми під Вас!

По закінченню курсу видається сертифікат.

Викладачі

Записатися

 






×
Записатися

 







×
Лист директору

 




×