Zaawansowane programowanie w C++ (ZPR2025Z)

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ół ZPR25Z 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. (6 X, Nowak) Sprawy organizacyjne, wprowadzenie; prezentacja (pdf), kod (zip).
  2. (13 X, Neumann) Rust, wprowadzenie, model pamięci prezentacja (pdf).
  3. (20 X, Neumann) Rust, programowanie współbieżne, prezentacja (pdf).
  4. (27 X, Nowak) Obiekty, polimorfizm, funkcje wirtualne. Zarządzanie pamięcią; prezentacja (pdf), kod (zip).
  5. (3 XI, Nowak) Obsługa błędów, wyjątki, RAII, sprytne wskaźniki; prezentacja (pdf), kod (zip).
  6. (13 XI, plan poniedziałkowy we czwartek!, Nowak) Wtyczki. Łączenie C++ z C, Python, Rust. Powtórzenie;

    Przykładowe zadania

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

    Przykładowe zadania:

  14. (19 I, Kolokwium 2)
  15. (26 I, Nowak) LLM w wytwarzaniu oprogramowania; standardy, zasoby internetowe

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 2025L (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 2018L: 31 osób, średnia 92.5, mediana 87 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
wykres 2018L wykres 2018Z wykres 2019Z wykres 2020L
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 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
wykres 2020L wykres 2024L wykres 2024Z wykres 2025L