PB173 Tematicky zaměřený vývoj aplikací

Fakulta informatiky
podzim 2024
Rozsah
0/2/0. 2 kr. (plus ukončení). Ukončení: k.
Vyučující
doc. RNDr. Petr Švenda, Ph.D. (přednášející)
Miroslav Jaroš (cvičící)
Ing. Pavel Tišnovský, Ph.D. (cvičící)
Stanislav Zeman (cvičící)
RNDr. Martin Ukrop, Ph.D. (přednášející), doc. RNDr. Petr Švenda, Ph.D. (zástupce)
Radomír Vrbovský (cvičící)
Bc. Vratislav Bendel (cvičící)
Garance
doc. RNDr. Petr Švenda, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Předpoklady
PB111 Principy nízkoúr. prog. || PB071 Principy nízkoúr. prog. || SOUHLAS
Předpokládá se znalost programovacího jazyka a operačního systému dle požadavků konkrétní skupiny. Povinnou prerekvizitou je absolvování předmětu PB071 nebo výjimka udělená přednášejícím.
• PB173/Go (Coding in Go): student by měl ovládat základy programování, umět pracovat s jazykem SQL, a mít základní povědomí o sítích a virtualizaci (postačí na úrovni z předmětů IB111, PB154, PB156 a PB152)
• PB173/KDLP (Kernel Learning Development Pipeline): the class will be delivered in English, other prerequisites will be added soon
Omezení zápisu do předmětu
Předmět je nabízen i studentům mimo mateřské obory.
Předmět si smí zapsat nejvýše 110 stud.
Momentální stav registrace a zápisu: zapsáno: 0/110, pouze zareg.: 150/110, pouze zareg. s předností (mateřské obory): 130/110
Mateřské obory/plány
předmět má 36 mateřských oborů, zobrazit
Cíle předmětu
Rozvinout schopnost programovat v daném programovacím jazyce na základě vybrané konkrétní aplikační domény.
1. PB173/Go (Coding in Go)
• Studenti pochopí základní elementy jazyka Go a jejicj běžné použití v praxi.
• Studenti získají znalosti potřebné pro vstupní pozice vývojáře v jazyce Go a dokážou psát idiomatický kód v Go.
• Studenti budou schopni aplikovat získané znalosti do skutečných projektů v jazyce Go.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Výstupy z učení
Obecným cílem předmětu je prohloubení znalostí programování v konkrétní oblasti dle vybrané seminární skupiny. Každá skupina si definuje své vlastní specifické cíle.
1. PB173/Go (Coding in Go)
• Umět psát idiomatický kód v jazyku Go.
• Chápat model souběžnosti použitý v jazyce Go.
• Profilovat a optimalizovat Go aplikace.
• Být schopen vyvíjet REST API služby v Go.
• Umět Kontejnerizovat a nasadit svou aplikace.
• Umět implementovat perzistenci pomocí SQL databáz.
• Být schopen instrumentovat aplikace různými typy telemetrie.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Osnova
  • Konkrétní obsah kurzu je závislý na tematických skupinách, které jsou uvedeny v sekci informace učitele.
  • 1. PB173/Go (Coding in Go)
    • Úvod: úvod do jazyka Go, IDEs a editory, instalace Go, spouštění Go
    • Základy #1: balíky & viditelnost, proměnné, datové typy, řídící struktury, funkce, ukazatele, uživatelské datové typy
    • Základy #2: rozhraní, chyby, pole, slice, asociativní mapy, rozsahy
    • Souběh & paralelizmus: gorutiny, runtime, kanály, select, souvizející balíky
    • Pokročilé koncepty #1: generiká, balíky, testování
    • Pokročilé koncepty #2: benchmark, optimalizace, CGo, unsafe & reflect
    • REST API: JSON, HTTP, REST API, balík HTTP, směrovače & web framework, OpenAPI, šablonování
    • Kontejnery: kontejnerizace, Docker, Kubernetes
    • Databázy: SQL, RDBMSs, migrace, SQL, sqlx, sqlc, GORM
    • Infrastruktura: CI/CD, infrastruktura, Google Cloud Platform
    • Observability: zdraví systému, logy, metriky, traces, OpenTelemetry
  • 2. PB173/KDLP (Kernel Development Learning Pipeline)
    Will be added soon.
Literatura
  • Literatura dle tematické skupiny
Výukové metody
Výuka probíhá formou praktických dvouhodinových cvičení, doplněných samostatnými domácími programátorskými úlohami procvičujícími aktuálně probíranou látku. Cvičení obsahují nutný teoretický úvod do problematiky, který však typicky nepřesáhne 30 % času cvičení – zbylá část je věnována programování a používání souvisejících vývojových nástrojů u praktických úloh.
1. PB173/Go (Coding in Go)
Prezenční přednášky s úkoly přímo na hodine, hodnocené domácí úkoly, projekt.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Metody hodnocení
Student během celého semestru vypracovává domácí úkoly a/nebo se podílí na projektu. Konkrétní rozsah domácích úkolů a pravidla hodnocení si stanoví každá tematická skupina samostatně.
1. PB173/Go (Coding in Go)
Několik hodnocených domácích úkolů (50 bodů) a závěrečný projekt (50 bodů), obhajoba závěrečného projektu. Na úspěšné absolvování kurzu je potřeba získat alespoň 70 ze 100 bodů.
2. PB173/KDLP (Kernel Development Learning Pipeline)
Will be added soon.
Informace učitele

Konkrétní skupiny/témata pro daný semestr budou rozeslány hromadným mailem před začátkem zápisu seminárních skupin a budou doplněny i na tuto stránku.


Aktuálně víme pro podzim 2024 o následujících skupinách:
  • 1. PB173/Go Coding in Go (Red Hat – Pavel Tišnovský, Stanislav Zeman; česky)
    Cílem kurzu je seznámit studenty s jazykem Go i jeho moderním použitím (API, virtualizace, knihovny, ...). Oproti minulému roku je kurz rozšířen na celý semestr.
    Více informací na https://github.com/course-go/course
  • 2. PB173/KDLP Kernel Development Learning Pipeline (Red Hat – Radomír Vrbovský, Carlos Maiolino, Izabela Bakollari, Vratislav Bendel; in English)
    More information will be added soon.
  • 3. PB173/Qt Multiplatformní programování s využitím C++ a frameworku Qt (Red Hat – Miroslav Jaroš; česky)


Příklady minulých témat: Programming in the presence of side-channel leakages, Zpracování obrazu, Aplikovaná kryptografie a bezpečné programování, Systémové programování Linux, Implementace interpretu v C++, Efektivní programování, Implementace jádra operačního systému, Analýza binárek a implementace disassembleru.

Další komentáře
Předmět je vyučován každý semestr.
Výuka probíhá každý týden.
Předmět je zařazen také v obdobích podzim 2010, podzim 2011, podzim 2012, podzim 2013, podzim 2014, podzim 2015, jaro 2016, podzim 2016, jaro 2017, podzim 2017, jaro 2018, podzim 2018, jaro 2019, podzim 2019, jaro 2020, podzim 2020, jaro 2021, podzim 2021, jaro 2022, podzim 2022, jaro 2023, podzim 2023, jaro 2024, jaro 2025.
  • Statistika zápisu (nejnovější)
  • Permalink: https://is.muni.cz/predmet/fi/podzim2024/PB173