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
- (6 X, Nowak) Sprawy organizacyjne, wprowadzenie;
prezentacja (pdf),
kod (zip).
- (13 X, Neumann) Rust, wprowadzenie, model pamięci
prezentacja (pdf).
- (20 X, Neumann) Rust, programowanie współbieżne,
prezentacja (pdf).
- (27 X, Nowak) Obiekty, polimorfizm, funkcje wirtualne. Zarządzanie pamięcią;
prezentacja (pdf),
kod (zip).
- (3 XI, Nowak) Obsługa błędów, wyjątki, RAII, sprytne wskaźniki;
prezentacja (pdf),
kod (zip).
- (13 XI, plan poniedziałkowy we czwartek!, Nowak) Wtyczki. Łączenie C++ z C, Python, Rust. Powtórzenie;
Przykładowe zadania
- programowanie obiektowe, wyjątki. Kompilacja w trybie C++11 bez Boost.Regex, np.
g++ kol1zestS.cpp --std=c++11
zestaw S, rozwiązania S,
zestaw T, rozwiązania T,
zestaw U, rozwiązania U,
zestaw V, rozwiązania V,
zestaw W, rozwiązania W,
zestaw X, rozwiązania X,
zestaw Y, rozwiązania Y,
zestaw Z, rozwiązania Z
zestaw A, rozwiązania A,
zestaw B, rozwiązania B,
zestaw C, rozwiązania C.
- programowanie obiektowe, wyjątki. Kompilacja w trybie C++17, np.
g++ kol1zestD.cpp --std=c++17 -pthread
zestaw D, rozwiązania D,
zestaw E, rozwiązania E.
- RUST:
rust1,
rust2,
zadanie z Borrow checker'a (znane z Rust'a),
kompilacja w trybie C++17
g++ plik.cpp --std=c++17
- zestaw F,
rozwiązania, kompilacja w trybie C++17
g++ plik.cpp --std=c++17:
smartptr,
exceptions,
nvi,
const,
STL
- zestaw G,
rozwiązania, kompilacja w trybie C++17
g++ plik.cpp --std=c++17:
rust3,
smartptr,
exceptions,
nvi.
- zestaw H, zestaw H (wersja 2),
rozwiązania (lub kod): STL i szablony,
unique_ptr,
smart_ptr,
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
- zestaw I,
rozwiązania (lub kod): smart_ptr,
NVI,
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
-
zestaw J,
rozwiązania (lub kod): smart_ptr,
NVI,
ogólne (mediana),
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
-
zestaw K,
rozwiązania (lub kod): smart_ptr,
wyjątki
RUST,
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
-
zestaw L,
rozwiązania (lub kod): NVI,
smart_ptr
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
- (17 XI, Kolokwium 1)
- (24 XI, Robert Nowak) Szablony cz. 1, trejty, biblioteka standardowa cz. 1,
- (1 XII, Witold Wysota) stałość, C++ jako język zorientowany na wartości, std::optional i std::variant;
- (8 XII, Witold Wysota) Szablony cz. 2, programowanie generyczne, biblioteka standardowa, funkcje anonimowe;
- (15 XII, Robert Nowak) Aplikacje wielowątkowe w C++, synchronizacja, operacje atomowe, std::future, std::promise i inne.
- (22 XII, Łukasz Neumann) Rust, zarządzanie projektem i łączenie z innymi językami,
- (12 I, Robert Nowak) C++14, C++17, C++20, C++23. Biblioteki Boost. Przetwarzanie tekstu. Powtórzenie
Przykładowe zadania:
- Szablony, wątki. Kompilacja w trybie C++11 z biblioteką Boost.Thread, np. np.
g++ kol2zestP.cpp --std=c++11 -lboost_thread -lboost_system -pthread
zestaw S, rozwiązania S,
zestaw T, rozwiązania T,
zestaw U, rozwiązania U,
zestaw V, rozwiązania V,
zestaw W, rozwiązania W,
zestaw X, rozwiązania X,
zestaw Y, rozwiązania Y,
zestaw Z, rozwiązania Z,
zestaw A, rozwiązania A.
- Szablony, wątki. Kompilacja w trybie C++11 w wersji współbieżnej, np.
g++ kol2zestB.cpp --std=c++11 -pthread
zestaw B, rozwiązania B,
zestaw C, rozwiązania C.
- szablony, wątki. Kompilacja w trybie C++17 w wersji współbieżnej, np.
g++ kol2zestD.cpp --std=c++17 -pthread
zestaw D, rozwiązania D,
zestaw E, rozwiązania E.
- zestaw F,
rozwiązania: concurr,
async,
- zestaw G,
rozwiązania:
STL-1, STL-2, STL-3,
blokada, trejty,
kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
- zestaw H,
rozwiązania (lub kod): wydruk, std::function,
shared_mudex,
wydruk, std::any,
wątki, kompilacja w trybie C++20
g++ plik.cpp --std=c++20.
-
zestaw I,
rozwiązania (lub kod): STL-1,
STL-2,
wydruk, std::function,
wątki, wyścig, kompilacja w trybie C++20.
-
zestaw J,
rozwiązania (lub kod): variant,
współbieżność, operacje atomowe,
wariant, wydruk,
kompilacja w trybie C++20
g++ plik.cpp --std=c++20 lub g++-12 plik.cpp --std=c++20.
-
zestaw K,
rozwiązania (lub kod): variant,
współbieżność, skalowalność,
STL-1,
STL-2,
kompilacja w trybie C++20.
-
zestaw L,
rozwiązania (lub kod): współbieżność - wyścigi,
mediana.
- (19 I, Kolokwium 2)
- (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++:
- [[likely]],[[unlikely]](C++20)
- atrybuty, np. [[maybe_unused]] (C++26), opis(pdf)
- dedukcja argumentów szablonu dla klas, ctad (C++17)
- std::scoped_lock (C++17)
- std::chrono (C++20)
- std::expected (C++23)
- std::bit (C++20)
- fold expressions (C++17), opis(pdf)
- coroutines (C++20)
- structured buildings (C++17)
- coroutine (C++20)
- koncepty (C++20)
- zakresy (ranges, C++20),
zip,
opis (pdf)
- moduły (C++20)
- std::generator (C++23)
- three way comparison (C++20)
- std::jthread (C++20)
- std::async (C++20)
- std::views (C++20)
- std::format (C++20)
- std::source_location (C++20)
- std::source_location (C++20), tutaj wykorzystuje httplib
- std::counting_semaphore (C++20)
- std::to_underlying (C++23)
- constexpr i consteval (C++11 .. C++23)
- std::filesystem (C++17)
- CRTP, explicit this (C++23)
- std::formatter (C++20)
- bufor cykliczny, wykorzystuje std::atomic (C++11)
- widoki, std::ranges::views::zip (C++23)
- std::barrier (C++20)
Przykłady prostych aplikacji w Pythonie z modułami w Rust:
Opisy elementów biblioteki Boost:
Oprogramowanie
|