Detail předmětu

Skriptovací jazyky

ISJ Ak. rok 2021/2022 letní semestr 5 kreditů

Aktuální akademický rok

Základní koncepty skriptovacích jazyků, skriptování versus programování, přehled vývoje skriptovacích jazyků, makrojazyky, tvorba komponent, základy jazyka Python, skriptování v operačních systému Unix, objektově-orientované programování ve skriptovacích jazycích, souběh a paralelismus.

Garant předmětu

Koordinátor předmětu

Jazyk výuky

česky, anglicky

Zakončení

zkouška (kombinovaná)

Rozsah

  • 26 hod. přednášky
  • 26 hod. projekty

Bodové hodnocení

  • 51 bodů závěrečná zkouška (písemná část)
  • 9 bodů půlsemestrální test (písemná část)
  • 40 bodů projekty

Zajišťuje ústav

Přednášející

Cvičící

Stránky předmětu

Získané dovednosti, znalosti a kompetence z předmětu

Studenti se seznámí s moderními skriptovacími jazyky, po úspěšném zvládnutí předmětu budou schopni demonstrovat znalosti a chápání základních vlastností a role skriptovacích jazyků, syntaxe a sémantiky jazyka Python, implementovat skripty pro automatizaci systémových činností a vyvíjet jednoduché aplikace s použitím vhodných nástrojů.
Studenti se naučí řešit problémy v jazyce Python formou pravidelných projektů. Zdokonalí se v praktickém užívání programátorských nástrojů.

Cíle předmětu

Porozumět tématu skriptovacích jazyků a jejich aplikací, pochopit komplementaritu skriptovacích jazyků vzhledem k systémovým jazykům, jejich výhody a nevýhody. Seznámit se základy regulárních výrazů, použitím vhodných struktur a postupů zejména v jazyce Python (částečně i ruby a dalších).

Proč je předmět vyučován

I když je předmět ISJ pro některé první příležitostí k seznámení se s programovacím jazykem Python, a okrajově Ruby, případně dalšími, nejedná se o základní kurz programování v těchto jazycích. Osobně se domnívám, že úvodní kurzy programování v konkrétním jazyce (za kredity) na univerzity snad ani nepatří. Někteří studenti je dnes absolvují dokonce už v raných ročnících gymnázií či na středních školách. A i pokud se tak nestane, měli by ti, kteří úspěšně prošli přijímacími zkouškami na FIT a chtějí poznat jen základní prvky jazyků typu Python, zvládnout pochopit náplň úvodních internetových kurzů, případně základních příruček, kterých je na internetu celá řada (viz také odkazy níže).

Obsah předmětu jde v mnoha směrech daleko nad rámec základních kurzů programování a zhruba od poloviny semestru se předmět dotýká témat, která bývají řazena mezi pokročilé techniky programování v tom kterém jazyce. I když tedy začínáme regulárními výrazy a základními stavebními kameny jazyka Python, probíráme tuto látku velmi rychle, abychom se co nejdříve dostali ke konceptuálně zajímavým a z hlediska systémových jazyků typu C novým tématům. Dále, i když většinu konstrukcí ukazujeme v jazyce Python a vyzdvihujeme některé elegantní konstrukce v Ruby a jinde, zaměřuje se ISJ na obecné koncepty, které jsou typické pro celou rodinu vysokoúrovňových dynamických skriptovacích jazyků.

ISJ není kurz, v němž lze získat kredity zadarmo. Studenti 1. ročníku, kteří o něj budou mít zájem, jej určitě zvládnou. Ale jistě budou muset překonat skutečnost, že se s některými koncepty (mj. i objektově orientovaným přístupem) setkají prostě poprvé, a nebudou tedy moci stavět na základech osvojených ve specializovaných kurzech. Zkušenost z předchozích let ale ukazuje, že se zvýšené úsilí z dlouhodobého hlediska i studentům 1. ročníku vyplatí.

Předmět je nepovinný, takže většinou není problém jej neabsolvovat. Pokud byste ale rovnou věděli, že se nebudete moci či chtít přípravě a projektům pravidelně věnovat, doporučuji raději vybrat jednodušší kurzy. Ať nejste zklamaní...

Pro každé z probíraných témat jsou zveřejněny odkazy na volně dostupné zdroje, často videa z konferenčních přednášek (v angličtině), s nimiž by se studenti měli seznámit ještě před přednáškou, na kterém je ta která oblast probírána. Přednášky cíleně nejsou vedeny jako výklad nových témat "od nuly", ale předpokládá se, že přítomní už témata alespoň na základní úrovni prošli v odkazovaných materiálech, a lze se tedy věnovat diskusi, provázání probíraného s dřívější látkou a souvisejícími oblastmi, případně vysvětlování pokročilých otázek.

Při současném rozsahu předmětu bohužel nelze zavést klasická počítačová cvičení. Všem proto doporučuji používat na přednáškách notebooky, tablety a další zařízení, na nichž si budou moci přímo "hrát" s demonstračním kódem. Část přednášky by tak lépe mohla mít formu demonstračního cvičení, kdy budu kód modifikovat přímo před tabulí a vy budete moci vidět, případně si i zkoušet, důsledky konkrétních změn.

Materiály, které budu využívat na přednáškách (jak bylo uvedeno, spíše jako podklad k diskusi) budou sice zveřejněny, ale nejsou primárně určeny k samostudiu. Nemá tedy cenu se na ně zaměřovat při přípravě na zkoušku, je vhodnější znovu projít materiály k jednotlivým tématům a projekty. Materiály budou převážně ve formátu Jupyter Notebook. O instalaci tohoto prostředí bude řeč na první přednášce.

Doporučené prerekvizity

Literatura studijní

  • Harms, D., Macdonald, K.: Začínáme programovat v jazyce Python. Computer Press, ISBN 80-7226-799-X.
  • Lutz, M., Ascher, D.: Naučte se Python - Pohotová příručka. Grada, 2003, ISBN 80-247-0367-X.
  • Driscoll, M: Python 201: Intermediate Python. Amazon Digital Services LLC, ASIN: B01LMUAYSO, 2016.
  • Beazley, D.M.: Python - Podrobná referenční příručka pro programovací jazyk Python. Neocortex.
  • Abelson, H.: Structure and interpretation of computer programs, Cambridge. MIT Press, 2002.

Osnova přednášek

  1. Úvod, stručná historie vývoje skriptovacích jazyků, výhody a nevýhody, porovnání jazyků
  2. Regulární výrazy a jejich podpora ve skriptovacích jazycích
  3. Vytváření jednoduchých skriptů v prostředí OS Unix, automatizace systémových činností
  4. Jména v Pythonu, základní datové struktury a jejich implementace
  5. Slovník (hashovací struktura) a jeho implementace v Pythonu
  6. Funkce a jejich argumenty, moduly, zpracování výjimek
  7. Základy objektově orientovaného programování ve skriptovacích jazycích
  8. Pokročilé prvky objektového přístupu v Pythonu, vícenásobná dědičnost a pořadí hledání metod
  9. Základy jazyka ruby a srovnání s Pythonem
  10. Dekorátory funkcí a tříd
  11. Iterační protokol a iterovatelné objekty
  12. Generátory a jejich použití v kontextu funkcí
  13. Souběžnost a paralelismus

Osnova ostatní - projekty, práce

Samostatné projekty řešící zadané obecnější úlohy, předpokládá se naprogramování středně rozsáhlého skriptu v jazyce Python. Je požadováno elektronické odevzdání pomocí IS FIT.

V předmětu je místo jednoho či několika málo velkých projektů zadáno 8 miniprojektů, tedy od 3. přednášky téměř každý týden. Je k dispozici server, který projekty ještě před oficiálním odevzdáním prostřednictvím WIS automaticky ohodnotí, takže lze předem zjistit, kolik bude za aktuální řešení bodů. Půlsemestrální test a zkouška jsou přímo svázány s tématy, která si vyzkoušíte v rámci projektů.

Průběžná kontrola studia

  • Půlsemestrální písemný test (9 bodů).
  • Individuální projekt (40 bodů).

Kontrolovaná výuka

Kontrolovaná výuka zahrnuje půlsemestrální test a individuální projekt. Půlsemestrální test nemá náhradní termín.
Ke zkoušce je třeba získat minimálně 1/3 bodů z bodovaných aktivit, přičemž 13 bodů je minim z projektu.

Podmínky zápočtu

  • Získání alespoň 20 bodů z projektů

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

  • Program BIT, 1. ročník, volitelný
  • Program IT-BC-3, obor BIT, 1. ročník, volitelný
Nahoru