Zaawansowane programowanie w języku C++

LICZBA DNI: 3 (24h)

KOD KURSU: CPP/ADV

POZIOM SZKOLENIA:

# c++

# multithreading

# gof

# solid

# grasp

# machine-learning

Najbliższy termin:

7 czerwca 2021

PROWADZI:

Witold Wysota

2680 PLN netto + 23% VAT

Jeszcze 8 miejsc w tej cenie.

  • stacjonarne
  • zdalne

STACJONARNE

W CENIE

  • 3 dni pracy z trenerem
  • Materiały szkoleniowe
  • Lunch
  • Certyfikat ukończenia szkolenia

ZDALNE

W CENIE

  • 3 dni pracy z trenerem na żywo online
  • Materiały szkoleniowe
  • Certyfikat ukończenia szkolenia

Czy wiesz, że możesz uzyskać nawet do 100% DOFINANSOWANIA na szkolenie? Napisz do nas »

Weź udział w szkoleniu

Termin

Lokalizacja

Trener

Cena / os

7

czerwca

Warszawa,

Zdalne,

2680 PLN netto
+ 23% VAT

Termin

7

czerwca

Lokalizacja

Warszawa,

Zdalne,

Trener

Cena / os

2680 PLNnetto
+ 23% VAT

Powiadom
o kolejnych terminach

O szkoleniu

DLA KOGO?

Programiści programujący w języku C i C++ w środowisku GNU/Linux lub MS Windows

Osoby znające w podstawowym zakresie system szablonów STL

Programiści tworzący oprogramowanie na platformie systemowej GNU/Linux lub MS Windows

Programiści tworzący aplikacje głównego nurtu oraz aplikacje sieciowe

WYMAGANIA

Posługiwanie się wybranym środowiskiem IDE (Eclipse, NetBeans, Vim)

Znajomość koncepcji programowania obiektowego, systemowego i aplikacyjnego

Znajomość narzędzi do tworzenia aplikacji z rodziny gcc i binutils

Umiejętność posługiwania się narzędziem debuggera

Znajomość koncepcji związanych z programowaniem w języku C++ na poziomie podstawowym i średnio zaawansowanym

Dodatkowo mile widziana jest także znajomość aspektów sprzętowych platformy x86 (przydzielanie i zarządzanie pamięcią, alokacja rejestrów, konwencje wywołań, optymalizacje)

ZALETY

Uczestnicy szkoleń poznają aspekty programowania wielowątkowego, uogólnionego oraz wstępnie koncepcje leżące u podstaw metaprogramowania ze szczególnym uwzględnieniem cech typów

Zajęcia uwzględniają także potrzeby testowania aplikacji tworzonych w języku C++ z użyciem narzędzi wspierających proces TDD oraz BDD. Jako biblioteki wspierające, wykorzystane są: Google Test, Boost.Test oraz Catch

Szczególny nacisk w trakcie zajęć kładziemy na zrozumienie aspektów wydajności oraz gospodarowania zasobami z użyciem wskaźników inteligentnych. Zajmujemy się także zarządzaniem czasem życia obiektu w odniesieniu do mechanizmu wyjątków oraz semantyki r-referencji

Jako techniki tworzenia aplikacji obiektowej, prezentowane są klasy wytycznych, tradycyjne wzorce projektowe (GoF) oraz nie-ortodoksyjne podejścia z kręgu programowania funkcyjnego

Na zajęciach posługujemy się technologiami otwartymi z dostępem do kodu źródłowego

Zajęcia prowadzone są przez doświadczonych praktyków, którzy na co dzień stosują technologie związane z językiem C++ w rzeczywistych projektach. W trakcie zajęć używamy technologii i środowisk otwartych

Kameralne grupy - szkolenia technologiczne prowadzimy w grupach liczących do 8 osób. Pozwala to na indywidualne podejście oraz aktywizację każdego uczestnika

Praktyka przed teorią - wszystkie szkolenia technologiczne prowadzone są w formie warsztatowej. Konieczna teoria jest wyjaśniana na przykładzie praktycznych zadań

Konkretne umiejętności - w ramach każdego szkolenia rozwijamy praktyczne umiejętności związane z daną technologią i tematyką

Nauka z praktykami - wszyscy trenerzy na co dzień pracują w projektach, gwarantuje to dostęp do eksperckiej wiedzy i praktycznego know-how

Cele szkolenia

Kształcenie umiejętności rozwijania wiedzy dotyczącej tworzenia zaawansowanych rozwiązań w języku C++

Osadzenie narzędzi i procesów tworzenia oprogramowania w realiach współczesnych wymagań Inżynierii Oprogramowania

Dokonanie konsolidacji wiedzy i uzupełnienie braków w kompetencjach w kontekście standardu C++

Nauka testowania jednostkowego aplikacji w języku C++

Nauka tworzenia aplikacji wielowątkowych z użyciem mechanizmów biblioteki standardowej

Nauka identyfikacji i tworzenia oprogramowania z użyciem wzorców GoF oraz elementów programowania funkcyjnego

Zapoznanie się ze współczesnymi bibliotekami przetwarzającymi dane

Program

  • Przegląd dostępnych algorytmów
  • Wydajność i aspekty implementacji
  • Praktyczna implementacja z użyciem algorytmów z biblioteki standardowej
  • Implementacja własnych algorytmów do ponownego wykorzystania
  • Złożoność obliczeniowa i zakres zastosowań
  • Warsztat wykorzystania algorytmów
  • Rodzaje iteratorów dostępnych w bibliotece standardowej
  • Aspekty implementacji iteratorów
  • Implementacja własnych iteratorów
  • Programowanie uogólnione - koncepcje i zastosowania
  • Wzorce - pułapki i zastosowania
  • Konkretyzacja - reguły i działanie
  • Cechy typów
  • Metaprogramowanie - podstawy
  • Algorytmy na poziomie meta
  • Wprowadzenie wzorców projektowych
  • Strukturalne wzorce projektowe
  • Konstrukcyjne wzorce projektowe
  • Behawioralne wzorce projektowe
  • Specyfika implementacji wzorców projektowych w języku C++
  • Boost - przegląd użytecznych rozwiązań
  • Biblioteki rozwijające paradygmat programowania uogólnionego
  • Biblioteki przetwarzania danych
  • ML i AI w języku C++ - przydatne biblioteki
  • Proces TDD w pracy programisty
  • Proces BDD i różnice w stosunku do TDD
  • Rodzaje bibliotek testów i dostępne asercje
  • Projektowanie i implementowanie testów
  • Dostęp do podstawowych struktur C++
  • Automatyzacja i skrypty
  • Wstęp do integracji z infrastrukturą testowania
  • Wyzwania i problemy
  • Współpraca wątków
  • Inne biblioteki obsługi wielowątkowości (Boost Threads, Intel Threading Building Blocks)
  • Prymitywy synchronizujące
  • Sekcje krytyczne
  • Komunikacja i dane współdzielone w aplikacjach wielowątkowych
  • Testowanie aplikacji wielowątkowych
  • Wzorce wielowątkowości - przegląd
  • Implementacja najbardziej użytecznych wzorców wielowątkowości
  • Zaawansowane wzorce wielowątkowe
  • Przegląd nowości wprowadzonych w nowych standardach C++
  • Zarządzanie pamięcią (wskaźniki inteligentne)
  • Nowe aspekty składni
  • Obiekty funkcyjne (typ std::function, funkcje lambda, łączenie obiektów)
  • Zarządzanie zakresami
  • Ujednolicona obsługa systemu plików i czasu
  • Cechy typów oraz rozszerzenia wielowątkowości (implementacja typów atomowych)
  • Zasady S.O.L.I.D., GRASP, YAGNI - przegląd i przypomnienie
  • Wykładnie w programowaniu obiektowym - aspekt praktyczny
  • Implementacja wykładni (ang. policy) we własnych aplikacjach
  • Rola polimorfizmu statycznego i technik wykonania na etapie kompilacji
  • Aspekty wydajności obsługi wyjątków
  • Tworzenie aplikacji odpornej na błędy
  • Programowanie aspektowe

Najbliższe szkolenie poprowadzi:

Witold Wysota

Architekt i programista systemowy z dużym doświadczeniem komercyjnym oraz asystent w Instytucie Informatyki PW. Zajmuje się głównie technologiami związanymi z językiem C++, zarówno na platformach biurkowych jak i wbudowanych. Jest specjalistą od Qt - w tym autorem książek i artykułów. Od kilkunastu lat prowadzi wykłady i szkolenia z tej tematyki.

POLITYKA COOKIES:

Korzystamy z plików cookies, by móc jak najlepiej dostosować stronę do Twoich potrzeb oraz wyświetlać Ci przydatne i adekwatnych dla Ciebie reklamy w serwisie i poza nim. Możesz kontrolować ustawienia ciasteczek w swoich ustawieniach swojej przeglądarki. Odwiedzając tę stronę, wyrażasz zgodę na wykorzystywanie przez nas plików cookies.