PDF: Zaawansowane programowanie w języku C++
Transkrypt
PDF: Zaawansowane programowanie w języku C++
Kod szkolenia: Tytuł szkolenia: Dni: C/ADV Zaawansowane programowanie w języku C++ 3 Opis: Uczestnicy szkolenia zapoznają się z metodami wytwarzania oprogramowania z użyciem zaawansowanych mechanizmów języka C++ oraz szablonów STL. Na zajęciach poruszamy zagadnienia związane z koncepcjami algorytmów, iteratorów i zaawansowanych struktur danych. W przykładach wykorzystywane są elementy biblioteki standardowej oraz elementy biblioteki Boost. 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 i biblioteki Boost MPL. Zajęcia uwzględniają także potrzeby testowania aplikacji tworzonych w języku C++ z użyciem narzędzi wspierających proces TDD. Jako biblioteki wspierające, wykorzystane są: cppunit oraz Boost Testing. Szczególny nacisk w trakcie zajęć kładziemy na zrozumienie aspektów wydajności oraz gospodarowaniem zasobami z użyciem wskaźników inteligentnych dostępnych w nowej wersji standardu C++11. Jako techniki tworzenia aplikacji obiektowej, prezentowane są klasy wytycznych, tradycyjne wzorce projektowe (GoF). 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. Zakres szkolenia Szkolenie obejmuje: konsolidację wiedzy o elementach biblioteki standardowej, algorytmy biblioteki standardowej, tworzenie i testowanie aplikacji wielowątkowych, inteligentne wskaźniki i ich adekwatne stosowanie, klasy wytycznych. Wymagania Od uczestników szkolenia wymaga się: posługiwania się wybranym środowiskiem IDE (Eclipse, NetBeans, vim), znajomości koncepcji programowania obiektowego, systemowego i aplikacyjnego, znajomości narzędzi do tworzenia aplikacji z rodziny gcc i binutils, umiejętności posługiwania się narzędziem debuggera, znajomości 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). Adresaci szkolenia Szkolenie adresowane jest do: programistów programujących w języku C i C++ w środowisku GNU/Linux lub MS Windows, osób znających w podstawowym zakresie system szablonów STL, programistów tworzących oprogramowanie na platformie systemowej GNU/Linux lub MS Windows, programistów tworzących aplikacje głównego nurtu oraz aplikacje sieciowe. Cel szkolenia Głównymi celami w procesie szkoleniowym są: 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++11. Umiejętności zdobywane podczas zajęć Uczestnicy szkolenia po jego zakończeniu zdobędą następujące umiejętności: testowania jednostkowych aplikacji w języku C++, tworzenia aplikacji wielowątkowych z użyciem Boost Threads, identyfikacji i tworzenia oprogramowania z użyciem wzorców GoF, zapoznania się ze współczesnymi bibliotekami przetwarzającymi dane. Parametry szkolenia Szkolenie trwa 3 dni. Szkolenie obejmuje 60% wykładu i 40% ćwiczeń. Program szkolenia: 1. Algorytmy i iteratory biblioteki standardowej. I. Przegląd dostępnych algorytmów. II. Wydajność i aspekty implementacji. III. Praktyczna implementacja z użyciem algorytmów z biblioteki standardowej. IV. Implementacja własnych algorytmów do ponownego wykorzystania. V. Złożoność obliczeniowa i zakres zastosowań. VI. Warsztat wykorzystania algorytmów. VII. Rodzaje iteratorów dostępnych w bibliotece standardowej. 2. Iteratory i programowanie uogólnione. I. Aspekty implementacji iteratorów. II. Implementacja własnych iteratorów. III. Programowanie uogólnione – koncepcje i zastosowania. 3. Szablony STL – wydajne stosowanie i wstęp do metaprogramowania. I. Wzorce – pułapki i zastosowania. II. Konkretyzacja – reguły i działanie. III. Cechy typów. IV. Metaprogramowanie – podstawy. V. Algorytmy na poziomie meta. 4. Wzorce projektowe. I. Wprowadzenie wzorców projektowych. II. Strukturalne wzorce projektowe. III. Konstrukcyjne wzorce projektowe. IV. Behawioralne wzorce projektowe. V. Specyfika implementacji wzorców projektowych w języku C++. 5. Biblioteka Boost – przegląd użytecznych rozwiązań. I. Biblioteki rozwijające paradygmat programowania uogólnionego. II. Biblioteki przetwarzania danych. 6. Testowanie i metodyka TDD. I. Proces TDD w pacy programisty. II. Rodzaje testów i dostępne asercje. III. Projektowanie i implementowanie testów. 7. Praca z narzędziem debuggera w języku C++. I. Dostęp do podstawowych struktur C++. II. Automatyzacja i skrypty. III. Wstęp do integracji z infrastrukturą testowania. 8. Programowanie wielowątkowe. I. Wyzwania i problemy. II. Współpraca wątków. III. Wielowątkowość z użyciem biblioteki pthreads. IV. Wielowątkowość z użyciem biblioteki Boost Threads. V. Funkcje i rodzaje blokad. VI. Sekcje krytyczne. VII. Testowanie aplikacji wielowątkowych. 9. Wzorce wielowątkowości. I. Przegląd bibliotek i frameworków wspierających wielowątkowość w C++. II. Wzorce wielowątkowości – przegląd. III. Implementacja najbardziej użytecznych wzorców wielowątkowości. IV. Zaawansowane wzorce dostępne w Boost Threads. 10. Nowości w standardzie C++11. I. Przegląd nowości wprowadzonych w C++11. II. Zarządzanie pamięcią (wskaźniki inteligentne). III. Nowe aspekty składni. IV. Funkcje lambda. V. Inne przydatne możliwości. 11. Wykładnie i nowoczesne projektowanie aplikacji. I. Zasady S.O.L.I.D. - przegląd i przypomnienie. II. Wykładnie w programowaniu obiektowym. III. Implementacja wykładni we własnych aplikacjach. 12. Tworzenie aplikacji niezawodnych. I. Aspekty wydajności obsługi wyjątków. II. Tworzenie aplikacji odpornej na błędy. III. Programowanie aspektowe. Powered by TCPDF (www.tcpdf.org)