- 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