Training C++
C++ rămâne unul dintre cele mai populare 5 limbaje de programare (conform indexului TIOBE) din ultimii ani, deoarece este un limbaj orientat obiect ce permite un control mai mare al resurselor unui proces (în special la nivelul memoriei) decât alte limbaje de nivel înalt. Din aceasta perspectivă, C++ este un instrument performant și puternic, ce poate fi folosit pentru a dezvolta:
- aplicații native pentru dispozitive embedded sau IoT
- aplicații cu un spectru larg de utilizare (jocuri, aplicații financiare sau aplicații bazate pe Inteligență Artificială) ce pot rula pe dispozitive și platforme hardware diferite
- aplicații cu interfață vizuală pe baza framework-ului QT ce pot fi folosite ross-platform
- aplicații performante ce rulează în zona de Back-End/Servicii
C++ este un limbaj de programare cu o curbă de învățare mai lentă, dar care conferă programatorului ce ajunge să înțeleagă limbajul, control deplin asupra sistemului la nivel de memorie, fire de execuție, resurse, etc.
În funcție de nevoile echipei de dezvoltare sau cerințele proiectului software vă putem ajuta să acoperiți următoarele concepte specifice programării în C++
C++
Full Track
To ce trebuie să știi despre C++
C++
Fast Track
Introducere în C++ și POO
C++ Multi-threads
C++ pe mai multe fire de execuție
C++
Parallel
C++ în paralel, pe mai multe core-uri cu OMP
C++ Full Track
Cursul se adresează echipelor care învață C++ sau fac tranziția la acest limbaj de programare.
Cursul prezintă conceptele de bază ale Programării Orientate Obiect, sintaxa specifică limbajului de programare și librăriile de bază necesare dezvoltării de aplicații C++. Cursul realizează și o prezentare succintă a unor concepte de bază ale programării specifice limbajului C și apoi face tranziția la C++ și la filozofia programării orientate obiect: modul în care este abstractizată și transpusă în cod problema reală, avantajele încapsulării și ale reutilizării codului prin moștenire și derivare.
- Înțelegerea și implementarea conceptelor specifice Programării Orientate Obiect prin intermediul limbajului C++.
- Tranziția eficientă la C++ de la un alt limbaj de programare
- Tipuri de date și gestiunea șirurilor de caractere
- Gestiunea memoriei prin pointeri și referințe
- Funcții și transferul parametrilor/rezultatelor
- Clase (definire, specificatori de acces, atribute statice și constante, metode constructor, constructor de copiere, destructor, metode de acces)
- Supraîncărcarea operatorilor
- Moștenire (vizibilitate a datelor, funcții virtuale etc.)
- Polimorfism
- Gestiunea excepțiilor
- Operații de intrare/ieșire (IO) pe stream-uri standard și pe fișiere
- Clase și metode template
- Colecții din Standard Template Library
- Software Developer; System Administrator; Web Developer; Game Developer
- Programatori cu sau fără experiență în C sau în alte limbaje de programare ce nu sunt orientate obiect
- Aplicații cu restricții de performanță sau memorie disponibilă
- Servicii Back-End
- Dezvoltare de jocuri
- Platforme și dispozitive embedded
- Platforme și dispozitive IoT
- Aplicații cross-platform
- Aplicații cu interfață vizuală bazate pe framework-ul Qt
Intermediar
On-site sau online, în timpul săptămânii, timp de 5 zile (40 de ore)
Experiență dobândită:
- Utilizarea corectă a sintaxei specifice C++
- Înțelegerea și implementarea conceptelor fundamentale specifice Programării Orientate Obiect
- Înțelegerea polimorfismului si utilizarea avantajelor acestuia în dezvoltarea de soluții software
- Definirea corectă de clase care să abstractizeze entitățile reale
- Managementul eficient al memoriei alocat obiectelor. Rolul constructorilor și al funcției destructor
- Încapsularea datelor obiectelor și controlul accesului la acestea
- Supraîncărcarea operatorilor
- Definirea și utilizarea de bază a metodelor și claselor template
- Utilizarea colecțiilor de bază din Standard Template Library (STL)
- Definirea și utilizarea ierarhiilor de clase
- Definirea și utilizarea claselor abstracte
- Utilizarea eficientă a metodelor virtuale
- Gestiunea datelor din fișiere text și binare
- Serializarea obiectelor
- Managementul excepțiilor prin mecanismul try-catch
C++ Fast Track
Cursul se adresează dezvoltatorilor software care învață C++ pentru a dezvolta aplicații.
Cursul prezintă conceptele de bază ale Programării Orientate Obiect, sintaxa specifică limbajului de programare și librăriile de bază necesare dezvoltării de aplicații C++. Cursul realizează și o prezentare succintă a unor concepte de bază ale programării specifice limbajului C și apoi face tranziția la C++ și la filozofia programării orientate obiect: modul în care este abstractizată și transpusă în cod problema reală, avantajele încapsulării și ale reutilizării codului prin moștenire și derivare.
- Înțelegerea și implementarea conceptelor specifice Programării Orientate Obiect prin intermediul limbajului C++.
- Tranziția eficientă la C++ de la un alt limbaj de programare
- Tipuri de date și gestiunea șirurilor de caractere
- Gestiunea memoriei prin pointeri și referințe
- Funcții și transferul parametrilor/rezultatelor
- Clase (definire, specificatori de acces, atribute statice și constante, metode constructor, constructor de copiere, destructor, metode de acces)
- Supraîncărcarea operatorilor
- Moștenire (vizibilitate a datelor, funcții virtuale etc.)
- Polimorfism
- Gestiunea excepțiilor
- Operații de intrare/ieșire (IO) pe stream-uri standard și pe fișiere
- Clase și metode template
- Colecții din Standard Template Library
- Software Developer; System Administrator; Web Developer; Game Developer
- Programatori cu experiență
- Aplicații cu restricții de performanță sau memorie disponibilă
- Servicii Back-End
- Dezvoltare de jocuri
- Platforme și dispozitive embedded
- Platforme și dispozitive IoT
- Aplicații cross-platform
- Aplicații cu interfață vizuală bazate pe framework-ul Qt
Intermediar
On-site sau online, în timpul săptămânii, timp de 3 zile (24 de ore)
Experiență dobândită:
- Utilizarea corectă a sintaxei specifice C++
- Înțelegerea și implementarea conceptelor fundamentale specifice Programării Orientate Obiect in C++
- Polimorfism în C++
- Abstractizarea entităților reale prin clase
- Managementul eficient al memoriei alocat obiectelor. Rolul constructorilor și al funcției destructor
- Definirea și utilizarea ierarhiilor de clase
- Avantajele metodelor virtuale și ale up-castingului
- Gestiunea datelor din fișiere text și binare
- Managementul excepțiilor prin mecanismul try-catch
- Definirea și utilizarea de bază a metodelor și claselor template
- Utilizarea colecțiilor de bază din Standard Template Library (STL)
C++ Multi-Threads
Cursul se adresează echipelor care au experiență în dezvoltarea de soluții cu C++ și care au nevoie de cunoștințele practice necesare distribuirii execuției pe mai multe fire de execuție.
Cursul prezintă conceptele de bază ale programării pe mai multe fire de execuție (multi-threaging) cu accent pe partea de creare, gestiune și sincronizare a acestora. Cursul va permite programatorilor să folosească sigur și eficient mai multe fire de execuție și astfel să crească performanța rutinelor și a aplicației. Sunt evindențiate diferențele și asemănările dintre conceptele specifice programării sincrone vs asincrone vs paralele. Prin exemple practice, vor fi explicate problemele accesului concurențial la resurse și a modalităților de evitare a acestora.
- Dezvoltarea sigură de aplicații performante care să utilizeze mai multe fire de execuție
- Tranziția eficientă la C++ de la un alt limbaj de programare
- Conceptele programării concurente prin multi-threading
- Multi-threading vs Sincron vs Asincron vs Paralel
- Librăria thread din C++ 11
- Crearea de thread-uri, pointeri la funcții, expresii lambda
- Transferul valorilor către thread-uri
- Managementul thread-urilor
- Controlul și sincronizarea thread-urilor
- Thread-uri asincrone
- Utilizarea colecțiilor concurente
- Thread pool-uri, Future și Promise
- Sincronizare thread-uri prin semafoare, mutex și lock-uri
- Tipul atomic
- Probleme ale programării multi-thread și best practices
- Software Developer;
- Programatori cu experiență în C++
- Aplicații cu cerințe de performanță
Intermediar
On-site sau online, în timpul săptămânii, timp de 2-3 zile (20 de ore)
Experiență dobândită:
- Dezvoltarea de aplicații C++ care să utilizeze mai multe fire de execuție
- Gestiunea sigură a firelor de execuție
- Identificarea și evitarea problemelor specifice programării concurente
- Practici recomandate în programarea mult-threading
C++ Parallel
Cursul se adresează echipelor care au experiență în dezvoltarea de soluții cu C++ și care au nevoie de cunoștințele practice de bază, necesare paralelizării execuției pe mai multe core-uri/procesoare.
Cursul prezintă conceptele de bază ale programării paralele, pe mai multe core-uri, folosind librăria OpenMP. Cursul va permite programatorilor să distribuie în paralel mai multe fire de execuție și astfel să crească performanța rutinelor și a aplicației. Sunt evindențiate diferențele și asemănările dintre conceptele specifice programării paralele vs asincrone. Prin exemple practice, sunt explicate problemele specifice programării paralele (race conditions, parallel slowdown, cache coherence, sincronizare, etc) și a modalităților de evitare a acestora.
- Dezvoltarea de aplicații performante care să utilizeze mai multe core-uri prin paralelizarea firelor de execuție
- Dobândirea cunoștințelor teoretice și practice specifice programării paralele
- Conceptele programării paralele
- Multi-threading vs Sincron vs Asincron vs Paralel
- Problemele programării paralele (race condition, cache coherence, cache alignment, slowdown, deadlock)
- Costul orchestrării rutinelor paralele
- Librăria OpenMP
- Directive specifice OpenMP pentru gestiunea thread-urilor
- Directive specifice OpenMP pentru paralelizarea buclelor
- Returnarea rezultatelor din zonele paralele
- Pattern-uri și anti Pattern-uri
- Software Developer;
- Programatori cu experiență în C++
- Aplicații cu cerințe de performanță
Avansat
On-site sau online, în timpul săptămânii, timp de 2-3 zile (20 de ore)
Experiență dobândită:
- Dezvoltarea de aplicații C++ paralele care să utilizeze mai multe core-uri
- Gestiunea sigură a firelor de execuție paralele prin utilizarea librăriei OpenMP
- Identificarea și evitarea problemelor specifice programării paralele
- Practici recomandate în programarea paralelă

