Programowanie w języku C++

C++ Programowanie proceduralne Programowanie obiektowe Programowanie generyczne Programowanie funkcyjne

Wprowadzenie

Języki C i C++ od wielu lat są jednymi z najczęściej stosowanych zarówno w przemyśle IT, jak i w instytucjach naukowo-badawczych. Szczególną rolę spełniają od dawna m.in. w telekomunikacji, przemyśle motoryzacyjnym i w produkcji gier, a ostatnio również w systemach "Internetu rzeczy" (IoT). Dlatego zapotrzebowanie na programistów znających C++ jest ciągle ogromne.

Kurs jest wprowadzeniem do programowania w C++. Obejmuje elementy programowania proceduralnego, obiektowego, generycznego i funkcyjnego istotne z punktu widzenia współczesnych zastosowań języka. Jego nauka odbywa się w kontekście zagadnień kluczowych dla każdego programisty, a dotyczących m.in. architektury komputera, zarządzania pamięcią, projektowania i analizy algorytmów oraz struktur danych, a także wzorców projektowych i testowania oprogramowania.

Adresaci kursu

Osoby bez kierunkowego wykształcenia zarówno już związane z branżą IT, jak również poszukujące takiej pracy. Kurs umożliwi uczestnikom uzupełnienie i uporządkowanie posiadanej wiedzy z zakresu nie tylko języka C++, ale także podstaw programowania ułatwiających dalszą naukę (także innych języków).

Wymagania wobec kandydatów

Kandydaci na kurs powinni znać podstawy programowania w dowolnym języku.

Atuty kursu

  • zakres materiału odpowiadający kursom przygotowawczym prowadzonym przez firmy z branży IT dla kandydatów do pracy,
  • nastawienie na zrozumienie kluczowych zagadnień dla każdego programisty, ułatwiających dalszą naukę (także innych języków),
  • kadra z wieloletnim doświadczeniem zarówno dydaktycznym (prowadzenie zajęć na studiach, w tym podyplomowych, i kursach realizowanych na zamówienie dla firm z branży IT), jak również w przemyśle IT (role programisty i architekta oprogramowania, prowadzenie rozmów rekrutacyjnych),
  • świadectwo ukończenia.

Zakres tematyczny kursu

  • Pojęcia podstawowe:
    pliki .cpp vs. .h (nagłówkowe); proces kompilacji: kompilacja vs. interpretacja, kod źródłowy, kod maszynowy/asembler, narzędzia qmake i cmake; preprocesor/makra/kompilacja warunkowa,

     
  • Programowanie proceduralne:
    deklaracja/definicja/inicjalizacja, zasięg nazw, typedef vs. deklaracja "using", wnioskowanie typu (auto/decltype), typy i rozmiary danych, konwersje typów/rzutowanie, wejście/wyjście (C vs. C++), funkcje, struktury sterujące, operatory bitowe, organizacja pamięci programu, zarządzanie pamięcią, stałe/zmienne lokalne/globalne, statyczne, dynamiczne; tablice, wskaźniki (w tym do funkcji) i referencje, struktury, unie, pola bitowe; const vs. constexpr; moduły, przestrzenie nazw, dyrektywa "using",

     
  • Programowanie obiektowe:
    klasy (konkretne i abstrakcyjne), obiekty, metody, kontrola dostępu (w tym funkcje/klasy zaprzyjaźnione), konstruktory, destruktory; dziedziczenie vs. agregacja/kompozycja, inicjalizacja, polimorfizm inkluzyjny/"podtypowanie" i funkcje wirtualne, operatory definiowane przez użytkownika; wyjątki, noexcept, poziomy "exception safety",

     
  • Elementy programowania uogólnionego:
    programowanie generyczne vs. generatywne, polimorfizm parametryczny, szablony funkcji i klas, elementy biblioteki standardowej (kolekcje i algorytmy),

     
  • Elementy programowania funkcyjnego:
    cechy stylu (paradygmatu) funkcyjnego; funkcje wyższego rzędu, anonimowe obiekty funkcyjne/wyrażenia lambda,

     
  • Zarządzanie zasobami:
    idiom RAII, "rule of three" vs. "rule of five", wskaźniki "unique_ptr" i "shared_ptr", semantyka przenoszenia ("move semantics"), idiom "copy-and-swap", typy "move-only",

     
  • Podstawy programowania aplikacji w Qt, testy jednostkowe,
     
  • Architektura komputera (podstawy, perspektywa programisty):
    struktura procesu, zarządzanie pamięcią, reprezentacja liczb,

     
  • Elementy algorytmiki i wybrane struktury danych:
    rekursja (w tym strukturalna), złożoność obliczeniowa (czasowa, pamięciowa); wybrane struktury danych - tablice, zbiory, mapy, stosy, kolejki, listy; drzewa (poszukiwań binarnych), grafy; wybrane algorytmy - wyszukiwanie, sortowanie, najkrótsze ścieżki w grafie.

Organizacja kursu

Czas trwania: 20 spotkań 4-godzinnych (od 17.45 do 21.00)

Forma zajęć: mini wykłady, ćwiczenia laboratoryjne/warsztaty

Liczba uczestników: min. 12, maks. 16

Język wykładowy: polski

Forma i warunek zaliczenia: uzyskanie pozytywniej oceny z testu końcowego

Polecane materiały pomocnicze:

  • Bjarne Stroustrup: Język C++ Kompendium Wiedzy, Helion 2014
  • Stephen Prata: Język C++. Szkoła programowania, Helion 2012 
  • Jerzy Grębosz: Opus Magnum C++11, Helion 2017
  • http://www.learncpp.com

Kierownik kursu: dr inż. Roman Dębski

 

Szczegółowe informacje o procesie rekrutacji otrzymają Państwo na adres e-mail podany w zgłoszeniu uczenictwa

Podobne