Moduł oferowany także w ramach programów studiów:
Informacje ogólne:
Nazwa:
Podstawy SOLIDnego programowania
Tok studiów:
2018/2019
Kod:
JIS-1-040-s
Wydział:
Fizyki i Informatyki Stosowanej
Poziom studiów:
Studia I stopnia
Specjalność:
-
Kierunek:
Informatyka Stosowana
Semestr:
0
Profil kształcenia:
Ogólnoakademicki (A)
Język wykładowy:
Polski
Forma i tryb studiów:
Stacjonarne
Strona www:
 
Osoba odpowiedzialna:
dr inż. Rybak Marcin (Marcin.Rybak@fis.agh.edu.pl)
Osoby prowadzące:
mgr Pędziwiatr Tomasz (Tomasz.Pedziwiatr@fis.agh.edu.pl)
Krótka charakterystyka modułu

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

Opis efektów kształcenia dla modułu zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Powiązania z EKK Sposób weryfikacji efektów kształcenia (forma zaliczeń)
Wiedza
M_W001 Student zna znaczenie zasad SOLID IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Udział w dyskusji,
Aktywność na zajęciach
M_W002 Student zna najpopularniejsze wzorce projektowe stosowane w języku Java IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Udział w dyskusji
M_W003 Student zna znaczenie stosowania zasad "clean code" IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Udział w dyskusji,
Aktywność na zajęciach
M_W004 Student stosuje zasady "clean code" w pisaniu oprogramowania IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
Umiejętności
M_U001 Student stosuje zasady SOLID w pisaniu oprogramowania IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu
M_U002 Student stosuje wzorce projektowe w pisaniu oprogramowania IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
M_U003 Student potrafi wskazać elementy wymagające poprawy w zastanym kodzie i poprawić je stosując opanowane na zajęciach zasady SOLID i wzorce projektowe IS1A_W02, IS1A_W03 Wykonanie ćwiczeń laboratoryjnych,
Wykonanie projektu,
Aktywność na zajęciach
Matryca efektów kształcenia w odniesieniu do form zajęć
Kod EKM Student, który zaliczył moduł zajęć wie/umie/potrafi Forma zajęć
Wykład
Ćwicz. aud
Ćwicz. lab
Ćw. proj.
Konw.
Zaj. sem.
Zaj. prakt
Zaj. terenowe
Zaj. warsztatowe
Inne
E-learning
Wiedza
M_W001 Student zna znaczenie zasad SOLID - - + - - - - - - - -
M_W002 Student zna najpopularniejsze wzorce projektowe stosowane w języku Java - - + - - - - - - - -
M_W003 Student zna znaczenie stosowania zasad "clean code" - - + - - - - - - - -
M_W004 Student stosuje zasady "clean code" w pisaniu oprogramowania - - + - - - - - - - -
Umiejętności
M_U001 Student stosuje zasady SOLID w pisaniu oprogramowania - - + - - - - - - - -
M_U002 Student stosuje wzorce projektowe w pisaniu oprogramowania - - + - - - - - - - -
M_U003 Student potrafi wskazać elementy wymagające poprawy w zastanym kodzie i poprawić je stosując opanowane na zajęciach zasady SOLID i wzorce projektowe - - + - - - - - - - -
Treść modułu zajęć (program wykładów i pozostałych zajęć)
Ćwiczenia laboratoryjne:
  1. Na czym polega pisanie dobrego kodu?

    Podstawowe zasady, konwencje nazewnictwa, metryki jakości kodu

  2. Zasada jednej odpowiedzialności

    Kiedy powstała, czemu warto stosować, jak i kiedy stosować

  3. Zasada segregacji interfejsów

    Kiedy powstała, czemu warto stosować, jak i kiedy stosować

  4. Zasada "Otwarty/Zamknięty"

    Kiedy powstała, czemu warto stosować, jak i kiedy stosować

  5. Zasada podstawiania Liskov

    Kiedy powstała, czemu warto stosować, jak i kiedy stosować

  6. Zasada odwrócenia zależności

    Kiedy powstała, czemu warto stosować, jak i kiedy stosować

  7. Pozostałe 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

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

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

  9. 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ą

  10. Wzorzec dekoratora i metody szablonowej

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

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

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

  12. Wzorzec fasady

    Czym jest ten wzorzec, kiedy i jak go stosować

  13. 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

Nakład pracy studenta (bilans punktów ECTS)
Forma aktywności studenta Obciążenie studenta
Sumaryczne obciążenie pracą studenta 50 godz
Punkty ECTS za moduł 2 ECTS
Udział w ćwiczeniach laboratoryjnych 30 godz
Wykonanie projektu 20 godz
Pozostałe informacje
Sposób obliczania oceny końcowej:

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.

Wymagania wstępne i dodatkowe:

Student zna podstawy języka java

Zalecana literatura i pomoce naukowe:
  • Robert C. Martin “Clean Code: A Handbook of Agile Software Craftsmanship”
  • Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates “Head First Design Patterns”
Publikacje naukowe osób prowadzących zajęcia związane z tematyką modułu:

Nie podano dodatkowych publikacji

Informacje dodatkowe:

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 zasadach SOLID, “clean code” oraz stosując wzorce projektowe 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.