460-4157/02 – Programování v Rustu (PvR)
Garantující katedra | Katedra informatiky | Kredity | 4 |
Garant předmětu | Mgr. Ing. Michal Krumnikl, Ph.D. | Garant verze předmětu | Mgr. Ing. Michal Krumnikl, Ph.D. |
Úroveň studia | pregraduální nebo graduální | Povinnost | volitelný odborný |
Ročník | 1 | Semestr | zimní |
| | Jazyk výuky | angličtina |
Rok zavedení | 2024/2025 | Rok zrušení | |
Určeno pro fakulty | FEI | Určeno pro typy studia | navazující magisterské |
Cíle předmětu vyjádřené dosaženými dovednostmi a kompetencemi
Cílem předmětu je seznámit studenty s programovacím jazykem Rust a jeho specifickými konstrukcemi, které umožňují tvorbu efektivních a paměťově bezpečných programů. Po dokončení předmětu studenti budou schopni samostatně vytvářet komplexní aplikace v Rustu a umět využívat nejpoužívanější knihovny z Rust ekosystému.
Vyučovací metody
Přednášky
Cvičení (v učebně)
Anotace
Předmět uvede studenty do problematiky návrhu robustních a paměťově bezpečných programů s využitím programovacího jazyka Rust, se zaměřením na návrh robustního rozhraní, ošetřování chyb, a generické, asynchronní a vícevláknové programování. Důraz bude kladen také na vysvětlení principů síťových aplikací a specifika jejich implementace v jazyku Rust.
Povinná literatura:
[1] KLABNIK, Steve and NICHOLS, Carol. The Rust Programming Language. 2018. No Starch Press.
Doporučená literatura:
[1] PALMIERI, Luca. Zero To Production In Rust. 2022. Independently published.
[2] GJENGSET, Jon. Rust for Rustaceans. 2021. No Starch Press.
Forma způsobu ověření studijních výsledků a další požadavky na studenta
Průběžná kontrola studijních aktivit a přiřazených úkolů v rámci pravidelných seminářů.
E-learning
Další požadavky na studenta
Očekává se, že studenti budou na lekcích z programování aktivně řešit zadané úlohy. Některé úlohy mohou vyžadovat pečlivou domácí přípravu.
Prerekvizity
Předmět nemá žádné prerekvizity.
Korekvizity
Předmět nemá žádné korekvizity.
Osnova předmětu
Přednášky
- Správa Rust projektů (Cargo), proměnné, typový systém, výrazy
- Funkce, datové struktury (struktury a enumy), pattern matching, moduly
- Koncepty ownership, borrowing a lifetimes
- Základy standardní knihovny (řetězce, dynamické pole, hashovací tabulky), ošetření chyb, interior mutability
- Polymorfismus, koncept traits, generické programování, dynamic dispatch
- Funkcionální programování (iterátory, anonymní funkce)
- Využití knihoven (serializace, ošetření chyb, logování, parametry příkazové řádky atd.)
- Práce se sockety a síťové programování
- Vlákna, reference counting, synchronizační primitiva, paralelismus
- Neblokující operace, koncepty Pin a Future, asynchronní programování
- Tvorba maker, koncept unsafe
- Využití kódu napsaného v jiných programovacích jazycích (foreign function interface)
Cvičení
- Práce s nástrojem Cargo, nastavení IDE, proměnné, datové typy, výrazy
- Struktury a enumy, pattern matching, rozdělení programu do modulů
- Tvorba API pomocí konceptu ownership, seznámení se s konceptem borrow checkeru
- Využití standardní knihovny, ošetření chyb a krajních situací
- Tvorba polymorfního API pomocí traitů a generického programování
- Využití funkcionálního programování pomocí iterátorů a anonymních funkcí
- Použití externích knihoven z crates.io
- Tvorba síťové aplikace pomocí blokujících socketů
- Využití vláken a synchronizačních primitiv
- Tvorba síťové aplikace pomocí neblokujících socketů, práce s Futures a async/await
- Deklarativní a procedurání makra, využití bloku unsafe, seznámení s nástrojem miri
- Využití kódu v jazyku C nebo C++, implementace Python modulů pomocí Rustu
Podmínky absolvování předmětu
Výskyt ve studijních plánech
Výskyt ve speciálních blocích
Hodnocení Výuky
Předmět neobsahuje žádné hodnocení.