Zaawansowane programowanie w C++ (ZPR2026Z)

Sprawy organizacyjne

Regulamin przedmiotu jest umieszczony w systemie USOS. Dokumenty na tej stronie mają charakter wyjaśniający, rozszerzający i 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ół ZPR-26Z na MS Teams PW

Projekt: terminy, lista tematów i zasady oceniania

Wykłady

Wykłady będą odbywały się w sali 202 w poniedziałki 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. (5 X, Nowak) Sprawy organizacyjne, wprowadzenie; prezentacja (pdf), kod (zip).
  2. (12 X, Neumann) Rust, wprowadzenie, model pamięci
  3. (19 X, Nowak) Obiekty, polimorfizm, funkcje wirtualne. Zarządzanie pamięcią;
  4. (26 X, Nowak) Obsługa błędów, wyjątki, RAII, sprytne wskaźniki;
  5. (2 XI, Neumann) Rust, programowanie współbieżne,
  6. (9 XI, Nowak) Wtyczki. Łączenie C++ z C, Python, Rust. Powtórzenie;

    Przykładowe zadania

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

    Przykładowe zadania:

  14. (18 I, Kolokwium 2)
  15. (25 I, 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, Helion, 2021.
  • 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, Podróż po języku C++ dla zaawansowanych, Helion, 2023.
  • R. Nowak, A. Pająk, Język C++: mechanizmy, wzorce, biblioteki, BTC, 2010.
  • A. Hunt, D. Thomas, Pragmatyczny programista, wydanie 2, Helion, 2024.
  • Software Engineering Body of Knowledge (SWEBOK) v4, IEEE Computer Society, 2024.

Konsultacje i kontakt z prowadzącymi

Patrz Baza Wiedzy Politechniki Warszawskiej

Przydatne materiały

  • slajdy wykładowe z semestru 2026L (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 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 Wynik ankiety przeprowadzonej w semestrze 2024L: 42 osoby, średnia 97, mediana 90
wykres 2019Z wykres 2020L wykres 2020L wykres 2024L
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 Wynik ankiety przeprowadzonej w semestrze 2026L: 41 osób, średnia 86, mediana 80
wykres 2024Z wykres 2025L wykres 2025Z wykres 2026L