PředmětyPředměty(verze: 982)
Předmět, akademický rok 2026/2027
  
   
Vývoj softwarových aplikací - B143010
Anglický název: Software Application Development
Zajišťuje: Ústav informatiky a chemie (143)
Fakulta: Fakulta chemické technologie
Platnost: od 2026
Semestr: zimní
Body: zimní s.:3
E-Kredity: zimní s.:3
Způsob provedení zkoušky: zimní s.:
Rozsah, examinace: zimní s.:0/3, KZ [HT]
Počet míst: neurčen / neurčen (neurčen)Rozvrh není zveřejněn, proto je tento údaj pouze informativní a může se ještě měnit.
Minimální obsazenost: neomezen
Stav předmětu: vyučován
Jazyk výuky: čeština
Způsob výuky: prezenční
Úroveň:  
Poznámka: předmět je možno zapsat mimo plán
povolen pro zápis po webu
Garant: Šícho Martin Ing. Ph.D.
Třída: Základní laboratoře
Termíny zkoušek   Rozvrh   
Anotace -
Předmět studenty uvádí do praktického vývoje softwaru od prvotního návrhu až po nasazení a údržbu aplikací. Zaměřuje se na porozumění životnímu cyklu softwaru, práci s kompilovanými i interpretovanými jazyky, systematické ladění a testování včetně unit testů a měření pokrytí kódu. Důraz je kladen na používání systému Git pro verzování v týmu, včetně práce s větvemi, vzdálenými repozitáři a základním CI/CD. Studenti si osvojí návrh modulární struktury projektů, tvorbu API, dokumentaci a principy čitelného, dlouhodobě udržovatelného kódu. Seznámí se také s nasazováním aplikací pomocí kontejnerů (Docker, Apptainer), základy sítí, kybernetické bezpečnosti, využitím umělé inteligence při programování a specifiky vývoje vědeckého softwaru na HPC infrastrukturách. Na závěrečném týmovém projektu si vyzkoušejí kompletní workflow vývoje od návrhu přes implementaci, verzování, testování, dokumentaci až po demonstraci nasazení v praxi.
Poslední úprava: Šícho Martin (10.02.2026)
Podmínky zakončení předmětu (Další požadavky na studenta) -

Účast na výuce je povinná a je průběžně kontrolována. Předmět je zakončen klasifikovaným zápočtem, který bude udělen na základě závěrečné prezentace projektu celého týmu a doložení Git historie, která bude dokladovat aktivní participaci na řešení problému.

Poslední úprava: Šícho Martin (10.02.2026)
Literatura

Doporučená:

Poslední úprava: Šícho Martin (10.02.2026)
Metody výuky -

Vyučující na začátku lekce uvede studenty pomocí prezentace do konkrétní problematiky a ve zbytku času studenti samostatně realizují praktické úlohy.

Poslední úprava: Cibulková Jana (29.07.2025)
Požadavky ke zkoušce (Forma způsobu ověření studijních výsledků) -

Klasifikovaný zápočet. Docházkový list. Řešení samostatných a skupinových úloh.

Poslední úprava: Šícho Martin (10.02.2026)
Sylabus -

## 1. Co je software a základní vývojové workflow

  • Životní cyklus softwaru od nápadu přes vývoj a nasazení až po dlouhodobou údržbu.

  • Důležité pojmy: release, verze, bugfix, refaktoring...

  • Editace kódu, textové editory, integrovaná vývojová prostředí (IDE).

  • Stručný úvod do agilních metodik vývoje softwaru.

## 2.–3. Cesta od zdrojového kódu k binárce

  • Ladění (debugging), kompilace (build systémy), linkování a testování.

  • Unit testy a analýzu pokrytí kódu (code coverage).

  • Rozbor typických chyb, jako jsou linking errors, segmentation faults a memory leaks.

  • Specifika kompilovaných jazyků a interpretovaných jazyků.

  • Rozdíly mezi typovanými a netypovanými jazyky.

  • Příkladem srovnání typovaného a netypovaného jazyka jsou jazyky C a Python.

## 4.–5. Základy verzování: práce v týmu a hlavní koncepty Git

  • Základy práce s Gitem v lokálním repozitáři.

  • Staging area a commity.

  • Soubor .gitignore.

  • Prohlížení historie projektu pomocí příkazů log, blame a diff.

  • Slučování větví (merge) a řešení konfliktů.

  • Release tagy.

  • Vzdálené repozitáře pro sdílení kódu (GitHub/GitLab).

  • Operace clone, fetch, pull a push.

  • Nastavení přístupů přes SSH a HTTPS.

  • Základní CI/CD workflow s využitím GitHub Actions.

  • Práce s pull requesty a merge requesty. Základní code review.

## 6.-7. Projektová struktura a modulární kód

  • V rámci této části bude zadán skupinový projekt.

  • Skupinový projekt se zaměří na vývoj většího softwarového celku v týmu.

  • Studenti se naučí organizovat projekt do přehledných adresářů a modulů

  • Studenti zjistí, co je API a jakou roli hraje ve struktuře softwaru.

  • Naučí se navrhovat rozhraní mezi jednotlivými moduly projektu, která jsou stabilní, rozšiřitelná a srozumitelná.

  • Budou se věnovat dokumentaci k projektu a jejímu významu.

  • Seznámí se se soubory README a jejich potřebným obsahem.

  • Naučí se psát komentářovou dokumentaci přímo v kódu.

  • Vyzkoušejí si jednoduché generování dokumentace pomocí nástrojů typu Doxygen nebo podobných systémů.

## 8. Umělá inteligence ve vývoji softwaru

  • Studenti se naučí, jak efektivně pracovat s agentními systémy a nástroji založenými na umělé inteligenci pro generování kódu.

  • Seznámí se s výhodami využívání umělé inteligence a poznají též úskalí a rizika spojená s takzvaným „vibe codingem“.

## 9. Čitelnost kódu a coding style

  • Principy čitelného kódu a jejich praktické použití.

  • Studenti se zaměří na vhodné pojmenovávání proměnných, funkcí a modulů.

  • Důraz bude kladen na udržování konzistentního stylu v celém projektu.

  • Studenti poznají význam coding style guidelines při týmové práci.

  • Seznámí se s možnostmi formátování kódu ručně i pomocí autoformatterů.

## 10. Deployment a uživatelská rozhraní

  • Studenti získají základní přehled o virtualizaci a jejím využití při nasazování aplikací.

  • Naučí se pracovat s kontejnery Docker a Apptainer.

  • Úvod do síťové komunikace na internetu (REST API).

  • Základní principy kybernetické bezpečnosti.

  • Stručný úvod do orchestrátorů kontejnerů, například Kubernetes.

  • Seznámení s konceptem grafických uživatelských rozhraní. Seznámení s některými GUI frameworky.

## 11. Specifika vývoje vědeckého softwaru

  • FAIR principy pro vědecká data a software.

  • Přehled o HPC infrastrukturách používaných ve vědeckém prostředí.

  • Základy práce na HPC systémech pro výpočty.

  • Seznámení se s používáním plánovačů úloh, jako jsou Slurm a PBS.

## 12.–14. Práce na projektu a konzultace

  • Poslední tři bloky budou věnovány intenzivní práci na studentských projektech.

  • Studenti budou průběžně konzultovat stav svého projektu s vyučujícím.

  • Budou finalizovat implementaci jednotlivých částí softwaru.

  • Součástí bude důkladné testování a ladění výsledného řešení.

  • Studenti dokončí dokumentaci k projektu a připraví jeho prezentaci včetně demonstrace jeho nasazení v praxi.
Poslední úprava: Šícho Martin (10.02.2026)
Studijní opory -

stackexchange.com

Poslední úprava: Cibulková Jana (29.07.2025)
Výsledky učení -

Získané kompetence

  • Schopnost používat Git a vzdálené repozitáře (GitHub/GitLab) pro týmový vývoj a základní CI/CD.
  • Dovednost kompilovat, ladit a testovat programy včetně psaní unit testů a práce s code coverage.
  • Návrh modulární struktury projektu, API a tvorba technické dokumentace (README, komentářová dokumentace, generovaná dokumentace).
  • Psaní čitelného, konzistentního a dlouhodobě udržovatelného kódu podle coding style guidelines.
  • Základní orientace v nasazování aplikací s využitím kontejnerů (Docker, Apptainer), virtualizace, REST API a základů kybernetické bezpečnosti.
  • Porozumění specifikům vývoje vědeckého softwaru, FAIR principům a práci na HPC infrastruktuře.
  • Schopnost využívat nástroje umělé inteligence pro podporu vývoje kódu s uvědoměním si jejich limitů a rizik.
Poslední úprava: Šícho Martin (10.02.2026)
Studijní prerekvizity -

žádné

Poslední úprava: Cibulková Jana (29.07.2025)
 
VŠCHT Praha