University of Warsaw - Central Authentication System
Strona główna

(in Polish) Programowanie w języku Rust

General data

Course ID: 1000-2M24RUS
Erasmus code / ISCED: (unknown) / (unknown)
Course title: (unknown)
Name in Polish: Programowanie w języku Rust
Organizational unit: Faculty of Mathematics, Informatics, and Mechanics
Course groups: Elective courses (tools for programming) for Computer Science
ECTS credit allocation (and other scores): 4.00 Basic information on ECTS credits allocation principles:
  • the annual hourly workload of the student’s work required to achieve the expected learning outcomes for a given stage is 1500-1800h, corresponding to 60 ECTS;
  • the student’s weekly hourly workload is 45 h;
  • 1 ECTS point corresponds to 25-30 hours of student work needed to achieve the assumed learning outcomes;
  • weekly student workload necessary to achieve the assumed learning outcomes allows to obtain 1.5 ECTS;
  • work required to pass the course, which has been assigned 3 ECTS, constitutes 10% of the semester student load.

view allocation of credits
Language: (unknown)
Prerequisites:

Computer architecture and operating systems 1000-212bAKSO
Concurrent programming 1000-213bPW
Introductory programming 1000-211bWPI
Object-oriented programming 1000-212cPO

Short description: (in Polish)

Rust jest nowoczesnym kompilowanym językiem programowania o szerokim spektrum zastosowań. Cechuje go wydajność zbliżona do C czy C++, bezpieczeństwo w zarządzaniu pamięcią mimo braku garbage collectora, bogaty i ścisły system typów, preferowanie zwięzłych idiomów funkcyjnych i wygodne programowanie współbieżne. Rust jest uwielbiany przez programistów, o czym świadczy zajmowana od wielu lat pozycja lidera w rankingach StackOverflow.

Full description: (in Polish)

Zagadnienia

* Wprowadzenie. Ekosystem języka Rust. Rustup, Cargo, Clippy, Rustfmt. “Hello world”.

* Własność. Borrow checker - najważniejsza innowacja Rusta. String vs &str, Vec<T> vs &[T], Lifetime.

* Typy danych. Struktury i enumeracje. Pattern matching.

* Crate i moduły. Obsługa zależności. Cargo.toml.

* Eksplicytna obsługa błędów. Typ Result zamiast wyjątków, typ Option zamiast nulla.

* Typy generyczne. Trait. Static (impl) vs dynamic (dyn) dispatch.

* Wbudowane narzędzia do testowania kodu.

* Programowanie funkcyjne. Iteratory i domknięcia (closures).

* Własność cz. 2. Smart pointery. Analogie i różnice z C++.

* Wprowadzenie do współbieżności w Ruście. “Fearless Concurrency”. Wątki. Biblioteka Rayon. Iteratory równoległe.

* Programowanie asynchroniczne w Ruście. Biblioteka Tokio.

* Higieniczne makra. Makra deklaratywne, makra proceduralne.

* Kod unsafe. Gwarancje zapewniane przez kod safe. Odpowiedzialność twórcy API w Rust.

* Kompatybilność binarna z językiem C (FFI - Foreign Function Interface) - extern "C", repr(C).

* Przegląd popularnych bibliotek: log - logowanie (komunikaty diagnostyczne), clap - parsowanie argumentów linii komend, iced/egui - budowanie GUI, serde - serializacja i deserializacja danych, {anyhow, thiserror} - obsługa błędów odpowiednio w aplikacjach i bibliotekach, axum - ergonomiczny framework webowy.

Bibliography: (in Polish)

The Rust Book - https://doc.rust-lang.org/book/

Classes in period "Winter semester 2024/25" (future)

Time span: 2024-10-01 - 2025-01-26
Selected timetable range:
Navigate to timetable
Type of class:
Lab, 30 hours more information
Coordinators: Wojciech Przytuła
Group instructors: Wojciech Przytuła
Students list: (inaccessible to you)
Examination: Grading
Course descriptions are protected by copyright.
Copyright by University of Warsaw.
Krakowskie Przedmieście 26/28
00-927 Warszawa
tel: +48 22 55 20 000 https://uw.edu.pl/
contact accessibility statement USOSweb 7.0.3.0 (2024-03-22)