Wydział Informatyki
Kierunek studiów Informatyka Poziom i forma studiów pierwszego stopnia inżynierskie stacjonarne
Specjalność / Ścieżka dyplomowania --- Profil kształcenia ogólnoakademicki
Nazwa przedmiotu Zaawansowane techniki programistyczne Kod przedmiotu INF1ZTP
Rodzaj przedmiotu obowiązkowy
Forma zajęć i liczba godzin W Ć L P Ps T S Semestr 3
30 30 Punkty ECTS 4
Przedmioty wprowadzające Programowanie obiektowe (INF1POB),  
Cele przedmiotu

Zapoznanie studentów z wybranymi wzorcami projektowymi (w tym wzorcami architekturalnymi) i ich przykładowymi zastosowaniami w wybranych językach i bibliotekach (C++, Java, C#, Python) jako zaawansowanymi technikami programowania stosowanymi w programowaniu obiektowym. Nauczenie praktycznego stosowanie wzorców projektowych w prostych programach pisanych na zajęciach. Nauczenie projektowania prostych systemów informatycznych z wykorzystaniem wzorców a także doskonalenie ich implementowania w wybranych językach i dokumentowania. Wykształcenie praktyki korzystania z dokumentacji technicznej wybranych języków programowania. Wykształcenie nawyku systematycznego przyswajania wiedzy z zakresu wykładu. Zespołowe realizowanie prostych systemów informatycznych.

Odniesienia do standardu SFIA:
Programming/software development PROG - poziom 2, 3
Software design SWDN - poziom 2

Treści programowe

Wykład:
Pojęcia wzorca projektowego. Klasyfikacja wzorców projektowych. Wzorce projektowe i architekturalne (nazwy angielskie): Singleton, Factory Method, Prototype, Abstract Factory, Builder, Proxy, Adapter, Decorator, Composite, Flyweight, Facade, Bridge, Command, Strategy, TemplateMethod, Iterator, State, Mediator, Observer, Visitor, Layers, Pipes and Filters, Blackboard, Broker, Refleksja, Microkernel, Model-View-Controller, Presentation-Abstraction-Control. Języki o dynamicznym typowaniu (Smalltalk, Python). Metaklasy. Techniki/technologie wykorzystujące wzorce: Java I/O, C++ STL. Projektowanie z wykorzystaniem wzorców (JUnit), języki wzorców.

Pracownia specjalistyczna:
Pisanie prostych programów wykorzystujących wybrane wzorce projektowe. Projektowanie i implementacja większych programów wykorzystujących wybrane wzorce projektowe.

Metody dydaktyczne

wykład problemowy,   programowanie z użyciem komputera,   wykład informacyjny,  

Forma zaliczenia

Wykład: zaliczenie pisemne.
Pracownia specjalistyczna: ocena wybranych programów realizowanych na zajęciach, większy program/projekt realizowany częściowo poza zajęciami.

Symbol efektu uczenia się Zakładane efekty uczenia się Odniesienie do kierunkowych efektów uczenia się
EU1 wzorce projektowego (w tym na przykładach w tworzonych programach) INF1_W04
INF1_W12
EU2 stosować wzorce projektowe w tworzonych prostych programach INF1_U05
EU3 projektować z wykorzystaniem wzorców projektowych, implementować i dokumentować proste systemy informatyczne INF1_U04
INF1_U05
EU4 pozyskiwać dodatkową wiedzę nt. szczegółowych rozwiązań wybranych języków programowania na podstawie dokumentacji technicznej INF1_U18
EU5 pracować w małych zespołach nad prostymi projektami H1_U02
Symbol efektu uczenia się Sposób weryfikacji efektu uczenia się Forma zajęć na której zachodzi weryfikacja
EU1 zaliczenie pisemne W
EU2 ocena pisanych programów Ps
EU3 ocena prostego projektu (w tym projekt z użyciem wzorców) Ps
EU4 ocena większego programu pod względem użytych mechanizmów i bibliotek Ps
EU5 ocena prostego projektu (podział i organizacja pracy) Ps
Bilans nakładu pracy studenta (w godzinach) Liczba godz.
Wyliczenie
1 - Udział w wykładach 30
2 - Udział w pracowni specjalistycznej 30
3 - Przygotowanie do pracowni specjalistycznej 5
4 - Udział w konsultacjach 4
5 - Realizacja zadań projektowych 26
6 - Przygotowanie do zaliczenia 5
RAZEM: 100
Wskaźniki ilościowe GODZINY ECTS
Nakład pracy studenta związany z zajęciami wymagającymi bezpośredniego udziału nauczyciela 64
(1)+(2)+(4)
2.6
Nakład pracy studenta związany z zajęciami o charakterze praktycznym 61
(2)+(3)+(5)
2.4
Literatura podstawowa

1. E. Freeman, E. Robson, Wzorce projektowe: tworzenie rozszerzalnego i łatwego w utrzymaniu oprogramowania obiektowego, Wyd. 2, Helio: O'Reilly, 2022
2. A. Shalloway, J.R. Trott, Programowanie zorientowane obiektowo: wzorce projektowe, Wyd. 2, Helion, 2019
3. D. Kransokucki, Wzorce projektowe: leksykon kieszonkowy, Helion, 2017

Literatura uzupełniająca

1. E. Gamma, R. Helm, R. Johnson, J. Vlissides, Design Patterns: elements of reusable object-oriented software, Addison-Wesley Publ., 1995
2. F. Buschmann, Pattern-oriented software architecture [Vol. 1], A system of patterns, John Wiley & Sons, 2008
3. F. Buschmann, K. Henney, D.C. Schmidt, Pattern-oriented software architecture. Vol.5, On patterns and pattern languages. John Wiley a. Sons, 2007
4. B. Eckel, Thinking in Patterns in Java, http://www.mindview.net/Books/TIPatterns/
5. B. Eckel, Thinking in Python, http://www.mindview.net/Books/TIPython

Jednostka realizująca Katedra Oprogramowania Data opracowania programu
Program opracował(a) dr inż. Marek Tabędzki 2023.04.04