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

Fakulta informatiky
podzim 2024
Rozsah
0/2/0. 2 kr. (plus ukončení). Ukončení: k.
Vyučováno kontaktně
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í)
Bc. 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í)
Izabela Bakollari (cvičící)
Carlos Eduardo Maiolino (cvičící)
Garance
doc. RNDr. Petr Švenda, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Kontaktní osoba: RNDr. Martin Ukrop, Ph.D.
Dodavatelské pracoviště: Katedra počítačových systémů a komunikací – Fakulta informatiky
Rozvrh seminárních/paralelních skupin
PB173/Go: Čt 26. 9. až Čt 19. 12. Čt 10:00–11:50 S505, P. Tišnovský, S. Zeman
PB173/KDLP: Po 23. 9. až Po 16. 12. Po 14:00–15:50 S505, I. Bakollari, V. Bendel, C. Maiolino, R. Vrbovský
PB173/QT: Pá 27. 9. až Pá 20. 12. Pá 14:00–15:50 S505, M. Jaroš
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 výjimka udělená přednášejícím na základě odpovědí na motivační otázky specifické pro danou skupinu (detaily a postup naleznete v Archívu sdělení předmětu).
• 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, knowledge of the C language, basic knowledge about operating systems in general, practical skills in Linux operating system (e.g. Fedora, Debian, Slackware), basics of git
• PB173/QT (Multiplatformní programování s využitím C++ a frameworku QT): student by měl ovládat základy programování v jazyku C a C++.
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: 50/110, pouze zareg.: 37/110, pouze zareg. s předností (mateřské obory): 28/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)
• Introduce students to the Linux Kernel development workflow, show them how to create and send kernel modifications to mailing lists.
• Excite students about the wonderful world of Linux kernel community.
• Expose students to major kernel subsystems.
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)
• By the end of the course, students should have an understanding of how Linux kernel is architectured.
• Understand the role of each of the major subsystems and how those interact with each other.
• Students will also be able to have a basic understanding on how to write code for the Linux kernel, for its core and for modules, and how to use Linux’s provided generic interfaces (memory allocation, synchronization, generic data structures, etc) in their own kernel code.
• Students will understand how to send patches to specific subsystems and how to review patches.
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)
    • Introduction and development environment setup
    • General overview of core kernel concepts
    • PC and x86 architecture
    • Process management
    • Synchronization primitives
    • Memory management
    • Storage and filesystems
    • Networking stack
    • Device drivers
    • Kernel Debugging methods
    • GPG signing party
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)
In-person lectures and homework assignments
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)
Each assignment is assigned a specific number of points based on its difficulty or importance. These points add up to a maximum of 100. To pass the course, students need to accumulate at least 65 points across all assignments.
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 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)
    The course aims to show students the specifics of developing the Linux kernel. For more information, see fall2024-muni.kdlp.underground.software/.
  • 3. PB173/Qt Multiplatformní programování s využitím C++ a frameworku Qt (Miroslav Jaroš; česky)

Další komentáře
Studijní materiály
Předmět je vyučován každý semestr.
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