Zaawansowane programowanie w C++ (ZPR2026L)

Sprawy organizacyjne

Regulamin przedmiotu jest umieszczony w systemie USOS. Dokumenty na tej stronie mają charakter wyjaśniający, pomocniczy; w razie niespójności rozstrzyga regulamin przedmiotu.

Bieżące oceny cząstkowe są uzupełniane na serwerze USOS

Zakładamy znajomość programowania strukturalnego i podstawowych algorytmów (np. ukończony przedmiot PIPR), znajomość programowania obiektowego (np. ukończony przedmiot PROI), znajomość podstawowych elementów C++ (np. ukończony przedmiot PROI), znajomość wzorców projektowych (np. ukończony przedmiot SWO), znajomość podstawowych potoków wytwarzania oprogramowania (np. ukończony przedmiot SWO), umiejętność czytania diagramu klas UML (np. ukończony przedmiot SWO)

Zespół ZPR26L na MS Teams PW

Wykłady

Wykłady będą odbywały się w sali 133 we wtorki w godzinach 18.15 - 20.00. Tematy poszczególnych wykładów oraz materiały pomocnicze (slajdy i inne) będą umieszczane poniżej. Przykładowe fragmenty kodu są umieszczane w archiwum zip. kompilacja przykładów w trybie C++11 lub nowszym, przykładowe polecenie: g++ nazwa.cpp

  1. (24 II, Nowak) Sprawy organizacyjne, wprowadzenie;
  2. (3 III, Neumann) Rust, wprowadzenie, model pamięci
  3. (10 III, Nowak) Obiekty, polimorfizm, funkcje wirtualne. Zarządzanie pamięcią;
  4. (17 III, Neumann) Rust, programowanie współbieżne,
  5. (24 III, Nowak) Obsługa błędów, wyjątki, RAII, sprytne wskaźniki;
  6. (31 III, Nowak) Wtyczki. Łączenie C++ z C, Python, Rust. Powtórzenie;

    Przykładowe zadania

  7. (14 IV, Robert Nowak Kolokwium 1)
  8. (21 IV, Robert Nowak) Szablony cz. 1, trejty, biblioteka standardowa cz. 1,
  9. (28 IV, Witold Wysota) stałość, C++ jako język zorientowany na wartości, std::optional i std::variant;
  10. (5 V, Witold Wysota) Szablony cz. 2, programowanie generyczne, biblioteka standardowa, funkcje anonimowe;
  11. (19 V, Robert Nowak) Aplikacje wielowątkowe w C++, synchronizacja, operacje atomowe, std::future, std::promise i inne.
  12. (26 V, Łukasz Neumann) Rust, zarządzanie projektem i łączenie z innymi językami,
  13. (2 VI, Robert Nowak) Boost. Przetwarzanie tekstu. Powtórzenie

    Przykładowe zadania:

  14. (9 VI, Kolokwium 2)
  15. (16 VI, Nowak) LLM w wytwarzaniu oprogramowania; C++14, C++17, C++20, C++23,

Literatura:

  • E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Wzorce projektowe, WNT, 2005.
  • A. Alexandrescu, Nowoczesne projektowanie w C++, WNT, 2005.
  • A. Alexandrescu and H. Sutter, Język C++. Standardy kodowania. 101 zasad, wytycznych i zalecanych praktyk, Helion, 2005.
  • S. Meyers, 50 efektywnych sposobów na udoskonalenie Twoich programów, Helion, 2003.
  • B. Stroustrup, Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion, 2010.
  • R. Nowak, A. Pająk, Język C++: mechanizmy, wzorce, biblioteki, BTC, 2010.
  • A. Hunt, D. Thomas, Pragmatyczny programista, Helion, 2011.
  • Software Engineering Body of Knowledge (SWEBOK) v3, IEEE Computer Society, 2014

Konsultacje i kontakt z prowadzącymi

Patrz Baza Wiedzy Politechniki Warszawskiej

Przydatne materiały

  • slajdy wykładowe z semestru 2025Z (7MB)

C++, dokumentacja on-line:

Czasopisma:

Dodatkowe przykłady utworzone przez Studentów ZPR

Opisy elementów biblioteki standardowej C++:

Przykłady prostych aplikacji w Pythonie z modułami w Rust:

Opisy elementów biblioteki Boost:

Oprogramowanie

Ankiety dotyczące czasu poświęconego na przedmiot

Wynik ankiety przeprowadzonej w semestrze 2018Z: 31 osób, średnia 93.2, mediana 80 Wynik ankiety przeprowadzonej w semestrze 2019Z: 42 osoby, średnia 122.9, mediana 120 Wynik ankiety przeprowadzonej w semestrze 2020L: 21 osoby, średnia 119.4, mediana 110 Wynik ankiety przeprowadzonej w semestrze 2020Z: 28 osób, średnia 134.7, mediana 114
wykres 2018Z wykres 2019Z wykres 2020L wykres 2020L
Wynik ankiety przeprowadzonej w semestrze 2024L: 42 osoby, średnia 97, mediana 90 Wynik ankiety przeprowadzonej w semestrze 2024Z: 29 osób, średnia 109, mediana 100 Wynik ankiety przeprowadzonej w semestrze 2025L: 28 osób, średnia 126, mediana 120 Wynik ankiety przeprowadzonej w semestrze 2025Z: 37 osób, średnia 84, mediana 85
wykres 2024L wykres 2024Z wykres 2025L wykres 2025Z