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

Fakulta informatiky
podzim 2026
Rozsah
1/1/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í)
Ing. Pavel Tišnovský, Ph.D. (cvičící)
Bc. Stanislav Zeman (cvičící)
Lukasz Michal Chmielewski, PhD (cvičící)
RNDr. Milan Šorf (cvičící)
Mgr. Kamila Varadzínová (cvičící), doc. RNDr. Petr Švenda, Ph.D. (zástupce)
RNDr. Martin Ukrop, Ph.D. (pomocník)
Matej Matuška (cvičící)
Ing. Jan Koscielniak (cvičící)
Vojtěch Trefný (cvičící)
Bc. Alexander Zgabur (cvičící)
Ing. Martin Pokorný (cvičící)
Garance
doc. RNDr. Petr Švenda, Ph.D.
Katedra počítačových systémů a komunikací – Fakulta informatiky
Kontaktní osoba: doc. RNDr. Petr Švenda, Ph.D.
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.

Důležité: Uvedená seminární skupina bude otevřena pouze v případě, že do ní bude do 7.9.2026 (týden před začátkem výuky) zaregistrováno alespoň 10 studentů. V opačném případě si student musí vybrat jinou z nabízených skupin. 

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/UX (Tvorba uživatelského rozhraní)

Studenti si jednotlivé principy osvojují především formou menších aktivit (např. identifikace UX problémů, návrh rozhraní, tvorba person nebo testování přístupnosti), které jsou navržené tak, aby byly zvládnutelné i bez předchozí zkušenosti s UX.

PB173/SCR (Source Code Review)

The class will be delivered in English, knowledge of the C/C++, python, and another language (e.g., Java), basic knowledge about embedded and operating systems in general, basics of git, basic knowledge of security concepts.

PB173/git (Verzovací systém Git)

PB173/AiDev (AI-Assisted Software Development)
The class will be delivered in English, basic experience with software development.


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.: 210/110, pouze zareg. s předností (mateřské obory): 171/110
Mateřské obory/plány
předmět má 36 mateřských oborů, zobrazit
Anotace

Rozvinout schopnost programovat v daném programovacím jazyce na základě vybrané konkrétní aplikační domény.

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.

PB173/UX (Tvorba uživatelského rozhraní)

Kurz poskytuje vývojářům úvod do principů uživatelské zkušenosti (UX) a jejich aplikace v praxi, od základů user-centered přístupu přes kognitivní principy, vizuální design (barvy, typografie) a konzistenci až po návrhový proces a uživatelský výzkum. Samostatná pozornost je věnována práci s designovými patterny. Důraz je kladen na propojení UX a vývoje, praktické aktivity a řešení reálných problémů.

PB173/SCR (Source Code Review)

  • Provide an introduction to the principles and practices of source code review, with a focus on improving software quality, maintainability, and security.
  • Attendees will learn about common types of vulnerabilities, how to systematically analyze source code for vulnerabilities, design flaws, and inefficiencies.
  • Real-world hands-on group exercises, concentrated on embedded devices source code review, will help participants develop the skills necessary to identify issues early in the development lifecycle.

PB173/git (Verzovací systém Git)

Během tohoto kurzu se seznámíte s výhodami a koncepty Gitu a jeho základními funkcemi prostřednictvím rozsáhlých příkladů, praktických cvičení a povinných domácích úkolů. Důraz kurzu je kladen na vaši přípravu na práci na skupinových komunitních upstream projektech v podniku. Prezenční výuka kurzu potrvá pouze prvních 8 týdnů semestru, pak se pracuje na projektu.

PB173/AiDev (AI-Assisted Software Development)



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.

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.

PB173/UX (Tvorba uživatelského rozhraní)

  • Rozumět tomu, co UX je a co není, a proč je důležitý pro vývoj softwaru.
  • Chápat dopad designových rozhodnutí na uživatelskou zkušenost.
  • Získat přehled o základním UX procesu (výzkum/návrh/testování).
  • Porozumět kognitivním principům ovlivňujícím chování uživatelů.
  • Rozumět tomu, kde a jak vývojář ovlivňuje UX v každodenní praxi.
  • Umět identifikovat běžné UX problémy v uživatelských rozhraních.
  • Přemýšlet o funkcionalitách z pohledu uživatele
  • Rozpoznat problematická místa v uživatelských tocích (user flows).
  • Navrhovat drobná UX zlepšení v každodenních vývojářských rozhodnutích.
  • Základně aplikovat návrhový proces (persony, user journey, prototyp, testování).
  • Efektivněji spolupracovat s designéry.

PB173/SCR (Source Code Review)

  • Students will be able to identify and document software vulnerabilities in a clear, accurate, and responsible manner.
  • Learn about common logical attacks as well as about hardware risks, like side-channel and fault-injection vulnerabilities.
  • Students will also learn learn about use of tools in code review, especially with respect to collaboration, and about code quality and maintainability.
  • Student will learn about reviewing open-source code based on real-world examples (i.e., hands-on practice).
  • Students will also learn about platform-specific code review with respect to embedded systems.

PB173/git (Verzovací systém Git)

PB173/AiDev (AI-Assisted Software Development)
By the end of the course, students will be able to:
  • Explain the basic principles, capabilities, and limitations of large language models in software engineering.
  • Apply LLM-based tools to selected software engineering tasks, including implementation, testing, debugging, documentation, and code review.
  • Use prompt and context engineering techniques to improve the quality and reliability of AI-generated software artifacts.
  • Select suitable AI-assisted approaches, such as copilots, agents, and MCP-based tools, for specific software engineering tasks.
  • Critically evaluate AI-generated code and tests with respect to correctness, maintainability, security, hallucination risks, and the need for human oversight


Klíčová témata
  • Konkrétní obsah kurzu je závislý na tematických skupinách, které jsou uvedeny v sekci informace učitele.

    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

PB173/UX (Tvorba uživatelského rozhraní)

  • Co je UX
  • Kognitivní principy v UX
  • Barvy, typografie a čtení na obrazovce
  • Konzistence a design systémy
  • Proces návrhu
  • Základy uživatelského výzkumu
  • Workshop: heuristická analýza
  • Design patterns (enterprise aplikace)
  • Přístupnost (Accessibility)
  • Prezentace projektů studentů

PB173/SCR (Source Code Review)

  • Introduction to source code review (language level vulnerabilities: buffer overflow, type overflow, strings)
  • Design review
  • Tooling: static and dynamic analysis, reporting
  • Platform-specific aspects: Trusted Execution Environment
  • Reviewing key functionalities #1: Authentication and Authorization, Input Validation, Error Handling, Data Handling,
  • Reviewing key functionalities #2: Memory Management (for languages like C/C++), Code Quality and Maintainability and Concurrency and Thread Safety.
  • Project work: reviewing various open-source implementations (see Teacher Information for examples)

PB173/git (Verzovací systém Git)

  • Úvod (kurz, lektoři, studenti). Systému pro správu verzí, Co je správa verzí? Instalace Gitu. Základy workflow Gitu. Klonování repozitářů. Index. Umění commitů. Konfigurace a zabezpečení repozitářů pomocí SSH klíčů.
  • Branching. Tags, Stash, Branching, Merging, Reverting.
  • Oprava chyb. Git logy a auditování. Řešení konfliktů Gitu. Interaktivní rebase. Různé způsoby, jak najít a vrátit zpět změny provedené v projektu Git a kdy je použít.
  • Týmová práce. Upstream a remote. Push, pull a sledování remote. Zlaté pravidlo push.
  • Etiketa Gitu aneb Dbejte na své chování v Gitu.
  • Funkce Gitu a běžné workflow Gitu s otevřeným zdrojovým kódem.
  • Pokročilé funkce systému Git

PB173/AiDev (AI-Assisted Software Development)
  • LLM Foundations for Software Engineering
  • Prompt and Context Engineering
  • AI-Assisted Implementation
  • AI-Assisted Testing, Debugging, and Code Review
  • Agentic Software Engineering
  • MCP and Tool Integration
  • Evaluation and Mini-Project


Studijní zdroje a literatura
  • Literatura dle tematické skupiny
Přístupy, postupy a metody používané ve výuce

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.

PB173/Go (Coding in Go)

Prezenční přednášky s úkoly přímo na hodine, hodnocené domácí úkoly, projekt.

PB173/UX (Tvorba uživatelského rozhraní)

Prezenční přednášky s úkoly přímo na hodine, hodnocené domácí úkoly, projekt.

PB173/SCR (Source Code Review)

In-person lectures and group project assignment.

PB173/git (Verzovací systém Git)

PB173/AiDev (AI-Assisted Software Development)

The course combines approximately 30–40% in-person lectures with 60–70% seminar-based and practical activities. Teaching methods include:

  • Short lectures introducing fundamental concepts and methods
  • Hands-on exercises using LLM-based software engineering tools
  • Discussion and critical analysis of research papers
  • Reviewed homework assignments
  • Project-based learning


Způsob ověření výstupů z učení a požadavky na ukončení

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ě.

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ů.

PB173/UX (Tvorba uživatelského rozhraní)

Pro úspěšné zakončení kurzu se očekává aktivní zapojení během přednášek a průběžné plnění praktických úloh. Součástí kurzu je také semestrální projekt zaměřený na návrh UX aplikace (budík pro tablet). Studenti vytvoří prototyp pokrývající základní funkce aplikace a ověří jej alespoň na dvou uživatelích. Pro tvorbu prototype předpokládme použití AI nástrojů pro generování designu. Výstupem je krátká prezentace (10 minut), ve které představí svůj postup, klíčová rozhodnutí i získanou zpětnou vazbu. Hodnocení je založeno především na kvalitě návrhu z hlediska použitelnosti, logiky a přehlednosti. Důraz je kladen na proces přemýšlení, schopnost vysvětlit svá rozhodnutí a pracovat se zpětnou vazbou a nikoli na designovou dokonalost návrhu. Na úspěšné absolvování kurzu je potřeba získat alespoň 70 ze 100 bodů. Praktické úlohy (50 bodů) a semestrální projekt (50 bodů).

PB173/SCR (Source Code Review)

The grading will be performed based on the points received from project assignment, presentation, and the activity during the seminar. Total of 60% will be necessary to pass the course.

PB173/git (Verzovací systém Git)

PB173/AiDev (AI-Assisted Software Development)

  • 15% — A 10–15-minute presentation on recent advances in a topic related to the course
  • 15% — A one-page critical summary of a selected research paper related to the key topics
  • 20% — Homework assignments and practical exercises
  • 50% — Final project, including implementation, evaluation, and presentation
  • To successfully complete the course, students must obtain at least 75 out of 100 points.


Odkaz a informace vyučujících

Důležité: Uvedená seminární skupina bude otevřena pouze v případě, že do ní bude do 7.9.2026 (týden před začátkem výuky) zaregistrováno alespoň 10 studentů. V opačném případě si student musí vybrat jinou z nabízených skupin. 

Reálná kapacita předmětu je omezena dostupným počtem míst v seminárních skupinách. Předmět lze absolvovat pouze pokud získáte místo v některé ze seminárních skupin.

Pro Podzim 2026 jsou plánovány následující seminární skupiny (přečtete si upozornění výše):

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

PB173/UX (Tvorba uživatelského rozhraní) (SAP – Kamila Varadzínová; česky)

Kurz poskytuje vývojářům úvod do principů uživatelské zkušenosti (UX) a jejich aplikace v praxi, od základů user-centered přístupu přes kognitivní principy, vizuální design (barvy, typografie) a konzistenci až po návrhový proces a uživatelský výzkum. Samostatná pozornost je věnována práci s designovými patterny. Důraz je kladen na propojení UX a vývoje, praktické aktivity a řešení reálných problémů.

PB173/SCR (Source Code Review) (Łukasz Chmielewski; teaching in English)

The seminar will mostly graded based on a project. After four introductory seminars, the participants will create groups and they will review various open-source implementations belonging to a specific class of software, including Smart Home Devices, Printers, Routers, Open-Source Crypto-libraries, Trust Execution Environments code bases, bootloaders or JavaCard applets.

PB173/git (Verzovací systém Git) (Red Hat; česky)

PB173/AiDev (AI-Assisted Software Development) (teaching in English)



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, podzim 2024, jaro 2025, podzim 2025, jaro 2026, jaro 2027.
  • Statistika zápisu (nejnovější)
  • Permalink: https://is.muni.cz/predmet/fi/podzim2026/PB173