Module also offered within study programmes:
General information:
Name:
Practical design patterns in programming
Course of study:
2018/2019
Code:
JIS-1-014-s
Faculty of:
Physics and Applied Computer Science
Study level:
First-cycle studies
Specialty:
-
Field of study:
Applied Computer Science
Semester:
0
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr inż. Rybak Marcin (Marcin.Rybak@fis.agh.edu.pl)
Academic teachers:
mgr Pędziwiatr Tomasz (Tomasz.Pedziwiatr@fis.agh.edu.pl)
Module summary

Student opanowuje wiedzę z zakresu “clean code” oraz najpopularniejszych wzorców projektowych w języku java, a następnie potrafi zastosować powyższą wiedzę w praktyce.

Description of learning outcomes for module
MLO code Student after module completion has the knowledge/ knows how to/is able to Connections with FLO Method of learning outcomes verification (form of completion)
Skills
M_U001 Student stosuje wzorce projektowe w pisaniu oprogramowania IS1A_W02, IS1A_W03, IS1A_W07, IS1A_W04 Execution of laboratory classes,
Execution of a project
M_U002 Student potrafi wskazać elementy wymagające poprawy w zastanym kodzie i poprawić je stosując opanowane na zajęciach wzorce projektowe IS1A_W02, IS1A_W03, IS1A_W07, IS1A_W04 Execution of laboratory classes,
Execution of a project,
Activity during classes
Knowledge
M_W001 Student zna wybrane wzorce projektowe IS1A_W02, IS1A_W03, IS1A_W07, IS1A_W04 Execution of laboratory classes,
Execution of a project,
Participation in a discussion
M_W002 Student rozumie jak stosowanie wzorców projektowych pomaga w tworzeniu "czystego kodu" IS1A_W02, IS1A_W03, IS1A_W07, IS1A_W04 Activity during classes
FLO matrix in relation to forms of classes
MLO code Student after module completion has the knowledge/ knows how to/is able to Form of classes
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Others
E-learning
Skills
M_U001 Student stosuje wzorce projektowe w pisaniu oprogramowania - - + - - - - - - - -
M_U002 Student potrafi wskazać elementy wymagające poprawy w zastanym kodzie i poprawić je stosując opanowane na zajęciach wzorce projektowe - - + - - - - - - - -
Knowledge
M_W001 Student zna wybrane wzorce projektowe - - + - - - - - - - -
M_W002 Student rozumie jak stosowanie wzorców projektowych pomaga w tworzeniu "czystego kodu" - - + - - - - - - - -
Module content
Laboratory classes:
  1. Na czym polega pisanie dobrego kodu?

    Podstawowe zasady, konwencje nazewnictwa, metryki jakości kodu

  2. Ważne zasady które warto stosować pisząc kod

    Podejście obiektowe w programowaniu, programowanie funkcyjne, dziedziczenie a kompozycja, czym jest bezstanowość i niezmienność (immutability) klas

  3. Dlaczego warto używać wzorców projektowych

    Czym są wzorce, jak się ich uczyć, jakie są najpopularniejsze wzorce projektowe

  4. Wzorzec budowniczego i fabryki

    Czym są te wzorce, kiedy i jak stosować, jak zaimplementować budowniczego korzystając z własności Javy w wersji 8, różnice między fabryką abstrakcyjną, fabryką statyczną i metodą fabrykującą

  5. Wzorzec dekoratora i fasady

    Czym są te wzorce, kiedy i jak stosować, w jakich sytuacjach nie powinno się ich stosować

  6. Wzorzec łańcucha odpowiedzialności i wizytatora

    Czym są te wzorce, kiedy i jak stosować, w jakich sytuacjach nie powinno się ich stosować

  7. Wzorzec metody szablonowej

    Czym jest ten wzorzec, kiedy i jak go stosować

  8. W jaki sposób framework Spring pomaga w pisaniu kodu?

    Co to jest Spring, z jakich modułów się składa, co warto z niego stosować i jak wpływa to na pisanie dobrego kodu

Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 80 h
Module ECTS credits 3 ECTS
Participation in laboratory classes 30 h
Completion of a project 50 h
Additional information
Method of calculating the final grade:

Ocena końcowa będzie wypadkową oceny wykonanego na koniec zajęć projektu oraz aktywności na zajęciach polegających na udziale w dyskusji oraz realizowania ćwiczeń laboratoryjnych.

Prerequisites and additional requirements:

Student zna podstawy dowolnego języka obiektowego (preferowana java)

Recommended literature and teaching resources:
  • Robert C. Martin “Clean Code: A Handbook of Agile Software Craftsmanship”
  • Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates “Head First Design Patterns”
Scientific publications of module course instructors related to the topic of the module:

Additional scientific publications not specified

Additional information:

Podczas zajęć duży nacisk będzie położony na zastosowanie poznanych na zajęciach zasad w praktyce podczas tworzenia oprogramowania. Student będzie w stanie wskazać również fragmenty wymagające poprawy w zastanym kodzie źródłowym i opierając się na poznanych wzorcach projektowych dokonać poprawienia tegoż kodu.
Pomysł na przedmiot powstał w wyniku obserwacji prowadzących, którzy mają ponad 10-letnie doświadczenie w branży IT, brali udział w licznych procesach rekrutacyjnych absolwentów uczelni technicznych, jak również mieli/mają pod opieką w swoich zespołach tychże absolwentów.
Prowadzący mają nadzieję że wdrożenie tego przedmiotu pozwoli zmniejszyć dystans pomiędzy umiejętnościami nabytymi podczas studiów przez absolwentów a oczekiwaniami firm IT ich zatrudniających i umożliwi absolwentom szybkie zaadaptowanie się do pracy w zespołach IT.