Программа и содержание

Слив курса Rust Developer. Basic. 2025 [Otus] [Сергей Потамошнев, Артем Павлов]

Разрабатывайте безопасное и отказоустойчивое ПО на языке Rust

Для кого этот курс?

Для тех, кто знаком с основами программирования и хочет развиваться в разработке на Rust: разберётесь в синтаксисе Rust, получите ценный практический опыт

Для начинающих разработчиков на системных языках С и C++: познакомитесь с языком, который не уступает в производительности C и C++, а также гарантирует безопасность в работе с памятью

Для начинающих разработчиков на интерпретируемых или высокоуровневых языках (Python, JS, Java, C#): сможете увеличить производительность приложений

Что вам даст этот курс?

Rust используется в веб-разработке, в разработке системного ПО, мобильной разработке, разработке встраиваемых систем и даже в анализе данных.

А ещё — в блокчейне и машинном обучении.

На этом курсе вы изучите особенности работы с низкоуровневым ПО, подходы к разработке безопасного и отказоустойчивого ПО, а также основные библиотеки Rust.

Вы научитесь:

пользоваться инструментарием Rust

чинить, собирать и запускать приложения

реализовывать функции

работать с циклами, ветвлениями, кортежами, структурами и перечислениями

писать программы в процедурном стиле с использованием ссылок

работать со слайсами, строками и массивами

писать программы в объектном стиле

переиспользовать код и обобщать поведение с помощью шаблонов и трейтов

писать приложения с полиморфизмом

писать безопасный сложный многопоточный код

создавать декларативные макросы

использовать асинхронные вызовы для работы с сетью и файловой системой

читать и писать сложные Rust-приложения

Программа:

Введение

Познакомимся с языком. Узнаем, как устроен курс. Поговорим о разработке ПО в целом.

Тема 1: Знакомство с Rust. Подготовка к обучению

Тема 2: Основы архитектуры компьютера

Синтаксис Rust и основы Computer Science

Разберёмся с базовыми концепциями разработки ПО. Рассмотрим и попрактикуемся в реализации этих концепций с использованием Rust.

Тема 1: Типы данных. Переменные и функции

Тема 2: Сложные типы данных. Кортеж, структура, перечисление

Тема 3: Ветвление и циклы

Тема 4: Практика: Типы данных. Переменные и функции. Ветвление и циклы

Тема 5: Управление ресурсами. Клонирование. Трейт Copy. Принцип владения

Тема 6: Владение. Ссылки и заимствование

Тема 7: Практика: Владение и заимствование

Тема 8: Коллекции. Слайсы, массивы, строки

Тема 9: Q&A сессия

Тема 10: Структуры и методы. Инкапсуляция

Тема 11: Перечисления и pattern matching

Тема 12: Практика: Структуры и методы. Перечисления и pattern matching

Тема 13: Введение в систему типов. Типы стандартной библиотеки: Result, Option, ()

Тема 14: Введение в лямбда-функции

Тема 15: Обрабока ошибок. Оператор ?. Обработчики Result, Option

Тема 16: Практика: работа с Result, Option

Типы, полиморфизм и дженерики

Познакомимся с утилитарными элементами стандартной библиотеки.

Научимся работать со стандартными коллекциями и оценивать сложность алгоритмов.

Научимся писать сложный полиморфный код и рассуждать о типах.

Тема 1: Обобщённое программирование. Статический полиморфизм

Тема 2: Q&A сессия

Тема 3: Времена жизни

Тема 4: Обобщённое программирование. Наследование

Тема 5: Обобщенное программирование. Динамический полиморфизм. dyn Trait. dyn Any

Тема 6: Практика: Обобщённое программирование

Тема 7: Коллекции. Big O нотация. Хэш-мэп и вектор

Тема 8: Коллекции. Итераторы.

Тема 9: Практика: коллекции и итераторы

Тема 10: Функции. Типы функций. Лямбда-функции

Тема 11: Q&A сессия

Многопоточность и дополнительные темы

Изучим концепцию многопоточности и увидим, как Rust упрощает написание многопоточных приложений.

Тема 1: Работа с кучей. Box, Arc, Rc. RAII

Тема 2: Потоки. Создание потоков. Send + Sync

Тема 3: Лямбды и потоки. Send + Sync. Использование move и Arc

Тема 4: Mutex, Atomic

Тема 5: Практика: потоки, куча, mutex, atomic

Тема 6: Interior mutability

Тема 7: Q&A сессия

Тема 8: Сборка. Модули

Тема 9: Продвинутые элементы синтаксиса

Тема 10: Макросы: декларативные и процедурные

Тема 11: Асинхронность. Понятие Event Loop, проблема 10k соединений. Использование async/await

Тема 12: Пример: разбор приложения на Rust

Тема 13: Q&A сессия

Проектная работа

Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания

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

- Сергей Потамошнев

Ведущий разработчик

10+ лет опыта промышленной разработки, в том числе создания веб-приложений, инфраструктурных решений, высоконагруженных систем, баз данных и аналитических систем.

Образование: СурГу, инженер - программист, факультет информационных технологий.

- Артём Павлов

Опытный Rust программист. Являюсь создателем и одним из главных мейнтейнеров проекта RustCrypto. Занимался разработкой программного обеспечения для беспилотного автотранспорта. На данный момент занимаюсь разработкой баз данных и средств криптографических зашиты информации

Образование: степень бакалавра и магистра в Московском Физико-Техническом Институте, закончил аспирантуру в Сколковском Институте Науки и Технологий