P2r 2022

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]

Zasady oceniania:
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):
    • Projekt 1 (autor: Krzysztof Piasecki) ODT PDF Dane testowe: l1.inp l2.inp
    • Projekt 2 (autor: Tomasz Kazimierczuk) DOC PDF Dane testowe: log.txt
    • Projekt 3 (autor: Grzegorz Łach) PDF
  • Seria 3 (opublikowanie 26.01.2022, termin do końca sesji egzaminacyjnej —- 13.02.2022)
    • Projekt 1 (autor: Grzegorz Łach) PDF
    • Projekt 3 (autor: Aleksandra Fijałkowska) PDF
    • Projekt 4 (autor: Tomasz Kazimierczuk) PDF

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 1 (PDF)

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 6 (PDF)

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 8-9 (PDF)

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 8-9 (PDF)

Wykład 10 2021-12-15 08:15—09:00 sala 1.01
  • funkcje inline
  • #def i preprocesor
  • szablony funkcji
  • szablony klas

Wykład 10 (PDF)

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)
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License