prowadzący ćwiczenia:
dr Aleksandra Fijałkowska, (zajęcia w piątki, 8:15-10:00):
dr hab Krzysztof Piasecki, (zajęcia w poniedziałki, 15:15-17:00)
dr hab Tomasz Kazimierczuk [wcześniej mgr Piotr Szulim], (zajęcia w środy, 15:15-17:00)
Polecane podręczniki:
[https://pl.wikibooks.org/wiki/C++]
Polecane zasoby (darmowe :-)):
[https://www.cplusplus.com/]
[https://www.cprogramming.com/]
[http://stackoverflow.com]
Polecane interpretery C++ dostępne z poziomu przeglądarki:
[https://www.onlinegdb.com/]
[https://replit.com/languages/cpp]
Polecane inne kursy:
"Programming Abstraction in C++", Marty Stepp (CS106B, Stanford)
"Programming Paradigms", Jerry Cain (CS107, Stanford)
[https://hackr.io/blog/cpp-course ]
[https://www.fuw.edu.pl/~werner/lecture/index.html]
ocena = $f\big(\!\min(75, \sum_{i=1}^5 p_i)+\min(25, \sum_{i=1}^2 q_i)\big)$, gdzie:
| $x$ | $f(x)$ |
|---|---|
| >=90 | 5 |
| 81-89 | 4+ |
| 72-80 | 4 |
| 62-71 | 3+ |
| 50-61 | 3 |
$p_{1,2,3}$ — oceny z projektów zaliczeniowych (0-20)
$p_4$ — aktywność na ćwiczeniach (0-15)
$p_5$ — nadesłane rozwiązania zadań z "projecteuler" (0-15, po 3 za zadanie)
$q_1$ — ocena z egzaminu (0-25)
$q_2$ — nadesłane rozwiązania trudnych zadań z "projecteuler" (0-25, po 5 za zadanie które dotąd rozwiązało < 1000 osób)
Zestawy projektów zaliczeniowych
- Seria 1 (termin do 17.11.2021)
- Seria 2 (opublikowanie 16.12.2021, termin do 23.12.2021 28.12.2021):
- Seria 3 (opublikowanie 26.01.2022, termin do końca sesji egzaminacyjnej —- 13.02.2022)
| Wykład 1 | 2021-10-06 08:15—09:00 sala 1.01 |
|---|
- organizacja wykładu i ćwiczeń, zasady zaliczenia
- C++ vs Python vs inne języki w obiegu
- C++ vs Python, podstawy skladni: if, while, do…while
- deklarowanie funkcji
- biblioteka iostream, przestrzenie nazw
| Wykład 2 | 2021-10-13 08:15—09:00 sala 1.01 |
|---|
- typy danych, sprzętowa realizacja typów danych
- przekazywanie argumentów funkcji przez wartość i przez referencję
- reprezentacja typów float i double
- wskaźniki
Wykład 2 (PDF)
Polecam: Fast Inverse Square Root — A Quake III Algorithm
| Wykład 3 | 2021-10-20 08:15—09:00 sala 1.01 |
|---|
- tablice statyczne
- tablice dynamiczne, new, delete
- arytmetyka wskaźników
- kontener vector z STL
- iteratory
Wykład 3 (PDF)
Polecam: Bjarne Stroustrup: C++ | Lex Fridman Podcast #48
| Wykład 4 | 2021-10-27 08:15—09:00 sala 1.01 |
|---|
- tablice jako argument funkcji
- argumenty funkcji main
- biblioteka string
- string vs char[] (aka. C++-string vs C-string)
Polecam: Konwersja C-stringów (wczytanych np. jako elementy {{argc[}}) na liczby]
Wykład: C++20 String Formatting Library
| Wykład 5 | 2021-11-03 08:15—09:00 sala 1.01 |
|---|
- pętla for (w tym składnia z C++11)
- inne struktury danych STL (list, set, unordered_set, deque)
- map
- algorytmy z STL na kontenerach STL i na tablicach
Wykład 5 (PDF)
Przyklady użycia:
[https://www.geeksforgeeks.org/unordered_set-in-cpp-stl/]
[https://www.geeksforgeeks.org/unordered_map-in-cpp-stl/]
| nie ma wykładu (zajęcia wg. planu czwartkowego) | 2021-11-10 |
|---|
| Wykład 6 | 2021-11-17 08:15—09:00 sala 1.01 |
|---|
- struktury i unie
- klasy
- zmienne prywatne i publiczne
- konstruktory
| Wykład 7 | 2021-11-24 08:15—09:00 sala 1.01 |
|---|
Dygresja — rozwiązywanie równań różniczkowych
Numeryczne rozwiązywanie równań różniczkowe (PDF)
| Wykład 8 | 2021-12-01 08:15—09:00 sala 1.01 |
|---|
- konstruktor kopiujący
- destruktory
- const
- dziedziczenie
| Wykład 9 | 2021-12-08 08:15—09:00 sala 1.01 |
|---|
- dziedziczenie
- metody wirtualne
- klasy abstrakcyjne
- przyklad dziedziczących od siebie klas ostream/ofstream/ostringstream
| Wykład 10 | 2021-12-15 08:15—09:00 sala 1.01 |
|---|
- funkcje inline
- #def i preprocesor
- szablony funkcji
- szablony klas
| Wykład 11 | 2021-12-22 08:15—09:00 sala 1.01 |
|---|
- złożoność podstawowych algorytmów algebry liniowej
- jaką złożoność ma liczenie odwrotności macierzy?
- numeryczna algebra liniowa i implementacja za pomocą szablonów
- biblioteka eigen
| Wykład 12 | 2022-01-12 08:15—09:00 sala 1.01 |
|---|
- globalne i lokalne zmienne statyczne
- statyczne składowe klas
- wskaźniki funkcyjne
| Wykład 13 | 2022-01-19 08:15—09:00 sala 1.01 |
|---|
- funkcje anonimowe (lambdy)
- eg. typ wyliczeniowy (enum vs enum class)
| Wykład 14 | 2022-01-26 08:15—09:00 sala 1.01 |
|---|
- Dygresja — numeryczna albegra liniowa
- rozwiązywanie ukladów równań liniowych
- rozkład Choleskiego i LU
- stabilność numeryczna i pivoting
| Supplement |
|---|
- wprowadzenie do programowania współbieżnego (OpenMP)