Nazwa przedmiotu:
Programowanie aplikacyjne
Koordynator przedmiotu:
Rajmund Kożuszek
Status przedmiotu:
Obowiązkowy
Poziom kształcenia:
Studia I stopnia
Program:
Informatyka
Grupa przedmiotów:
Przedmioty techniczne
Kod przedmiotu:
PAP
Semestr nominalny:
3 / rok ak. 2021/2022
Liczba punktów ECTS:
5
Liczba godzin pracy studenta związanych z osiągnięciem efektów uczenia się:
1. liczba godzin kontaktowych – 62 godz., w tym  obecność na wykładach: 30 godz.,  udział w konsultacjach związanych z problematyką poruszaną na wykładzie: 9 godz  zajęcia wprowadzające do projektu: 13 godz.,  udział w konsultacjach projektowych: 8 godz.,  finalne ocenianie projektu: 2 godz., 2. praca własna studenta – 70 godz., w tym  udział w dyskusji w trakcie wykładu: 1 godz.,  analiza literatury i materiałów wykładowych związana z przygotowaniem do kolejnych wykładów, projektu, instalacja oprogramowania: 15 godz.,  realizacja zadań projektowych, przygotowanie raportu: 40 godz. ,  przygotowanie do kolokwium: 14 godz. Łączny nakład pracy studenta wynosi 132 godz., co odpowiada 5 pkt. ECTS.
Liczba punktów ECTS na zajęciach wymagających bezpośredniego udziału nauczycieli akademickich:
2,25 pkt. ECTS, co odpowiada 62 godz. kontaktowym
Język prowadzenia zajęć:
polski
Liczba punktów ECTS, którą student uzyskuje w ramach zajęć o charakterze praktycznym:
2,25 pkt. ECTS, co odpowiada 63 godz. zajęć projektowych przygotowaniu do tych zajęć oraz przygotowanie raportu
Formy zajęć i ich wymiar w semestrze:
  • Wykład30h
  • Ćwiczenia0h
  • Laboratorium0h
  • Projekt30h
  • Lekcje komputerowe0h
Wymagania wstępne:
Programowanie obiektowe, Sieci komputerowe
Limit liczby studentów:
150
Cel przedmiotu:
Celem przedmiotu jest zapoznanie studenta z metodyką projektowania i programowaniem graficznych interfejsów użytkownika (GUI). Studenci poznają zagadnienia zdarzeń, kolejki zdarzeń, przenośnych i natywnych metod synchronizacji, programowania współbieżnego w kontekście tworzenia GUI. Poruszony zostanie aspekt programowania komponentowego na przykładzie tworzenia komponentów interfejsu użytkownika. Przedstawiony zostanie sposób kompozycji GUI z wykorzystaniem różnych metod: czysto programowe, języki opisu bazujące na XML (fxml) oraz interfejsy tworzone na wzór aplikacji webowych (HTML). Przedstawione zostaną metody korzystania z baz danych. Projekt umożliwi praktyczne zapoznanie się z jednym lub wieloma aspektami tworzenia aplikacji GUI.
Treści kształcenia:
WYKŁADY: 1. Interfejsy użytkownika. Interfejsy graficzne. Model warstwowy interfejsów graficznych. Metafory. WIMP. Programowanie zdarzeniowe. Programowanie zdarzeń z wykorzystaniem języka Java. 2. Pojęcie narzędzi RAD. Komponenty interfejsu użytkownika. Tworzenie aplikacji przenośnych między systemami Windows/Linux. Biblioteka Qt. 3. Wprowadzenie do języka Java. Kod zarządzany. Klasy anonimowe w języku Java. Wyrażenia lambda. 4. JavaFX. Drzewo komponentów, układy – metody rozmieszczania komponetów. Wiązania. Metody tworzenia interfejsu użytkownika. Programowanie kontrolera. Fxml. 5. Wątki. Metody tworzenia, zarządzania i synchronizacji wątków w języku Java. 6. Budowa warstwy dostępu do danych w aplikacjach GUI wykorzystująca istniejące narzędzia (Spring, Hibernate). 7. Interfejs użytkownika wykorzystujący język HTML i arkusze stylów CSS. Bootstrap. Formy. Protokół HTTP. Tworzenie GUI aplikacji webowej. Komunikacja REST. Format JSON. Pojęcie drzewa DOM. 8. Aplikacje webowe w Javie. Pojęcie servletu. Ewolucja od JSP do JSF. Serwery aplikacyjne w Javie. 9. Narzędzia zarządzania źródłami oprogramowania w Javie. Testy automatyczne w Javie. Narzędzia konfiguracji oprogramowania w Javie (maven, gradle, ...). 10. Języki dynamiczne. Język JavaScript. Infrastruktura node.js. Narzędzia do zarządzania pakietami. Narzędzia do pakowania aplikacji. Narzędzia do testowania. Narzędzia do ciągłej integracji. 11. Zastosowanie pojęcia wiązania do tworzenia GUI na przykładzie bibliotek wspierających tworzenie GUI aplikacji webowych (React, Angular lub następcy). Implementacja aplikacji okienkowej w Javascript z wykorzystaniem wiedzy i narzędzi do tworzenia aplikacji webowej (Electron) PROJEKT: W ramach projektu zespół 2-3 osób ma przygotować niewielką aplikację umożliwiającą tworzenie, edycję i wyszukiwanie informacji w zadanej przez prowadzącego bazie danych typu relacyjnego lub dokumentowego (NoSQL). Projekt będzie podzielony na etapy. Na każdym etapie oprócz tworzonego kodu oceniane będą takie elementy jak projekt interfejsu użytkownika, zarządzanie źródłami, tworzenie testów automatycznych, ciągła integracja oprogramowania.
Metody oceny:
Realizacja przedmiotu obejmuje następujące formy zajęć: – wykład prowadzony w wymiarze 2 godz. tygodniowo. Część tematów wykładowych będzie realizowana z wykorzystaniem metod aktywnego uczenia (active learning methods) czyli wykład poświęcony będzie dyskusji wniosków wynikających z wiedzy pozyskanej przez studentów na zadane tematy. Zastosowanie formy dyskusji wymusi konieczność przygotowania i przemyślenia tez, które poszczególne grupy studentów będą miały za zadanie przedstawić. – zajęcia projektowe; w ramach tych zajęć student – korzystając z konsultacji prowadzącego zajęcia – będzie wykonywał zadanie związane z realizacją prostej aplikacji. Wybór tematów projektowych będzie przeprowadzany tak, żeby określić potrzeby użytkownika i zawrzeć je w projekcie. Projekt będzie prowadzony zgodnie z metodyką Problem Based Learning, gdzie na początku zajęć projektowych przed każdą z grup postawiony będzie problem, a wykłady będą wnosiły potrzebną wiedzę do jego wykonania. Sprawdzanie założonych efektów kształcenia realizowane jest przez: – ocenę wiedzy i umiejętności związanych z realizacją zadań projektowych – ocenę prezentacji, dokumentacji i raportów z systemu; – ocenę wiedzy i umiejętności wykazanych na kolokwiach oraz – w przypadkach szczególnych – na rozmowie indywidualnej,
Egzamin:
nie
Literatura:
- Pro JavaFX 9: A Definitive Guide to Building Desktop, Mobile, and Embedded Java Client, Apress 2018 - Cay S. Horstmann: Java. Podstawy. Wydanie X, Helion 2016 - Cay S. Horstmann: Java. Techniki zaawansowane. Wydanie X, Helion 2017 - Building Cross-Platform Desktop Applications with Electron, Packt 2017 - IntelliJ IDEA, Community Edition - InteliJ Webstorm, - Eclipse
Witryna www przedmiotu:
https://usosweb.usos.pw.edu.pl/kontroler.php?_action=katalog2/przedmioty/pokazPrzedmiot&prz_kod=103A-INxxx-ISP-PAP
Uwagi:
(-)

Efekty uczenia się

Profil ogólnoakademicki - wiedza

Charakterystyka W01
student ma szczegółową wiedzę w zakresie projektowania układu interfejsów graficznych zgodnych z obowiązującymi standardami
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG
Charakterystyka W02
student zna pojęcie wątków i rozumie potrzebę ich wykorzystania w projektowaniu aplikacji
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: III.P6S_WG, P6U_W, I.P6S_WG.o
Charakterystyka W03
student ma szczegółową wiedzę w zakresie metod asynchronicznych oraz rozumie różnicę w stosunku do wykorzystania wątków
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG
Charakterystyka W04
student zna biblioteki umożliwiające tworzenie interfejsów użytkownika
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG
Charakterystyka W05
student zna wzorce projektowe wykorzystywane do tworzenia interfejsów użytkownika i potrafi świadomie wybrać wzorzec odpowiedni dla tworzonej aplikacji (oraz umożliwiający przeprowadzenie testów automatycznych)
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG
Charakterystyka W06
student zna podstawowe mechanizmy wykorzystywane w aplikacjach webowych
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG
Charakterystyka W07
student zna podstawowe metody tworzenia warstwy dostępu do danych, rozumie potrzebę stosowania istniejących bibliotek zamiast tworzenia tej warstwy ręcznie
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: W08
Powiązane charakterystyki obszarowe: P6U_W, I.P6S_WG.o, III.P6S_WG

Profil ogólnoakademicki - umiejętności

Charakterystyka U01
potrafi tworzyć i zarządzać testami automatycznymi przy testowaniu aplikacji z interfejsem użytkownika
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: U03
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U02
potrafi zaprojektować, zrealizować, przetestować i ocenić – ze względu na właściwie dobrany zestaw kryteriów, system informatyczny
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: U07
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U03
potrafi praktycznie zastosować metody asynchroniczne w tworzonych aplikacjach
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: U07
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U04
potrafi zaprojektować i praktycznie zrealizować aplikację wykorzystującą wątki
Weryfikacja: projekt, kolokwium
Powiązane charakterystyki kierunkowe: U07
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U05
potrafi zastosować jeden z istniejących mechanizmów tworzenia warstwy dostępu do danych w aplikacjach użytkownika
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: U07
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UW.o, III.P6S_UW.o
Charakterystyka U06
ma umiejętność samokształcenia – elementem projektu będzie zastosowanie jednej z aktualnych bibliotek do tworzenia interfejsu użytkownika, które nie będą szczegółowo omawiane na wykładzie
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: U12
Powiązane charakterystyki obszarowe: P6U_U, I.P6S_UU

Profil ogólnoakademicki - kompetencje społeczne

Charakterystyka K01
ma umiejętność oceny swojej wiedzy na podstawie wyników opracowanego projektu
Weryfikacja: projekt
Powiązane charakterystyki kierunkowe: K01
Powiązane charakterystyki obszarowe: P6U_K, I.P6S_KK