Politechnika Warszawska - Centralny System Uwierzytelniania
Strona główna

Zaawansowane programowanie w C++

Informacje ogólne

Kod przedmiotu: 103A-INxxx-ISP-ZPR
Kod Erasmus / ISCED: (brak danych) / (brak danych)
Nazwa przedmiotu: Zaawansowane programowanie w C++
Jednostka: Wydział Elektroniki i Technik Informacyjnych
Grupy: ( Metody programowania )-Informatyka-inż.-EITI
( Przedmioty obieralne - Informatyka techniczna )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty obieralne )-Automatyka i robotyka-inż.-EITI
( Przedmioty obieralne )-Cyberbezpieczeństwo-inż.-EITI
( Przedmioty obieralne )-Inżynieria oprogramowania-inż.-EITI
( Przedmioty obieralne )-Sztuczna inteligencja-inż.-EITI
( Przedmioty podstawowe )-Inżynieria systemów informatycznych-mgr.-EITI
( Przedmioty techniczne )---EITI
Punkty ECTS i inne: 4.00 Podstawowe informacje o zasadach przyporządkowania punktów ECTS:
  • roczny wymiar godzinowy nakładu pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się dla danego etapu studiów wynosi 1500-1800 h, co odpowiada 60 ECTS;
  • tygodniowy wymiar godzinowy nakładu pracy studenta wynosi 45 h;
  • 1 punkt ECTS odpowiada 25-30 godzinom pracy studenta potrzebnej do osiągnięcia zakładanych efektów uczenia się;
  • tygodniowy nakład pracy studenta konieczny do osiągnięcia zakładanych efektów uczenia się pozwala uzyskać 1,5 ECTS;
  • nakład pracy potrzebny do zaliczenia przedmiotu, któremu przypisano 3 ECTS, stanowi 10% semestralnego obciążenia studenta.
Język prowadzenia: polski
Jednostka decyzyjna:

103000 - Wydział Elektroniki i Technik Informacyjnych

Kod wydziałowy:

ZPR

Numer wersji:

1

Skrócony opis:

Celem przedmiotu jest zapoznanie słuchaczy z zagadnieniami tworzenia oprogramowania w języku C++, w oparciu o współcześnie stosowane techniki i biblioteki. Wykład omawia zagadnienia istotne przy tworzeniu złożonych aplikacji i jest rozwinięciem programowania obiektowego. W szczególności programowanie generyczne i uogólnione, zarządzanie zasobami przy uwzględnieniu obsługi błędów przez mechanizm wyjątków, a także programowanie wielowątkowe. Omawiane są udogodnienia oferowane przez bibliotekę standardową oraz przez biblioteki Boost, pozwalające na wydajną implementację aplikacji niezależnych od platformy. Omawiany jest język Rust oraz tworzenie aplikacji heterogenicznych, wykorzystujących moduły napisane w różnych językach programowania. Zadanie projektowe pozwala zastosować omawiane koncepcje w praktyce, a także pozwala zapoznać się z metodami pracy zespołowej. Zakładana jest znajomość programowania strukturalnego i obiektowego oraz praktyczna znajomość języka C++ i języka Python.

.

Pełny opis:


Wykłady

  1. Wprowadzenie (2 godz.): Regulamin i informacje o przedmiocie. Popularność języków programowania, cechy C++, standardy C++ (C++11/14/17/20), najważniejsze narzędzia (powtórzenie z SWO).

  2. Zarządzanie zasobami (4 godz.): Wzorzec RAII. Zarządzanie zasobami gdy uwzględniamy mechanizm wyjątków. Sprytne wskaźniki typu unique_ptr (powtórzenie z PROI). Sprytne wskaźniki z licznikiem odniesień (shared_ptr). Zależności cykliczne. Własne mechanizmy obsługi sterty. Allokatory, w tym small object allocator.

  3. Stałość. C++ jako język zorientowany na wartości (2 godz): Stałość fizyczna i logiczna. Std::optional i std::variant.

  4. Szablony, programowanie generyczne, biblioteka standardowa (4 godz.): Konkretyzacja i specjalizacja szablonu, szablony jako parametry szablonów. Trejty. Statyczny polimorfizm, kontenery, algorytmy biblioteki STL, iteratory, strażniki, funkcje anonimowe (lambda), koncepcje.

  5. Kolokwium nr 1 (2 godz)

  6. Kontenery wielowymiarowe. Biblioteki boost. Boost graph library(2godz.)

  7. Programowanie współbieżne w C++ (4 godz).: Wątki std::thread, proste blokady std::mutex, skalowalność (powtórzenie z SWO). Instrukcje atomowe. Algorytmy bez blokad. Wektorowe i współbieżne elementy biblioteki standardowej. OpenMP

  8. Rust (4 godz), zarządzanie zasobami, programowanie współbieżne.

  9. Programowanie w trybie wektorowym (2 godz.): Execution w STL.CPU/GPU. CUDA. OpenCL.

  10. Łączenie C++ i Pythona (2 godz.): Osadzanie C++ w Pythonie. Łączenie interpretera Pythona do kodu C++. Wymiana danych. Wydajność.

  11. Serializacja i trwałość (2 godz.): Przekształcanie obiektów na postać szeregową. Problem zgodności. Bazy danych. Pliki.

  12. C++ i przetwarzanie obrazów, biblioteka OpenCV (2 godz.)

  13. Kolokwium nr 2 (2 godz.)


Zakres projektu
Zadanie praktyczne polegać będzie na wykonaniu projektu, a następnie implementacji wybranego zagadnienia w C++, wykorzystując omawianie techniki: bibliotekę standardową, wzorce projektowe i wielowątkowość. Projekty będą wykonywane w zespołach dwuosobowych, przy użyciu narzędzi wspierających tego typu prace.

Poprzedniki
Typ poprzednikaNr poprzednikaKod poprzednikaNazwa poprzednika
Wymagany1103A-INxxx-ISP-PROIProgramowanie obiektowe
Wymagany1103A-INxxx-ISP-EOOPObject-Oriented Programming
Wymagany1103A-CTxxx-ISA-EPRO3Programming 3
Wymagany1103A-TExxx-ISP-PROEProgramowanie obiektowe

Literatura:

    1. A. Alexandrescu. Nowoczesne projektowanie w C++. WNT, 2005.

    2. A. Alexandrescu and H. Sutter. Je,zyk C++. Standardy kodowania.
      101 zasad, wytycznych i zalecanych praktyk. Helion, 2005.

    3. E. Gamma, R. Helm, R. Johnson, and J. Vlissides. Wzorce
      projektowe. WNT, 2005.

    4. S. Meyers. 50 efektywnych sposobów na udoskonalenie Twoich
      programów. HELION, 2003.

    5. R. Nowak and A. Pająk. Język C++: mechanizmy, wzorce, biblioteki.
      BTC, 2010.

    6. B. Stroustrup. Język C++. WNT, 2002.

    7. B. Stroustrup. Programowanie. Teoria i praktyka z wykorzystaniem
      C++. Helion, 2010.

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. letni" (w trakcie)

Okres: 2024-02-19 - 2024-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Łukasz Neumann, Robert Nowak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2023/2024 - sem. zimowy" (zakończony)

Okres: 2023-10-01 - 2024-02-18
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 65 miejsc więcej informacji
Wykład, 30 godzin, 65 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Łukasz Neumann, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. letni" (zakończony)

Okres: 2023-02-20 - 2023-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Łukasz Neumann, Robert Nowak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2022/2023 - sem. zimowy" (zakończony)

Okres: 2022-10-01 - 2023-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Łukasz Neumann, Robert Nowak, Witold Wysota
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2021/2022 - sem. letni" (zakończony)

Okres: 2022-02-23 - 2022-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. letni" (zakończony)

Okres: 2021-02-20 - 2021-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 45 miejsc więcej informacji
Wykład, 30 godzin, 45 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2020/2021 - sem. zimowy" (zakończony)

Okres: 2020-10-01 - 2021-02-19
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 45 miejsc więcej informacji
Wykład, 30 godzin, 45 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. letni" (zakończony)

Okres: 2020-02-22 - 2020-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2019/2020 - sem. zimowy" (zakończony)

Okres: 2019-10-01 - 2020-02-21
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2018/2019 - sem. letni" (zakończony)

Okres: 2019-02-18 - 2019-09-30
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Zajęcia w cyklu "rok akademicki 2018/2019 - sem. zimowy" (zakończony)

Okres: 2018-10-01 - 2019-02-17
Wybrany podział planu:
Przejdź do planu
Typ zajęć:
Projekt, 15 godzin, 60 miejsc więcej informacji
Wykład, 30 godzin, 60 miejsc więcej informacji
Koordynatorzy: Robert Nowak
Prowadzący grup: Rafał Biedrzycki, Konrad Grochowski, Robert Nowak
Lista studentów: (nie masz dostępu)
Zaliczenie: Ocena łączna
Jednostka realizująca:

103200 - Instytut Informatyki

Opisy przedmiotów w USOS i USOSweb są chronione prawem autorskim.
Właścicielem praw autorskich jest Politechnika Warszawska.
pl. Politechniki 1, 00-661 Warszawa tel: (22) 234 7211 https://pw.edu.pl kontakt deklaracja dostępności USOSweb 7.0.0.0-7 (2024-03-18)