Fakulta elektrotechnická

České vysoké učení technické v Praze

ČVUT v Praze

Popis předmětu - B6B36PJV

Přehled studia | Přehled oborů | Všechny skupiny předmětů | Všechny předměty | Seznam rolí | Vysvětlivky               Návod
B6B36PJV Programování v JAVA Rozsah výuky:2+3+2
Garanti:  Role:  Zakončení:Z,ZK
Vyučující: 
Zodpovědná katedra:13136 Kreditů:6 Semestr:L

Anotace:

Předmět navazuje na základy algoritmizace a programování z prvního semestru a uvádí studenty do prostředí Java. Na prvních přednáškách budou studenti seznámeni se základní koncepcí Java a virtuálního stroje JVM, strukturou programu, způsobech kompilace do byte kódu a mechanismy jeho spouštění spolu s předáváním parametrů. V dalších přednáškách bude představena syntaxe a základní knihovní metody, práce se soubory a použití generických typů. Druhá polovina semestru bude věnována síťovému rozhraní, modelům vícevláknových aplikací, jejich implementaci a přehledu tvorby grafického uživatelského rozhraní. V závěru semestru bude představen koncept distribuovaného programování. Poslední přednáška je věnována přehledu kódovacích stylů, pokročilým nástrojům pro řízení překladu zdrojových souborů a nástrojům pro efektivní vývoj a ladění programů (logování, debugováníi a profilování). Praktická cvičení jsou pak věnována osvojování praktických dovedností a znalostí Java formou řešení semestralních úloh, které budou odevzdávány průběžně prostřednictvím systému pro správu zdrojových souborů. Nejdříve budou studenti seznámení s vývojovým prostředím, možnostmi kompilace a spouštěním programu. Následně budou řešit dílčí úlohy směřující ke komplexní aplikaci pro řešení úlohy hledání nejkratší cesty v grafu Dijkstrovým algoritmem. První větší úlohou je implementace prioritní fronty lineárním vyhledáváním a haldou, na které si studenti vyzkoušejí principy abstrakce a polymorphismu a dále také profilování. Prioritní frontu pak zobecní využitím generických datových typů pro různé číselné typy ohodnocení hran grafu v úloze hledání nejkratší cesty v tomto grafu. Další úloha rozšíří aplikaci o načítání parametrů z XML a efektivní načítání vstupního grafu. Poté bude následovat praktické vyzkoušení síťového rozhraní a rozšíření aplikace o síťovou komunikaci se serverem poskytujícím parametry pro vygenerování grafu a kontrolu nalezené nejkratší cesty. Následně bude aplikace rozšířena o více vláknový model (boss-worker), který umožní během výpočtu nejkratší cesty v grafu průběžně komunikovat se serverem pro odevzdání a kontrolu řešení. Tohoto modelu bude následně využito pro grafickou nadstavbu vizualizace průběhu řešení. Závěrečné cvičení bude věnováno praktickému vyzkoušení technologie vzdáleneho volání funkcí (RMI). Studenti budou v průběhu semestru získávat body za odevzdané úlohy. Bodové hodnocení úlohy se skládá z bodů za správnost a efektivitu kódu, dále pak z bodů zohledňující kvalitu zdrojových kódů, jejich čitelnost a znovu použitelnost.

Cíle studia:

Cílem předmětu je rozvinutí programovacích dovedností studentů a rozšíření jejich znalostí o programovacích jazycích o základy a specifika programovacího jazyka Java. Studenti si prohloubí znalosti o způsobech programování a seznámí se s Java programovým rozhraním pro síťové a internetové služby, způsoby paralelního programování, využitím datových kolekcí, zpracováním výjimek, tvorbou grafického uživatelského rozhraní a událostmi řízeným programováním.

Osnovy přednášek:

1. Koncepce, historie jazyka a jeho vývoj - Java Virtual Machine, instalace vývojového prostředí, překlad a interpretace, syntaxe, primitiva a základní konstrukty.
2. Objektově orientované programování v programovacím jazyku Java, třídy, rozhraní a objekty; struktura programu, kompilace a spuštění, předávání parametrů, aplikace a aplety.
3. Řízení běhu programu, základní datové typy, proměnné, operátory, výjimky.
4. Pole, řetězce, základní datové kolekce a iterátory.
5. Principy objektového přístupu, třídy a dědičnost, řízení přístupu, hierarchie tříd, dědění, kompozice, abstraktní třídy, polymorfismus.
6. Datové kolekce a generické datové typy.
7. Práce se soubory, datové proudy, modely I/O operací.
8. Síťování - způsoby a modely komunikace, síťová API v programovacím jazyku Java, protokoly UDP, TCP a HTTP. Aplikace klient / server.
9. Paralelní programování - vlákna a modely vícevláknových aplikací, synchronizační primitiva.
10. Příklad vícevláknové aplikace a komunikace mezi vlákny; rozhraní JNI.
11. Grafické uživatelské rozhraní, události a listenery, Java 2D/3D, knihovny AWT a Swing.
12. Ovládání uživatelských rozhraní, multimediální rozhraní.
13. Distribuované programování - serializace, propojování modulů (middleware) a vzdálené volání funkcí, rozhraní Java RMI a další, např. ICE.
14. Kódovací konvence a styly, nástroje pro řízení překladu, logování; rezerva.

Osnovy cvičení:

1. Vývojové prostředí a odevzdávání úloh.
2. Překlad a spuštění programu, dokumentace (javadoc), základy Java kódovací konvence a stylu.
3. Nástroje pro sestavení programu (ant, maven), základní dostupné třídy v Java Class Library.
4. Proměnné, výrazy, předávání parametrů programu a spuštění programu.
5. Řízení běhu programu, řetězce, cykly, prioritní fronta
(úloha: implementance prioritní fronty linearním vyhledáváním a haldou).
6. Zadání semestrální práce (hledání cesty v grafu);
(datové struktury pro uložení grafu, načítání bude řešeno doadnou funkcí).
7. Třídy, objekty a dědičnost; struktura programu, incializace objektů a správa paměti
(úloha: abstrakce prioritní fronty, návrh a implementace programu pro hledání cesty v grafu).
8. Polymorphismus (debugging, profiling)
(úloha s příkladem - Dijkstra s naivním vyhledáváním vs prioritní fronta).
9. Generické datové typy
(úloha: zobecnění úlohy hledání cesty v grafu, ohodnocení hran int/double).
10. Načítání a ukládání souborů
(úloha: načítání XML a načítání textového souboru - graf pro Dijkstra algoritmus; úvod do XML v Java).
11. Síťování
(úloha: klient pro získání zadání pro generování grafu pro Dijkstra algoritmus.
12. Vícevláknové aplikace
(úloha: boss-worker model v programu Dijkstra s událostmi posílanými mezi vlákny).
13. Grafické uživatelské rozhraní
(úloha: rozšíření předchozí úlohy o grafické rozhraní a vizualizaci průběhu výpočtu).
14. Serializace a distribuované programování (Java RMI).

Literatura:

Doporučená literatura:
1. Herout, P.: Učebnice jazyka Java, Kopp, Č. Budějovice, 2000, s. 350.
2. Herout, P.: Učebnice jazyka Java II, Kopp, Č. Budějovice, 2001, s. 350.
3. Eckel, B.: Thinking in Java, Prentice Hall, 2006, s. 1150.

Požadavky:

Základy algoritmizace a programování. Základní povědomí o XML a DOM - je pokryto v předmětu Základy webových aplikací v prvním semestru.

Předmět je zahrnut do těchto studijních plánů:

Plán Obor Role Dop. semestr


Stránka vytvořena 17.11.2017 17:47:23, semestry: L/2016-7, Z,L/2017-8, Z/2018-9, připomínky k informační náplni zasílejte správci studijních plánů Návrh a realizace: I. Halaška (K336), J. Novák (K336)
Za obsah odpovídá: doc. Ing. Ivan Jelínek, CSc.