Разрабатывайте безопасное и отказоустойчивое ПО на языке Rust.
Для кого курс Basic?
- Для тех, кто знаком с основами программирования и хочет развиваться в разработке на 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. Занимался разработкой программного обеспечения для беспилотного автотранспорта. На данный момент занимаюсь разработкой баз данных и средств криптографических зашиты информации
- Образование: степень бакалавра и магистра в Московском Физико-Техническом Институте, закончил аспирантуру в Сколковском Институте Науки и Технологий
Для кого этот курс Professional?
- Для разработчиков на системных языках (С, C++, …): вы изучите сильные и слабые стороны языка Rust, сможете избежать ошибок в работе с памятью и многопоточностью, научитесь проектировать высокопроизводительное ПО
- Для разработчиков на интепретируемых или высокоуровневых языках (Python, JS, Java, C#, …): с помощью Rust вы значительно ускорите работу критических секций и увеличите производительность ПО; изучите особенности работы с низкоуровневым ПО, а также исследуете подходы к разработке безопасных и отказоустойчивых
- Для действующих Rust-разработчиков и тех, кто прошёл базовый курс Rust Developer. Basic: сможете повысить квалификацию с помощью новых знаний и навыков
Необходимые знания
- базовое знание Rust или любого другого языка программирования
- знание баз данных
Вы научитесь:
- использовать язык Rust для разработки ПО
- разворачивать Rust и среду разработки
- создавать надёжное, отказоустойчивое и высокопроизводительное ПО
- тестировать код
- использовать сторонние библиотеки
- писать асинхронный код
Программа продвинутого курса
Особенности Rust
Демонстрируем студенту основные отличия Rust от других языков, а также примеры идиоматического Rust кода с использованием элементов std.
- Тема 1: Какие проблемы решает Rust?
- Тема 2: Организация проекта
- Тема 3: Владение, заимствование и типы данных//ДЗ
- Тема 4: Статический полиморфизм
- Тема 5: Динамический полиморфизм
- Тема 6: Макросы
- Тема 7: Макросы. Часть 2
- Тема 8: Стандартная библиотека//ДЗ
- Тема 9: Практика Rust разработки #1
- Тема 10: Практика Rust разработки #2
- Тема 11: Консультация по домашним заданиям
Многопоточность
Вы научитесь разрабатывать многопоточные приложения на Rust. Мы разберем, как Rust помогает избегать гонок данных, научимся использовать трейты Send и Sync, а также синхронизировать потоки. В практической части вы реализуете ThreadPool, освоите модель акторов и создадите многопользовательский чат. Также вы изучите основы асинхронного программирования с помощью async/await, и принцип работы асинхронных задач и планировщиков.
- Тема 1: Многопоточность без страха
- Тема 2: Пишем ThreadPool
- Тема 3: Асинхронный код
- Тема 4: Асинхронность под капотом//ДЗ
- Тема 5: Пишем чат
- Тема 6: Консультация по домашним заданиям
Архитектура
Вы изучите идиомы функционального и объектно-ориентированного программирования в Rust. Мы разберем стратегии обработки ошибок, поймем, как инварианты повышают надежность API, и изучим полезные паттерны проектирования. В практических занятиях вы потренируетесь в принятии архитектурных решений и написании идиоматического кода.
- Тема 1: Элементы ФП и ООП в Rust
- Тема 2: Обработка ошибок
- Тема 3: Инварианты
- Тема 4: Rust паттерны//ДЗ
- Тема 5: Практика проектирования #1
- Тема 6: Практика проектирования #2
- Тема 7: Консультация по домашним заданиям
Экосистема
Вы познакомитесь с наиболее популярными готовыми решениями экосистемы Rust в различных областях, которые значительно упрощают разработку. Мы рассмотрим популярные утилитарные крейты для работы с математикой, сериализацией, многопоточностью и тестированием. Вы научитесь работать с логами, отладкой и профилированием, включая такие инструменты, как Valgrind, Flamegreph и Miri. Также мы изучим основы FFI и создание интерфейсов между Rust и другими языками.
- Тема 1: Утилитарные крейты
- Тема 2: Логи, отладка, профилирование
- Тема 3: Теория FFI//ДЗ
- Тема 4: Практика FFI
- Тема 5: Консультация по домашним заданиям
- Тема 6: Backend #1
- Тема 7: Backend #2
- Тема 8: actix-web под капотом
- Тема 9: GUI
- Тема 10: Frontend//ДЗ
- Тема 11: Примеры кода Frontend приложений
- Тема 12: Консультация по домашним заданиям
- Тема 13: Blockchain//ДЗ
- Тема 14: Примеры смарт-контрактов
- Тема 15: GameDev//ДЗ
- Тема 16: Пример игры на Rust
- Тема 17: Консультация по домашним заданиям
Проектная работа
Преподаватели
Эксперты-практики делятся опытом, разбирают кейсы студентов и дают развернутый фидбэк на домашние задания
- Кирилл Федченкою Lead Rust Developer. InfinitySwap
- Илья Богданов. Rust Developer. Enso
- Павел Ершов. Rust Developer
- Сергей Потамошнев









