Sprawy organizacyjne
Zespół ZPR24Z na MS Teams PW
Zakładamy znajomość programowania strukturalnego i podstawowych algorytmów (np. ukończony przedmiot PIPR),
znajomość programowania obiektowego (np. ukończony przedmiot PROBI),
znajomość podstawowych elementów C++ (np. ukończony przedmiot PROBI),
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)
Zaliczenie Przedmiot jest zaliczany na podstawie wyników sprawdzianów, przeprowadzanych podczas wykładów
(punktacja 0 - 20pkt.) i wyników projektu (punktacja 0 - 20 pkt.).
Nie jest wymagana obecność na wykładzie i nie będzie ona sprawdzana.
Ocena końcowa jest określana na podstawie łącznej liczby punktów zgodnie z poniższą tabelą.
liczba punktów | ocena |
37 - 40 pkt | pięć |
33 - 36 pkt | cztery i pół |
29 - 32 pkt | cztery |
25 - 28 pkt | trzy i pół |
21 - 24 pkt | trzy |
0 - 20 pkt | dwa |
Bieżące oceny cząstkowe są uzupełniane na serwerze USOS
Sprawdziany
Sprawdziany odbędą w terminach podanych niżej. Każdy sprawdzian jest oceniany w skali 0-10 pkt. Oceny poszczególnych zadań będą w USOS.
Projekt: terminy, lista tematów i zasady oceniania
Zadanie dodatkowe
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
- (7 X, Robert Nowak) Sprawy organizacyjne, wprowadzenie;
prezentacja (pdf),
kod (zip).
- (14 X, Robert Nowak) Obiekty, polimorfizm, funkcje wirtualne. Zarządzanie pamięcią;
prezentacja (pdf),
kod (zip).
- (21 X, Łukasz Neumann) Rust, wprowadzenie, model pamięci
prezentacja (pdf).
- (28 X, Robert Nowak) Obsługa błędów, wyjątki, RAII, sprytne wskaźniki;
prezentacja (pdf),
kod (zip).
- (4 XI, Łukasz Neumann) Rust, programowanie współbieżne,
prezentacja (pdf).
- (14 XI, Robert Nowak) Wtyczki. Łączenie C++ z C, Python, Rust. Powtórzenie;
prezentacja (pdf),
kod (zip).
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 .
- (18 XI)
- (25 XI, Witold Wysota) stałość, C++ jako język zorientowany na wartości, std::optional i std::variant;
prezentacja (pdf).
- (2 XII, Witold Wysota) Szablony cz. 1, programowanie generyczne, biblioteka standardowa, funkcje anonimowe;
prezentacja (pdf).
- (9 XII, Robert Nowak) Szablony cz. 2, trejty, biblioteka standardowa cz. 2,
prezentacja (pdf),
kod (zip).
- (16 XII, Robert Nowak) Aplikacje wielowątkowe w C++, synchronizacja, operacje atomowe, std::future, std::promise i inne.
prezentacja (pdf),
kod (zip).
- (8 I, Łukasz Neumann) Rust,
- (13 I, Robert Nowak) Biblioteki Boost. Przetwarzanie tekstu. LLM w wytwarzaniu oprogramowania.
Prototypowanie, programowanie interaktywne w emacs org-mode. C++14, C++17, C++20, C++23.
- (20 I)
- (Konrad Grochowski) Optymalizacja kodu cz. 2,
prezentacja (pdf).
- (Robert Nowak) 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:
stl2, stl3, stl4,
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): stl1,
stl2,
wydruk, std::function,
wątki, wyścig, kompilacja w trybie C++20
g++ plik.cpp --std=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 .
- (27 I, Robert Nowak) Kolokwium 2:
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
- prezentacje z wykładów, semestr 2024L (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
Kompilatory:
Biblioteki:
Inne narzędzia:
|