FI:PB173 Tematický vývoj aplikací - Informace o předmětu
PB173 Tematicky zaměřený vývoj aplikací
Fakulta informatikypodzim 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: 39/110, pouze zareg.: 10/110, pouze zareg. s předností (mateřské obory): 6/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)
- 1. PB173/Go Coding in Go (Red Hat – Pavel Tišnovský, Stanislav Zeman; česky)
- Další komentáře
- Studijní materiály
Předmět je vyučován každý semestr.
- Statistika zápisu (podzim 2024, nejnovější)
- Permalink: https://is.muni.cz/predmet/fi/podzim2024/PB173