- Nazwa przedmiotu:
- Zaawansowane programowanie w C++
- Koordynator przedmiotu:
- Robert NOWAK
- Status przedmiotu:
- Fakultatywny dowolnego wyboru
- Poziom kształcenia:
- Studia I stopnia
- Program:
- Informatyka
- Grupa przedmiotów:
- Przedmioty techniczne
- Kod przedmiotu:
- ZPR
- Semestr nominalny:
- 4 / rok ak. 2018/2019
- Liczba punktów ECTS:
- 4
- Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
- 110; 30 (wykład) + 45 (projekt) + 25 (praca własna, czytanie kodu, rozwiązywanie mini-zadań, przygotowywanie się do kolokwiów)
- Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
- 2
- Język prowadzenia zajęć:
- polski
- Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
- 2
- Formy zajęć i ich wymiar w semestrze:
-
- Wykład30h
- Ćwiczenia0h
- Laboratorium0h
- Projekt15h
- Lekcje komputerowe0h
- Wymagania wstępne:
- programowanie strukturalne
programowanie obiektowe
podstawowe algorytmy i struktury danych
- Limit liczby studentów:
- 60
- Cel przedmiotu:
- 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, w szczególności omawia się wzorce projektowe, 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ą (w tym wersja biblioteki C++11) oraz przez biblioteki Boost, pozwalające na wydajną implementację aplikacji niezależnych od platformy.
Zadanie projektowe pozwala zastosować omawiane koncepcje w praktyce, a także pozwala zapoznać się z metodami pracy zespołowej.
- Treści kształcenia:
- wzorce projektowe (fabryki, prototyp, singleton, adapter, kompozyt, dekorator, fasada, proxy, komenda, iterator, obserwator, wizytator, wielometoda)
zarządzanie zasobami przy uwzględnieniu mechanizmu wyjątków, sprytne wskaźniki
aplikacje wielowątkowe, synchronizacja, aktywny obiekt, asynchroniczna obsługa urządzeń wejścia-wyjścia
programowanie generyczne, metaprogramowanie, klasy cech, klasy wytycznych, asercje statyczne i klasy koncepcji
organizacja biblioteki standardowej, obiekty funkcyjne, bind, lambda
biblioteki boost, dodatkowe kontenery (grafy, tablice wielowymiarowe), przetwarzanie tekstu, wyrażenia regularne
łączenie kodu tworzonego w C++ i w innych językach programowania, biblioteka boost::python
elementy inżynierii oprogramowania: rola projektowania i testowania, omówienie podstawowych narzędzi, m.in. repozytorium, biblioteki do tworzenia testów jednostkowych
- Metody oceny:
- Przedmiot jest zaliczany na podstawie wyników sprawdzianów, przeprowadzanych podczas wykładów oraz wyników zadania praktycznego.
Zadanie praktyczne polega na wykonaniu projektu, a następnie implementacji wybranego zagadnienia w C++, wykorzystując omawianie techniki: bibliotekę standardową, wzorce projektowe i wielowątkowość. Projekty są wykonywane w zespołach, przy użyciu narzędzi wspierających tego typu prace.
- Egzamin:
- nie
- 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.
B. Karlsson, Więcej niż C++. Wprowadzenie do bibliotek Boost, Helion, 2006.
S. Meyers, 50 efektywnych sposobów na udoskonalenie Twoich programów, Helion, 2003.
B. Stroustrup, Programowanie. Teoria i praktyka z wykorzystaniem C++, Helion, 2010.
Bruce Eckel, Thinking in C++, Helion 2002.
R. Nowak, A. Pająk, Język C++: mechanizmy, wzorce, biblioteki, BTC, 2010.
- Witryna www przedmiotu:
- https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INxxx-ISP-ZPR; http://studia.elka.pw.edu.pl/pub/ZPR.A/
- Uwagi:
Efekty uczenia się
Profil ogólnoakademicki - wiedza
- Charakterystyka ZPR_W01
- Potrafi zidentyfikować i wykorzystać typowe rozwiązania problemów projektowych w programowaniu obiektowym
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe:
K_W12, K_W09
Powiązane charakterystyki obszarowe:
I.P6S_WG
- Charakterystyka ZPR_W02
- Potrafi przeanalizować i wykorzystać podstawowe techniki stosowanie w programowaniu generycznym (wykorzystanie szablonów)
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe:
K_W09, K_W12
Powiązane charakterystyki obszarowe:
I.P6S_WG
Profil ogólnoakademicki - umiejętności
- Charakterystyka ZPR_U01
- Potrafi wykorzystać różne przepływy sterowania w aplikacjach (instrukcje sterujące, rekurencja, wyjątki), potrafi uwzględnić zjawiska występujące w aplikacjach współbieżnych (wielowątkowych)
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe:
K_U09, K_U13, K_U20
Powiązane charakterystyki obszarowe:
I.P6S_UU, I.P6S_UW, III.P6S_UW.4.o, III.P6S_UW.3.o
- Charakterystyka ZPR_U02
- Potrafi wykorzystywać znane rozwiązania typowych problemów projektowych (wzorce projektowe)
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe:
K_U09, K_U13, K_U20
Powiązane charakterystyki obszarowe:
I.P6S_UU, I.P6S_UW, III.P6S_UW.4.o, III.P6S_UW.3.o
- Charakterystyka ZPR_U03
- Potrafi wykorzystywać udogodnienia oferowane przez biblioteki, w tym przez bibliotekę standardową języka C++
Weryfikacja: kolokwium
Powiązane charakterystyki kierunkowe:
K_U13, K_U20, K_U09
Powiązane charakterystyki obszarowe:
III.P6S_UW.4.o, I.P6S_UW, III.P6S_UW.3.o, I.P6S_UU
- Charakterystyka ZPR_U04
- Potrafi tworzyć wydajne i przenośne (na poziomie kodu źródłowego) aplikacje w C++ tworząc kod dobrej jakości wraz z dokumentacją wykorzystując dostępne narzędzia
Weryfikacja: projekt realizowany w zespołach 2 lub 3 osobowych
Powiązane charakterystyki kierunkowe:
K_U07, K_U09, K_U13, K_U15, K_U19, K_U20, K_U21
Powiązane charakterystyki obszarowe:
I.P6S_UK, I.P6S_UU, I.P6S_UW, III.P6S_UW.4.o, III.P6S_UW.3.o
- Charakterystyka ZPR_U05
- Potrafi pracować w zespole przy realizacji projektu programistycznego
Weryfikacja: projekt realizowany w zespołach 2 lub 3 osobowych
Powiązane charakterystyki kierunkowe:
K_UK03, K_UK04
Powiązane charakterystyki obszarowe:
I.P6S_UO