Module also offered within study programmes:
General information:
Name:
Informatyka w mechatronice
Course of study:
2019/2020
Code:
RIME-2-102-SI-s
Faculty of:
Mechanical Engineering and Robotics
Study level:
Second-cycle studies
Specialty:
Systemy inteligentne
Field of study:
Mechatronic Engineering
Semester:
1
Profile of education:
Academic (A)
Lecture language:
Polish
Form and type of study:
Full-time studies
Course homepage:
 
Responsible teacher:
dr inż. Miękina Lucjan (miekina@agh.edu.pl)
Module summary

Celem przedmiotu jest zapoznanie studentów z wybranymi metodami i narzędziami informatycznymi, związanymi z językami Java i Scala w zastosowaniu do tworzenia oprogramowania systemów mechatronicznych. Oprócz typowo stosowanego podejścia obiektowego do programowania, wprowadzane są elementy programowania funkcyjnego. Zastosowania obejmują programowanie równoległe, komunikację sieciową z użyciem UDP i TCP, RMI, usługi sieciowe SOAP i REST, podstawy szkieletu aplikacji Spring Framework.

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: he can
M_U001 potrafi zbudować program w języku Java z wykorzystaniem klas, obiektów, interfejsów, typów rodzajowych i wątków, potrafi zastosować wybrane elementy programowania funkcyjnego w języku Java IME2A_U09, IME2A_U12 Execution of laboratory classes,
Execution of a project
M_U002 potrafi zbudować programy w języku Java wykorzystujące protokoły UDP i TCP, a także techniki programowania rozproszonego oparte o RMI , usługi sieciowe SOAP i RESTful, potrafi wykorzystać szkielet Spring Framework do budowy aplikacji IME2A_U12 Execution of laboratory classes,
Execution of a project
M_U003 potrafi zbudować program w języku Scala z wykorzystaniem SBT do zarządzania projektem, szkieletem Play do budowy aplikacji webowej i szkieletem Slick do współpracy z systemem bazodanowym (relacyjnym) IME2A_U12
Knowledge: he knows and understands
M_W001 zna i rozumie zasady programowania obiektowego i funkcyjnego w języku Scala IME2A_W02 Test
M_W002 zna i rozumie działanie, podstawy wykorzystania i sposoby konfiguracji SBT; zna i rozumie strukturę aplikacji webowej zbudowanej z użyciem szkieletu Play Framework; zna i rozumie sposób użycia szkieletu Slick. IME2A_W02 Test
M_W003 zna i rozumie zasady programowania obiektowego w języku Java (klasy, obiekty, dziedziczenie, interfejsy, programowanie rodzajowe i elementy programowania równoległego); zna i rozumie elementy programowania funkcyjnego w Javie; zna i rozumie tworzenie aplikacji z zastosowaniem Spring Framework IME2A_W02 Test results,
Execution of laboratory classes,
Execution of a project,
Test
M_W004 zna i rozumie metody programowania sieciowego i rozproszonego w Javie: UDP, TCP, RMI, usługi sieciowe SOAP i RESTful. IME2A_W02 Test results,
Execution of laboratory classes,
Execution of a project,
Test
Number of hours for each form of classes:
Sum (hours)
Lecture
Audit. classes
Lab. classes
Project classes
Conv. seminar
Seminar classes
Pract. classes
Zaj. terenowe
Zaj. warsztatowe
Prace kontr. przejść.
Lektorat
68 28 0 26 14 0 0 0 0 0 0 0
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
Prace kontr. przejść.
Lektorat
Skills
M_U001 potrafi zbudować program w języku Java z wykorzystaniem klas, obiektów, interfejsów, typów rodzajowych i wątków, potrafi zastosować wybrane elementy programowania funkcyjnego w języku Java - - - - - - - - - - -
M_U002 potrafi zbudować programy w języku Java wykorzystujące protokoły UDP i TCP, a także techniki programowania rozproszonego oparte o RMI , usługi sieciowe SOAP i RESTful, potrafi wykorzystać szkielet Spring Framework do budowy aplikacji - - + + - - - - - - -
M_U003 potrafi zbudować program w języku Scala z wykorzystaniem SBT do zarządzania projektem, szkieletem Play do budowy aplikacji webowej i szkieletem Slick do współpracy z systemem bazodanowym (relacyjnym) - - + + - - - - - - -
Knowledge
M_W001 zna i rozumie zasady programowania obiektowego i funkcyjnego w języku Scala + - + + - - - - - - -
M_W002 zna i rozumie działanie, podstawy wykorzystania i sposoby konfiguracji SBT; zna i rozumie strukturę aplikacji webowej zbudowanej z użyciem szkieletu Play Framework; zna i rozumie sposób użycia szkieletu Slick. + - + + - - - - - - -
M_W003 zna i rozumie zasady programowania obiektowego w języku Java (klasy, obiekty, dziedziczenie, interfejsy, programowanie rodzajowe i elementy programowania równoległego); zna i rozumie elementy programowania funkcyjnego w Javie; zna i rozumie tworzenie aplikacji z zastosowaniem Spring Framework + - - - - - - - - - -
M_W004 zna i rozumie metody programowania sieciowego i rozproszonego w Javie: UDP, TCP, RMI, usługi sieciowe SOAP i RESTful. + - - - - - - - - - -
Student workload (ECTS credits balance)
Student activity form Student workload
Summary student workload 158 h
Module ECTS credits 6 ECTS
Udział w zajęciach dydaktycznych/praktyka 68 h
Preparation for classes 28 h
przygotowanie projektu, prezentacji, pracy pisemnej, sprawozdania 32 h
Realization of independently performed tasks 28 h
Examination or Final test 2 h
Module content
Lectures (28h):
  1. Zastosowania języka programowania Java

    • geneza i cechy języka, zastosowania i główne konstrukcje
    • programowanie równoległe
    • programowanie sieciowe z użyciem protokołów UDP i TCP
    • programowanie rozproszone z użyciem RMI i usług sieciowych SOAP i REST
    • programowanie funkcyjne.
      Wymienione zagadnienia są ilustrowane przykładami rozwiązań w architekturze klient-serwer.

  2. Zastosowania języka programowania Scala

    • wprowadzenie, instalacja i konfiguracja systemu
    • Scala – wprowadzenie do języka
    • SBT – narzędzie zarządzania projektami
    • Play – struktura, szablony, podstawowe konstrukcje składniowe, formularze, walidacja
    • Slick – praca z systemem bazodanowym (relacyjnym)
    • Play – zadania zaawansowane – ajax, transfer plików, web streams

Laboratory classes (26h):
  1. Zastosowania języka programowania Java

    W trakcie ćwiczeń laboratoryjnych studenci:

    • zapoznają się ze środowiskiem Eclipse i programowaniem w języku Java
    • wspólnie dyskutują i rozwijają programy ilustrujące zastosowanie protokołów UDP i TCP w komunikacji sieciowej, technologii Java RMI i usług sieciowych w programowaniu systemów rozproszonych
    • budują aplikacje z zastosowaniem Spring Framework.

  2. Zastosowania języka programowania Scala

    W drugiej części laboratoriów studenci pracują nad aplikacją webową, wykorzystując:

    • język Scala
    • SBT – narzędzie zarządzania projektami
    • Play – szkielet aplikacji webowej
    • Slick – szkielet realizujący współpracę z systemem bazodanowym (relacyjnym)

Project classes (14h):

W trakcie ćwiczeń projektowych studenci realizują projekt z zakresu obejmującego pierwszą lub drugą część wykładu:

  • projekt i implementacja aplikacji w konfiguracji klient-serwer
  • projekt i implementacja aplikacji webowej o zadanej funkcjonalności

Additional information
Teaching methods and techniques:
  • Lectures: Treści prezentowane na wykładzie są przekazywane w formie prezentacji multimedialnej w połączeniu z klasycznym wykładem tablicowym wzbogaconymi o pokazy odnoszące się do prezentowanych zagadnień.
  • Laboratory classes: W trakcie zajęć laboratoryjnych studenci samodzielnie rozwiązują zadany problem praktyczny, dobierając odpowiednie narzędzia. Prowadzący stymuluje grupę do refleksji nad problemem, tak by otrzymane wyniki miały wysoką wartość merytoryczną.
  • Project classes: Studenci wykonują zadany projekt samodzielnie, bez większej ingerencji prowadzącego. Ma to wykształcić poczucie odpowiedzialności za pracę w grupie oraz odpowiedzialności za podejmowane decyzje.
Warunki i sposób zaliczenia poszczególnych form zajęć, w tym zasady zaliczeń poprawkowych, a także warunki dopuszczenia do egzaminu:

Warunkiem zaliczenia ćwiczeń laboratoryjnych jest zamieszczenie w repozytorium poprawnego kodu będącego implementacją zadania określonego w instrukcji do ćwiczeń.
Warunkiem zaliczenia ćwiczeń projektowych jest zamieszczenie w repozytorium poprawnego kodu będącego implementacją zadania określonego w temacie projektu i uzasadnienie przyjętych rozwiązań.

Participation rules in classes:
  • Lectures:
    – Attendance is mandatory: No
    – Participation rules in classes: Studenci uczestniczą w zajęciach poznając kolejne treści nauczania zgodnie z syllabusem przedmiotu. Studenci winni na bieżąco zadawać pytania i wyjaśniać wątpliwości. Rejestracja audiowizualna wykładu wymaga zgody prowadzącego.
  • Laboratory classes:
    – Attendance is mandatory: Yes
    – Participation rules in classes: Studenci wykonują ćwiczenia laboratoryjne zgodnie z materiałami udostępnionymi przez prowadzącego. Student jest zobowiązany do przygotowania się w przedmiocie wykonywanego ćwiczenia, co może zostać zweryfikowane kolokwium w formie ustnej lub pisemnej. Zaliczenie zajęć odbywa się na podstawie zaprezentowania rozwiązania postawionego problemu. Zaliczenie modułu jest możliwe po zaliczeniu wszystkich zajęć laboratoryjnych.
  • Project classes:
    – Attendance is mandatory: Yes
    – Participation rules in classes: Studenci wykonują prace praktyczne mające na celu uzyskanie kompetencji zakładanych przez syllabus. Ocenie podlega sposób wykonania projektu oraz efekt końcowy.
Method of calculating the final grade:

Średnia ważona z ocen:

  • ćwiczeń laboratoryjnych dot. zastosowań języka Java – 25%
  • ćwiczeń laboratoryjnych dot. zastosowań języka Scala – 25%
  • ćwiczeń projektowych – 50%
Sposób i tryb wyrównywania zaległości powstałych wskutek nieobecności studenta na zajęciach:

samodzielna realizacja zaległych tematów i przedstawienie wyników do oceny.

Prerequisites and additional requirements:
  • znajomość obiektowego podejścia do programowania
  • umiejętność programowania obiektowego w języku Java
  • znajomość sieci komputerowych i baz danych
Recommended literature and teaching resources:
  • Wykład
  • Core Java Volume I – Fundamentals, Cay S. Horstmann, 10 Ed.
  • Core Java Volume II – Advanced Features, Cay S. Horstmann, 10 Ed.
  • Functional Programming in Java, Venkat Subramaniam, The Pragmatic Bookshelf, 2014
Scientific publications of module course instructors related to the topic of the module:

Inżynieria oprogramowania. Skrypt AGH SU 1707, Wydawnictwa AGH, Kraków 2009

Additional information:

None