Программирование на Rust весна 2025 — различия между версиями

Материал из Public ATP Wiki
Перейти к: навигация, поиск
(Новая страница: «Test»)
 
 
(не показано 6 промежуточных версий 2 участников)
Строка 1: Строка 1:
Test
+
= Общие сведения =
 +
Курс рассчитан на людей с опытом разработки/большим желанием его получить. В нём мы пройдёмся от базового синтаксиса языка до уровня Middle-/Middle разработчика.
 +
 
 +
* Семестр: весенний семестр 2025
 +
*[https://docs.google.com/forms/d/e/1FAIpQLSfTZ87kahAfQPBLa79r9f6GnuSKX7SF3zQa8bnO-lUlVQYVqA/viewform?usp=header Регистрация на курс]
 +
Ограничения по регистрации: максимум 20 человек
 +
* Формы контроля: домашние задания
 +
* [https://docs.google.com/spreadsheets/d/1bWE57009wDyT0rWEk1dTUf3hnTZGGjB9M9QbexWvy4Y/edit#gid=636598387 План занятий и домашних работ]
 +
* [https://t.me/+sf2FAn5Rs6U4MTdi Telegram-чат курса]
 +
 
 +
=== Материалы занятий ===
 +
* [https://drive.google.com/drive/folders/1bo_rp-iuh3p8dNBoPuGsVA9kjJ9KE8rL?usp=share_link Видео занятий]
 +
* [https://gitlab.com/iDang3r/rust2023 Коды и презентации занятий]
 +
 
 +
===== Домашние задания =====
 +
Планируется 11 домашних заданий.
 +
 
 +
Проверка: code review. Исправления по code review можно делать в течение '''1 недели''' после 1-го комментария.
 +
 
 +
{|  class="wikitable"
 +
|-
 +
! Название
 +
! Старт
 +
! Дедлайн
 +
|-
 +
| Дз 1 || 21.02.2025 || 21.03.2025
 +
|-
 +
| Дз 2 || 21.02.2025 || 27.03.2025
 +
|-
 +
| Дз 3 || 28.02.2025 || 03.04.2025
 +
|-
 +
| Дз 4 || 11.03.2025 || 06.04.2025
 +
|-
 +
| Дз 5 || 11.03.2025 || 14.04.2025
 +
|-
 +
| Дз 6 || 27.03.2025 || 14.04.2025
 +
|-
 +
| Дз 7 || 12.04.2025 || 06.05.2025
 +
|-
 +
| Дз 8 || 18.04.2025 || 18.05.2025
 +
|-
 +
| Дз 9 || 02.05.2025 || 13.06.2025
 +
|-
 +
| Дз 10 || 02.05.2025 || 13.06.2025
 +
|-
 +
| Дз 11 || 02.05.2025 || 13.06.2025
 +
|}
 +
 
 +
Штраф за опоздание по дедлайну: -25%
 +
 
 +
= Преподаватели =
 +
* '''Лектор'''
 +
** Денис Баринов [https://t.me/DBarinovv @DBarinovv]
 +
 
 +
= Критерии получения оценки =
 +
* Итоговая аттестация: оценка складывается из: активности на лекциях + домашних заданий + итоговый созвон в конце курса
 +
 
 +
== Домашние задания ==
 +
* Домашние задания: домашние задания буду даватьcя на лекциях, они будут варьироваться по сложности в зависимости от понимания аудитории. 
 +
* Дедлайн к каждому дз 1-4 недели в зависимости от сложности
 +
* Оценивание дз: оцениваться будут в рамках беседы + код ревью + доп вопросы по теме
 +
 
 +
= Литература =
 +
===«Rustbooks»===
 +
* [https://doc.rust-lang.org/book/ The Rust Programming Language] - Rustbook, the first book to be read by newbie.
 +
* [https://doc.rust-lang.org/stable/reference/ The Rust Reference] - The Rust language reference. Something like explained docs.
 +
* [https://rust-unofficial.github.io/too-many-lists/ Learn Rust With Entirely Too Many Linked Lists] - Just writing multiple linked lists. It may help to understand the basics of ownership.
 +
* [https://doc.rust-lang.org/cargo/ The Cargo Book] - The Cargo package manager reference.
 +
* [https://rust-lang-nursery.github.io/rust-cookbook/intro.html Rust Cookbook] - Explains how to solve simple, widespread programming tasks.
 +
* [https://rust-lang.github.io/api-guidelines/about.html Rust API Guidelines] - Official set of recommendations on how to design and present APIs.
 +
* [https://danielkeep.github.io/tlborm/book/index.html The Little Book of Rust Macros] - Starter book about Rust Macros.
 +
* [https://rust-unofficial.github.io/patterns/intro.html Rust Design Patterns] - Good practices of Rust programming.
 +
* [https://doc.rust-lang.org/nomicon/index.html The Rustonomicon] - The book about Unsafe Rust. In addition, it covers some advanced safety topics such as an ownership.
 +
* [https://rust-lang.github.io/unsafe-code-guidelines/introduction.html Rust's Unsafe Code Guidelines Reference (UCG WG)]
 +
* [https://nnethercote.github.io/perf-book/title-page.html The Rust Performance Book] - The book about optimizing Rust code.
 +
* [https://rust-lang.github.io/async-book/01_getting_started/01_chapter.html Asynchronous Programming in Rust] - Introduction to asynchronous programming.
 +
* [https://cfsamson.github.io/books-futures-explained/introduction.html Futures Explained in 200 Lines of Rust] - Good book on futures and executors.
 +
* [https://rustc-dev-guide.rust-lang.org/ Guide to Rustc Development] - The guide to compiler development for enthusiasts.
 +
* [https://doc.rust-lang.org/rustc/what-is-rustc.html What is rustc?] - Describes some advanced usages of the rustc compiler.
 +
* [https://docs.rust-embedded.org/book/ The Embedded Rust Book] - Programming for embedded systems in Rust.
 +
 
 +
===Articles===
 +
* [https://pngquant.org/rust.html Improved portability and performance] - How [https://github.com/ImageOptim/libimagequant libimagequant] library became more performant and portable (!) by rewriting C code to Rust.
 +
* [https://cglab.ca/~abeinges/blah/rust-btree-case/ Rust Collections Case Study: BTreeMap] - Great post about the implementation of BTree in Rust from its author.
 +
* [http://joeduffyblog.com/2016/02/07/the-error-model/ The Error Model] - Article with a perfect, step-by-step explanation of error handling models, including Rust's one, and is good and how it solves mistakes of other generations of error handling.
 +
* [https://huonw.github.io/blog/2015/05/finding-closure-in-rust/ Finding Closure in Rust] - Detailed post with "straightforward" explanation of closures design.
 +
* [https://blog.logrocket.com/how-to-organize-your-rust-tests/ How to organize your Rust tests] - Answers the question "How to organize your Rust tests" :)
 +
 
 +
===Writing idiomatic Rust code===
 +
* [https://www.youtube.com/watch?v=0zOg8_B71gE Writing Idiomatic Libraries in Rust] - Good talk on writing idiomatic code.
 +
 
 +
===Conference talks about Rust===
 +
* [https://www.youtube.com/watch?v=79PSagCD_AY The History of Rust] - Just a bit of History of Rust.
 +
* [https://www.youtube.com/watch?v=2ajos-0OWts How Rust Views Tradeoffs] - Good talk about the aims of Rust language.
 +
* [https://www.youtube.com/watch?v=UrDhMWISR3w RustConf 2021 - Move Constructors: Is it Possible? by Miguel Young de la Sota]
 +
* [https://www.youtube.com/watch?v=lJ3NC-R3gSI Rust's Journey to Async/Await] - The talk about the high-level design of async in Rust.
 +
* [https://www.youtube.com/watch?v=NNwK5ZPAJCk The Talk You've Been Await-ing for] - Introduction to async in Rust.
 +
* [https://www.youtube.com/watch?v=vqavdUGKeb4 Rust Programming Techniques] - Good practices of writing idiomatic code.
 +
 
 +
===YouTube channels===
 +
* [https://www.youtube.com/watch?v=XDv4I3_4Ubs&list=PL4_hYwCyhAvbeLzi699gqMUA4UaPkcdmJ Previous year course] - It is highly recommended for viewing if you missed something or did not understand
 +
* [https://www.youtube.com/c/JonGjengset/featured Jon Gjengset YouTube channel] - Excellent channel about Rust, especially "Crust of Rust" series, where several topics covered from intermediate to advanced level.
 +
* [https://www.youtube.com/channel/UCLd3PQ6J0C-VuNBozsXGUWg/featured Aleksey Kladov YouTube channel] - If you're interested in how rust-analyzer works - it's the best channel and the best speaker.
 +
 
 +
===Research papers===
 +
* [http://plv.mpi-sws.org/rustbelt/ghostcell/paper.pdf GhostCell: Separating Permissions from Data in Rust] - Tricky usage of Rust type system.
 +
* [https://plv.mpi-sws.org/rustbelt/stacked-borrows/paper.pdf Stacked Borrows: An Aliasing Model for Rust] - On checking unsafe code.
 +
 
 +
===Books===
 +
* [https://nostarch.com/rust-rustaceans "Rust for Rustaceans - Idiomatic Programming for Experienced Developers" by Jon Gjengset] - Perfect book that covers a lot of details about the language in-depth.
 +
* [https://www.zero2prod.com/index.html?country=Netherlands&discount_code=VAT20 Zero To Production In Rust]
 +
 
 +
===Blogs===
 +
* [https://alastairreid.github.io/ Alastair Reid blog] - You can find great posts about automatic verification tools in this blog.
 +
* [https://matklad.github.io/ Aleksey Kladov blog] - Some random things about Rust.
 +
* [https://ihatereality.space/ Waffle blog] - Some random things about Rust.
 +
* [https://beachape.com/ Lloyd Chan blog] - The author usually writes on advanced usages of the type system.
 +
 
 +
 
 +
=== Полезные ссылки ===

Текущая версия на 13:54, 3 февраля 2025

Общие сведения

Курс рассчитан на людей с опытом разработки/большим желанием его получить. В нём мы пройдёмся от базового синтаксиса языка до уровня Middle-/Middle разработчика.

Ограничения по регистрации: максимум 20 человек

Материалы занятий

Домашние задания

Планируется 11 домашних заданий.

Проверка: code review. Исправления по code review можно делать в течение 1 недели после 1-го комментария.

Название Старт Дедлайн
Дз 1 21.02.2025 21.03.2025
Дз 2 21.02.2025 27.03.2025
Дз 3 28.02.2025 03.04.2025
Дз 4 11.03.2025 06.04.2025
Дз 5 11.03.2025 14.04.2025
Дз 6 27.03.2025 14.04.2025
Дз 7 12.04.2025 06.05.2025
Дз 8 18.04.2025 18.05.2025
Дз 9 02.05.2025 13.06.2025
Дз 10 02.05.2025 13.06.2025
Дз 11 02.05.2025 13.06.2025

Штраф за опоздание по дедлайну: -25%

Преподаватели

  • Лектор

Критерии получения оценки

  • Итоговая аттестация: оценка складывается из: активности на лекциях + домашних заданий + итоговый созвон в конце курса

Домашние задания

  • Домашние задания: домашние задания буду даватьcя на лекциях, они будут варьироваться по сложности в зависимости от понимания аудитории.
  • Дедлайн к каждому дз 1-4 недели в зависимости от сложности
  • Оценивание дз: оцениваться будут в рамках беседы + код ревью + доп вопросы по теме

Литература

«Rustbooks»

Articles

Writing idiomatic Rust code

Conference talks about Rust

YouTube channels

  • Previous year course - It is highly recommended for viewing if you missed something or did not understand
  • Jon Gjengset YouTube channel - Excellent channel about Rust, especially "Crust of Rust" series, where several topics covered from intermediate to advanced level.
  • Aleksey Kladov YouTube channel - If you're interested in how rust-analyzer works - it's the best channel and the best speaker.

Research papers

Books

Blogs


Полезные ссылки