Detail předmětu

Počítače a programování 2

FEKT-BPC-PC2TAk. rok: 2018/2019

Obecný úvod do algoritmizace, obecný úvod do objektově orientovaného programování, řídící sekvence jazyků vyšších řádů, aplikační programové prostředí jazyka JAVA Eclipse.

Jazyk výuky

čeština

Počet kreditů

5

Výsledky učení předmětu

Získání základních algoritmizačních návyků a dovednosti objektově orientovaného programování. Pochopení základních vlastností a struktur jazyka JAVA a získání schopnosti je využít. Schopnost základní práce v prostředí JAVA Eclipse.

Prerekvizity

Jsou požadovány znalosti na úrovni středoškolského studia. Znalost programovánní v ANSI C.

Plánované vzdělávací činnosti a výukové metody

Metody vyučování závisejí na způsobu výuky a jsou popsány článkem 7 Studijního a zkušebního řádu VUT. Metody vyučování zahrnují přednášky a cvičení na počítači. Předmět využívá e-learning. Student odevzdává jeden samostatný projekt.

Způsob a kritéria hodnocení

Student může získat maximálně 20 bodů za aktivní práci v počítačových cvičení, 20 bodů za průběžné testy během semestru, 30 bodů za zápočtový test na konci semestru a 30 bodů za individuální projekt v jazyce JAVA.

Osnovy výuky

1. Základy algoritmizace v jazyce JAVA: cykly, větvení, metody, základní datové typy (primitives), reference vs. ukazatele, proměnné, viditelnost proměnných.
2. Třídy a objekty. Základní datové typy (primitivy) vs. objekty. Reference. Viditelnost proměnných a atributů v rámci programu.
3. Dědičnost. Třída vs. abstraktní třída vs. rozhraní. Polymorfismus. Vnitřní třídy
4. Výjimky a princip ošetřování neočekávaných událostí. Vyvolání výjimky. Vícenásobné vnoření výjimek a jejich ošetřování. Hierarchické členění výjimek. Tvorba vlastních výjimek
5. Rekurze v programování. Princip rekurze a úvod do řešení problému pomocí rekurze
6. Textové soubory a standardní vstup a výstup. Vstupně/výstupní datové proudy, práce se souborovým systémem, soubory, adresáře, vytváření, mazání, modifikace přístupových práv
7. Pokročilé datové typy. Kolekce, seznamy ( ArrayList, LinkedList), množiny (HashSet, TreeSet), mapy (HashMap, TreeMap), iterátory. Procházení kolekcemi v cyklu
8. Znakové řetězce, práce s řetězci. Výčtový typ, obálkový typ. Generické programování
9. Ladění a testování programů. Jednotkové testy. Tvorba dokumentace
10. Grafické uživatelské rozhraní. Událostmi řízené programování. Návrhový vzor Model-Pohled-Kontroler
11. Více-vláknové zpracování. Procesy vs. vlákna. Atomicita. Synchronizace vláken. Uvíznutí vláken
12. Principy objektově orientovaného návrhu programů. Návrhové vzory a jejich použití
13. Správa větších projektů. Importování knihoven a práce s API. Tvorba vlastní knihovny

Učební cíle

Naučit studenty základním algoritmizačním návykům a objektově orientovánému programování. Vysvětlit základní vlastnosti a struktury jazyka JAVA a jejich využití. Připravit studenty na práci v prostředí JAVA Eclipse

Vymezení kontrolované výuky a způsob jejího provádění a formy nahrazování zameškané výuky

Vymezení kontrolované výuky a způsob jejího provádění stanoví každoročně aktualizovaná vyhláška garanta předmětu.

Základní literatura

Keogh, J.: Java bez předchozích znalostí, Computer press, 2005, ISBN: 9788025108390 . (CS)
Pecinovský, R.: Myslíme objektově v jazyku Java -- kompletní učebnice pro začátečníky, Grada , 2008, ISBN: 978-80-247-2653-3. (CS)

Zařazení předmětu ve studijních plánech

  • Program BPC-IBE bakalářský 1 ročník, letní semestr, povinný

  • Program BPC-AUD bakalářský

    specializace AUDB-ZVUK , 2 ročník, letní semestr, povinně volitelný

  • Program BPC-TLI bakalářský 2 ročník, letní semestr, povinný

  • Program BPC-AUD bakalářský

    specializace AUDB-TECH , 2 ročník, letní semestr, povinně volitelný

Typ (způsob) výuky

 

Přednáška

26 hod., nepovinná

Vyučující / Lektor

Osnova

1) Základy algoritmizace v jazyce JAVA: cykly, větvení, metody, základní datové typy (primitives), reference vs. ukazatele, proměnné, viditelnost proměnných.
2) Třídy a objekty. Základní datové typy (primitivy) vs. objekty. Reference. Viditelnost proměnných a atributů v rámci programu.
3) Dědičnost. Třída vs. abstraktní třída vs. rozhraní. Polymorfismus. Vnitřní třídy.
4) Výjimky a princip ošetřování neočekávaných událostí. Vyvolání výjimky. Vícenásobné vnoření výjimek a jejich ošetřování. Hierarchické členění výjimek. Tvorba vlastních výjimek.
5) Rekurze v programování. Princip rekurze a úvod do řešení problému pomocí rekurze.
6) Textové soubory a standardní vstup a výstup. Vstupně/výstupní datové proudy, práce se souborovým systémem, soubory, adresáře, vytváření, mazání, modifikace přístupových práv.
7) Pokročilé datové typy. Kolekce, seznamy ( ArrayList, LinkedList), množiny (HashSet, TreeSet), mapy (HashMap, TreeMap), iterátory. Procházení kolekcemi v cyklu.
8) Znakové řetězce, práce s řetězci. Výčtový typ, obálkový typ. Generické programování.
9) Ladění a testování programů. Jednotkové testy. Tvorba dokumentace.
10) Grafické uživatelské rozhraní. Událostmi řízené programování. Návrhový vzor Model-Pohled-Kontroler.
11) Více-vláknové zpracování. Procesy vs. vlákna. Atomicita. Synchronizace vláken. Uvíznutí vláken.
12) Principy objektově orientovaného návrhu programů. Návrhové vzory a jejich použití.
13) Správa větších projektů. Importování knihoven a práce s API. Tvorba vlastní knihovny.

Cvičení na počítači

26 hod., povinná

Vyučující / Lektor

Osnova

1) Seznámení s vývojovým prostředím Eclipse. Základní datové typy a příkazy. Tvorba podmínek a cyklů.
2) Vytváření tříd a objektů. Komunikace mezi objekty. Statické datové položky a metody.
3) Vytvoření potomka rodičovské třídy. Překrývání konstruktorů a metod. Tvorba abstraktní třídy. Tvorba rozhraní.
4) Vyvolání výjimky. Ošetření výjimky. Vytvoření vlastní výjimky.
5) Implementace rekurzivního algoritmu. Ukázka následku nevhodné ukončovací podmínky.
6) Použití standardního vstupu. Použití standardního výstupu.
7) Otevření souboru. Čtení ze souboru. Zápisu do souboru. Serializace objektu.
8) Práce se seznamy (ArrayList a LinkedList). Práce s množinami (HashSet a TreeeSet). Práce s mapami (HashMap a TreeMap).
9) Použití obálkových typů. Použití výčtových typů. Tvorba a použití generické třídy.
10) Použití kontrolních výpisů. Použití integrovaného softwarového debuggeru. Tvorba a použití jednotkových testů. Ukázka automatizovaného generování dokumentace programu.
11) Tvorba jednoduchého grafického uživatelského rozhraní. Přidání grafických komponent s využití správce uspořádání. Práce s grafickou komponentou.
12) Spuštění a vytvoření nového vlákna. Ukázka synchronizace vláken. Realizace komunikace mezi vláky.
13) Ukázka dodržení návrhového principu SOLID. Ukázka dodržení návrhového principu Deméteřin zákon. Implementace návrhového vzoru Přepravce. Implementace návrhového vzoru Služebník.