Logo ČVUT
ČESKÉ VYSOKÉ UČENÍ TECHNICKÉ V PRAZE
STUDIJNÍ PLÁNY
2025/2026

GNU programování

Zobrazit rozvrh
Kód Zakončení Kredity Rozsah
11GNU KZ 4 2P+2C
Garant předmětu:
Martin Dráb
Přednášející:
Martin Dráb
Cvičící:
Předmět zajišťuje:
katedra inženýrství pevných látek
Anotace:

Účelem (převážně) přednášek a (občasných) cvičení je seznámit studenty s prostředím systému Linux a v něm používanými GNU utilitami a programovacími nástroji do té míry, aby byli schopni těchto nástrojů využívat k vytváření skriptů a programů pro zpracování naměřených či simulovaných dat pro svoje fyzikální experimenty s použitím fakultního Hyperion clusteru (přičemž naučené dovednosti lze samozřejmě aplikovat na libovolný Linuxový systém). K tomu, aby byli studenti schopni psát efektivní kód je ovšem potřeba vědět jak dnešní počítače vnitřně fungují, takže první zhruba polovina kurzu je věnována přehledu principů vnitřního fungování počítače (od hardwaru, přes operační systém až po aplikace).

Požadavky:

Vypracování zápočtové úlohy zahrnující jak buildování projektu, program v C i script v BASHi s použitím dalších GNU utilit. Primárně zaměřeno na zpracování experimentálních dat. Po úspěšném odevzdání vyhovovující zápočtové úlohy následuje osobní diskuse nad řešením a dotazy na teoretické věci z první zhruba poloviny přednášek. Na základě toho všeho pak následuje udělení klasifikovaného zápočtu.

Osnova přednášek:

1. Úvod, fyzická ukázka HW, komponenty, sběrnice.

2. Procesor, jádro, vlákno, RISC/CISC, instrukce, pipeline, registry, klopné obvody, Booleova algebra.

3. Registry x86-64, IEEE754, cache, cache-line, FIFO/LIFO.

4. RAM (topologie/organizace, řádky, sloupce, banky, ranky, CL, multi-channel, refresh, princip).

5. Virtualizace paměti, MMU, page-table, memory mapping, TLB, adresové prostory, swap, shared memory.

6. I/O, MMIO, IOMMU, zařízení, GPU, APU, přerušení a výjimky, znaková a bloková zařízení.

7. Protection mode, protection rings, proces, vlákno, kontexty, user-space, kernel-space, context switching.

8. Bloková zařízení, disky, sektor, CHS, LBA, AF, 4kn/512e, RAID, filesystemy, soubor, adresář, FAT, journal,

inode, b-tree, symlink, hardlink, snapshots.

9. Boot, MBR/GPT, partition table, (U)EFI/Legacy, BIOS, kernel architecture, Linux distribuce, virtualizace.

10. Úvod do Linuxu, Linux vs. Windows, UNIX/Windows time, EPOCH, práva, file attributy, UID, GID, PID, FHS.

11. Rozdělení programovacích jazyků, princip překladače.

12. Pokračování principu překladače (GIMPLE, RTL, optimalizace, frontend, backend, LTO, PGO).

13. Dokončení principu překladače, Princip interpreteru.

14. Přihlášení k Linuxu, vim, shell, BASH, man, info, základní příkazy a utility pro práci se soubory.

15. BASH: proměnné, expanze, stdin/stdout/stderr, přesměrování, subshell, pole.

16. BASH: příkazy, výrazy, pipe, speciální výrazy a symboly, aritmetika, psaní scriptů.

17. BASH: další příkazy, ukázky.

18. grep, regulární výrazy, sed: princip a většina příkazů.

19. sed: příkaz 's' a adresování; C: úvod, standardy, libc, základní typy, ukazatele, void pointer, pole.

20. C: složené typy, makra, pointerová aritmetika, kvalifikátory, dynamicky alokovaná paměť,

garbage collector, reference counting.

21. C: operátory a jejich priority, atomické operace, příklady kódu

22. C: příklady kódu, práce se soubory.

23. GNU Make: Úvod, Makefile, pravidla, předpoklady, statické a dynamické knihovny, ruční linkování, ukázky

24. SW projekty, buildovací systémy, Autotools (autoconf, automake, m4, libtool), příklady

(Ostatní přednášky většinou odpadnou v průběhu semestru, jinak ale lze pokračovat k úvodu do paralelního programování a práci s clusterem. Volitelně, dle času.)

Osnova cvičení:

(Cvičení nejsou oddělená od přednášek a probíhají v návaznosti na ně dle potřeby.)

Cíle studia:
Studijní materiály:

Povinná literatura:

[1] C. Alvin: Computer Programming: Learn Any Programming Language in 2 Hours. CreateSpace Independent Publishing Platform, 2018. ISBN: 1985644916, 9781985644915

[2] T. Roughgarden: Algorithms Illuminated. Soundlikeyourself Publishing, LLC 2019, ISBN-13: 978-0999282946.

Doporučená literatura:

[1] M. Barr, A. Massa: Programming Embedded Systems: With C and GNU Development Tools. 2nd ed., OReilly Media, Sebastopol CA USA 2007, ISBN-13: 978-0596009830

Poznámka:
Rozvrh na zimní semestr 2025/2026:
Rozvrh není připraven
Rozvrh na letní semestr 2025/2026:
Rozvrh není připraven
Předmět je součástí následujících studijních plánů:
Platnost dat k 1. 10. 2025
Aktualizace výše uvedených informací naleznete na adrese https://bilakniha.cvut.cz/cs/predmet6371006.html