👋 Канал OTUS в Telegram!
Посты от приглашенных гостей из IT-тусовки, полезные статьи, подборки вакансий от партнеров ➞
Подробнее

Курсы

Программирование
Архитектор программного обеспечения
-40%
Архитектура и шаблоны проектирования
-40%
Fullstack разработчик JavaScript
-40%
MS SQL Server разработчик
-40%
Android-разработчик. Продвинутый курс
-40%
Android-разработчик. Базовый курс
-40%
Backend-разработка на Kotlin
-30%
Программист 1С
-30%
Symfony Framework
-30%
Разработчик на Spring Framework
-20%
Разработчик Golang
-25%
C# ASP.NET Core разработчик
-25%
iOS-разработчик. Базовый курс
-25%
VOIP инженер Базы данных Web-разработчик на Python Разработчик программных роботов (RPA) на базе UiPath и PIX Разработчик игр на Unity Vue.js разработчик Agile Project Manager в IT Супер - интенсив по паттернам проектирования Супер - интенсив по Kubernetes
Специализации Курсы в разработке Подготовительные курсы
+7 499 938-92-02
Проходил 13 июня 2019 года в 20:00

Открытый вебинар
Особенности работы с WebAssembly

Открытый вебинар онлайн

Знакомимся с WebAssembly: разбираем архитектуру JavaScript-движка на примере V8, чтобы лучше понять, какое место занимает в нём WebAssembly. И изучаем примеры.
Преподаватель
Александр Коржиков

Запись

О курсе

Fullstack разработчик JavaScript
100 000 ₽ 60 000 ₽
6 месяцев
Начало 29 июня
Вы научитесь решать на JavaScript различные задачи фронтенда и бэкенда. Стек позволяет внести разнообразие в свою работу, открывает возможность участвовать в интересных проектах и стартапах, предлагать комплексные решения. Однозначно, Fullstack-специальность для тех, кто ищет драйва и хардкора в разработке! Во время обучения вы пополните портфолио, а также сможете выполнить индустриальный проект от компании REVOLUT, который компания предлагает студентам в качестве …
Программа курса
Модуль 1
JavaScript
Модуль 2
Современный Стэк JavaScript
Модуль 3
Node
Модуль 4
Angular
Модуль 5
React
Модуль 6
Vue
Модуль 7
Проектная работа
JavaScript
Мы рассмотрим основные возможности современного и традиционного JavaScript, стандарт EcmaScript 6+, Templates, асинхронные паттерны Promise, Async Await, переменные, замыкания, функции, наследование и классы. Разберем особенности браузерного API и спецификаций Web Components на примере библиотеки Lit-HTML. Обсудим главные принципы и возможности Node.js, а также NPM для управления зависимостями и автоматизации задач. Мы научимся использовать Test-Driven Development при решении практических задач.
Введение в курс Modern JavaScript Frameworks
после занятия вы сможете:
познакомиться с преподавателем и с программой курса, понимать как она построена и какие полезные навыки они получат;
объяснить основные возможности языка JavaScript;
применять техники языка, которые помогут при изучении фреймворков.
Домашние задания: 1
ДЗ
Задача про список рекомендаций maxItemAssociation. Написать функцию maxItemAssociation(), получающую исторические данные покупок пользователей и возвращающую максимальный список рекомендаций.

Входные данные - массив исторических покупок пользователей [["a", "b"], ["a", "c"], ["d", "e"]]. То есть пользователь 1 купил "a" и "b". Пользователь 2 купил продукты "a", "c". Пользователь 2 купил продукты "d", "e".
Надо найти максимальную группу рекомендаций. Группа рекомендаций - это продукты, которые был куплены другими пользователями при условии, если они пересекаются с исходным списком.
Если количество рекомендаций в группах одинаковое - вернуть первую группу, из отсортированных в лексикографическом порядке.

Решение:
Группа рекомендаций 1 - ["a", "b", "c"]. Покупка "a" содержится в списке 2, поэтому весь список 2 может быть добавлен в рекомендации.
Группа рекомендаций 2 - ["d", "e"].

Ответ: ["a", "b", "c"]
Возможности современного JavaScript
после занятия вы сможете:
решать специфичные для браузерной разработки задачи на языке JavaScript;
освоить и вспомнить теорию, которая будет базисом для последующих уроков;
попрактиковаться с технологиями AJAX, WebSocket, Promise.
JavaScript - Работа с браузером
после занятия вы сможете:
решать специфичные для браузерной разработки задачи на языке JavaScript;
работать с Chrome Dev Tools.
Введение в Node - Пакетный менеджер NPM и возможности package.json
после занятия вы сможете:
запускать приложения на платформе Node;
писать и запускать тесты для серверного JavaScript;
работать с пакетным менеджером NPM;
управлять зависимостями и автоматизировать задачи с помощью package.json.
13 июля, 20:00 — 21:30
Лектор: Александр Коржиков
Test Driven Development
после занятия вы сможете:
разбирать примеры.
16 июля, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Домашние задания: 1
ДЗ
getPath - поиск уникального селектора.
Функциональное программирование в JavaScript
после занятия вы сможете:
разбираться в основах функционального программирования и спецификах применения паттернов функционального программирования в JavaScript.
20 июля, 20:00 — 21:30
Лектор: Маргарита Образцова
Современный Стэк JavaScript
В этом блоке мы рассматриваем свежие, но уже зарекомендовавшие себя темы из мира JavaScript. Познакомимся со спецификацией Web Components, и научимся использовать библиотеку Lit-Element, построенную вокруг этой технологии.
SvelteJS - новая большая вещь в мире фронтенда, и мы обязательно должны ее попробовать. TypeScript - стандарт отрасли, поэтому мы начинаем его изучать и практиковать как можно раньше в курсе в FullStack JavaScript разработчик.
Web Components
после занятия вы сможете:
ориентироваться в веб спецификациях Custom Elements и Shadow DOM;
создавать custom elements, используя встроенные браузерные возможности;
использовать HTML Template для шаблонизации компонент.
23 июля, 20:00 — 21:30
Лектор: Александр Коржиков
Использование Lit-HTML и Webpack
после занятия вы сможете:
использовать особенности Lit-HTML для создания приложений;
объяснить принципы Polymer;
настраивать Webpack;
различать Parcel и Rollup.
27 июля, 20:00 — 21:30
Лектор: Михаил Кузнецов
Домашние задания: 1
ДЗ
Custom Elements Tree. С помощью Custom Elements создать приложение для показа дерева с помощью компонентов my-tree и my-leaf. Компоненты должны получать данные о структуре поддерева от родительского элемента. Используйте Shadow DOM при отрисовке компонент. Можно также использовать для реализации Lit-Element, Lit-HTML или Polymer.

Пример структуры

{
"id": 1,
"items": [{
"id": 2,
"items": [{ "id": 3 }]
}]
}
Введение в SvelteJS
после занятия вы сможете:
объяснить основные преимущества и цели фреймворка;
запускать проект на SvelteJS;
использовать шаблоны и создавать компоненты.
30 июля, 20:00 — 21:30
Лектор: Михаил Кузнецов
Особенности разработки приложений с SvelteJS
после занятия вы сможете:
создавать Routing для приложений;
описавать стили для проекта под SvelteJS;
тестировать и подготовить проект к production.
3 августа, 20:00 — 21:30
Лектор: Михаил Кузнецов
Введение в TypeScript
после занятия вы сможете:
различать TypeScript и JavaScript, использовать преимущества статической типизации;
писать и понимать код на языке TypeScript, разрабатывать приложения в полноценном объектно-ориентированном стиле.
6 августа, 20:00 — 21:30
Лектор: Антон Морев
Домашние задания: 1
ДЗ
Перевести проект на TypeScript. Можно использовать свой репозиторий или любой опенсерсовый проект, например
- https://github.com/korzio/djv/tree/ts
Особенности TypeScript
после занятия вы сможете:
проанализировать специальные особенности TypeScript;
разбираться в Namespaces, Generics, Decorators, Type Definitions, Metadata;
применять типы и декораторы.
подвести итоги технологий `Node`.
10 августа, 20:00 — 21:30
Лектор: Антон Морев
Node
Этот модуль о серверной среде JavaScript. Мы разберем ключевые особенности Node.js - EventLoop, модули и потоки. Мы научимся строить API, используя фреймворк Express, подходы REST и GraphQL. Поговорим о WebAssembly и общих практиках при работе с процессами и ошибками. В конце мы подведем резюме стэка технологий Node.js.
Основные концепции Node - Modules
после занятия вы сможете:
использовать require, exports и ES6 Imports для экспорта и импорта зависимостей.
13 августа, 20:00 — 21:30
Лектор: Александр Коржиков
Стандартная библиотека Node - EventLoop - Timers
после занятия вы сможете:
ориентироваться в понятии EventLoop и особенностях работы Timers;
использовать классы, объекты и функции модуля Streams;
работать c HTTP запросами в Node.
17 августа, 20:00 — 21:30
Лектор: Дмитрий Доронин
Домашние задания: 1
ДЗ
tree - вывод списка файлов и папок файловой системы. Напишите `NodeJS` скрипт `tree` для вывода списка файлов и папок файловой системы.
Результатом работы должен быть объект с массивами `{ files, folders }`.
Вызовы файловой системы должны быть асинхронными.
Скрипт принимает входной параметр - путь до папки.
Добавить возможность выполнять этот скрипт через команду `npm run tree -- path`

Пример

```
foo/
├── bar/
│├── bar1.txt
│├── bar2.txt
│└── baz/
├── f1.txt
└── f2.txt
```

При вызове с путем `foo/` скрипт должен вернуть структуру:

```json
{
"files": [
"foo/f1.txt",
"foo/f2.txt",
"foo/bar/bar1.txt",
"foo/bar/bar2.txt"
],
"dirs": [
"foo",
"foo/bar",
"foo/bar/baz"
]
}
```
Node Best Practices - Streams - Errors - Processes
после занятия вы сможете:
работать с дочерними процессами в Node;
различать корректные и ошибочные техники при написании; серверного JavaScript кода.
20 августа, 20:00 — 21:30
Лектор: Александр Коржиков
Домашние задания: 1
ДЗ
Работа с потоками в NodeJS*. * - задача со звездочкой. Сдается при желании.

Необходимо отсортировать большой файл со случайными целыми числами, размером 100 МБ, в условиях ограниченной оперативной памяти - 50 МБ. Решение должно быть построено с использованием потоков.

Для решения задачи можно использовать алгоритм “Сортировка слиянием”.
Процесс можно разделить на 3 этапа.

Этап 0
Любым удобным вам способом создаем исходный файл с числами размером 100 МБ.

Этап 1
Исходный файл с числами необходимо разбить на несколько файлов поменьше, предварительно отсортировав их независимо друг от друга.

Этап 2
Необходимо создать механизм чтения чисел сразу из нескольких файлов (потоков).
Читать данные из потоков следует по принципу pause/resume.

Этап 3
Необходимо создать цикл, который будет работать с данными сразу из всех потоков.
Такой цикл будет прерван только тогда, когда будут полностью прочитаны все файлы.
В цикле следует искать наименьшее значение и записывать его в итоговый файл.
1 итерация = 1 число

Для проверки решения, скрипт необходимо запустить командой
$ node --max-old-space-size=50 script.js
Web-сервер на JavaScript - Стек MEAN - Express - MongoDB
после занятия вы сможете:
создавать простые приложения с использованием библиотеки Express, а также базы данных MongoDB.
25 августа, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Специальные возможности Express
после занятия вы сможете:
работать с аутентификацией и авторизацией.
28 августа, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Построение Rest API
после занятия вы сможете:
добавлять общие стандарты создания API;
объяснить REST, принципы построения API;
проанализировать технологии аутентификации в веб приложениях.
31 августа, 20:00 — 21:30
Лектор: Михаил Кузнецов
Основы GraphQL
после занятия вы сможете:
работать с GraphQL и основными концепциями.
3 сентября, 20:00 — 21:30
Лектор: Михаил Кузнецов
Домашние задания: 1
ДЗ
Домашняя работа для `Занятие "GraphQL Server"`. На выбор одна из следующих задач:

---

Часть 1.
Написать схему GraphQL для примера веб-приложения e-commerce shop:
до 3 балла - какие сущности (минимум 3, можно больше), какие у них поля, какие обязательные какие нет
до 4 баллов - какие запросы/мутации понадобятся (минимум 4, можно больше)

Часть 2.
до 5 баллов - развернуть локально graphQL + nodejs или воспользоваться одним из веб демо (graphqlbin), перенести полностью или частично написанную в Части 1 схему.
Результатом работы будет ссылка на онлайн демо или репозиторий.

---

// ИЛИ

Написать `NodeJS Rest API` приложение для сохранения `RSS` рассылок.
В приложении должно быть следующие точки доступа
- Создание рассылки по `URL`. При успешном добавлении приложение будет запрашивать `RSS` рассылку, парсить `XML` и сохранять документы в базу данных.
- Показ списка всех добавленных `URL` рассылок.
- Показ всех сохраненных из `RSS` документов.

Приложение должно содержать тесты для всех точек доступа.
Возможности GraphQL в реальности
после занятия вы сможете:
объяснить про специальные возможности GraphQL;
построить сложные схемы и запросы.
14 сентября, 20:00 — 21:30
Лектор: Антон Морев
Проблемы GraphQL
после занятия вы сможете:
проанализировать сложности: нагрузка, безопасность, N+1.
17 сентября, 20:00 — 21:30
Лектор: Антон Морев
Angular
Подробно изучим язык TypeScript и преимущества его использования. Разберем паттерн проектирования Observable на базе библиотеки RxJS. Научимся работать с фреймворком Angular - создавать компоненты и формы, управлять Routing, использовать Dependency Injection для сервисов, а также тестировать и собирать приложения с помощью Webpack.
Введение в Angular
после занятия вы сможет:
настроить себе окружение IDE, а также скачать зависимости и библиотеки, коммандные утилиты для TypeScript и создания проектов для работы с Angular;
различать TypeScript и JavaScript;
писать и понимать код на языке TypeScript.
21 сентября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Компоненты и директивы
после занятия вы сможет:
декомпозировать макет страницы на компоненты;
различать директивы и компоненты во фреймворке Angular;
создавать простые директивы и компоненты.
24 сентября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Сервисы
после занятия вы сможет:
создавать сервисы для получения, отправки и хранения данных для приложений Angular.
28 сентября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Домашние задания: 1
ДЗ
Структура приложения для запоминания иностранных слов. Приложение для запоминания иностранных слов.
В этом приложении пользователь сможет добавлять слова для изучения, проходить тесты для запоминания слов.
Это Single Page Application состоит из 3 страниц:
- Последние добавленные слова (Recently Added)
- Упражнениями (Go)
- Настройки (Settings)
На главном экране, на странице Recently Added пользователь видит список последних добавленных слов, может добавить новое слово в словарь.

На странице упражнений пользователь занимается тестированием своих знаний. Ему показывается слово на одном языке, и он должен написать его перевод на другой язык. Если перевод правильный, слово засчитывается, иначе показываем ошибку. Мы начнем с двух языков - русского и английского, будем расширять возможности приложения по мере написания программы.

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

Навигация по страницам происходит с помощью ссылок в верхней части страниц, каждой странице соответствует отдельный url.

---

Декомпозировать приложение для запоминания иностранных слов.
Создать структуру и компоненты контейнеры приложения.

Создать сервисы для работы с текстом
- Сервис перевода слова - должен запрашивать перевод через API (например, https://tech.yandex.com/translate/)
- Сервис хранения словаря - небольшая обертка для управления словарем с помощью `localStorage`
- Сервис добавления слов - должен разбивать текст на отдельные слова, запрашивать их перевод и сохранять в словарь для приложения.

Сервисы должны общаться с помощью библиотеки `RxJS`.
Observables - RxJS
после занятия вы сможет:
отличать основные понятия паттерна;
применять шаблон проектирования Observables, используя библиотеку RxJS.
1 октября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Состояние приложения
после занятия вы сможет:
разбираться в особенностях шаблона проектирования Dependency Injection и его имплементации в Angular.
5 октября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Создание и управление формами в Angular
после занятия вы сможет:
создавать формы, используя техники Dynamic Forms, Reactive Forms;
описывать валидацию и другие функции для элементов форм.
8 октября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Routing
после занятия вы сможет:
создавать Routing систему для приложений, используя внутренние подходы Angular - такие как Router, router-outlet и другие;
применять хэндлеры навигации Guards.
12 октября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
Домашние задания: 1
ДЗ
Routing для приложения запоминания иностранных слов. Реализовать `UI` приложения
- Создать компоненты для добавления текста/слов в словарь
- Разработать компоненты и формы для тренировки запоминания слов
- Добавить экран настройку приложения, сохранять состояние

Добавить routing, ссылки на страницы и переходы между компонентами приложения.
Добавить и актуализировать тесты для компонент приложения, настроить universal рендеринг приложения.

Тестирование в Angular. Сборка приложения для Production
после занятия вы сможет:
писать и запускать тесты для приложений Angular;
настраивать сборку приложений Angular;
использовать возможность сборки Server-side Rendering.
15 октября, 20:00 — 21:30
Лектор: Юрий Дворжецкий
React
Мы подробно изучим стэк технологий React. Рассмотрим особенности синтаксической шаблонизации JSX, особенности передачи данных и хранения состояния с помощью state и props. Разберем свойства компонентного подхода для декомпозиции React приложений, жизненный цикл и типы компонент, например, High-Order Components. Изучим шаблон проектирования Flux и его реализацию на примере библиотеки Redux. Будем настраивать и оптимизировать приложения с Server-Side Rendering.
Основы React и JSX
после занятия вы сможете:
настроить себе окружение для работы с React и использовать его;
применять синтаксис JSX;
создавать простые приложения на React.
19 октября, 20:00 — 21:30
Лектор: Никита Овчинников
Компоненты React - Lifecycle React-компонент - state и props
после занятия вы сможете:
разрабатывать полноценные React-компоненты в различных стилях;
корректно использовать state и props.
29 октября, 20:00 — 21:30
Лектор: Никита Овчинников
Домашние задания: 1
ДЗ
Создать структуру приложения погоды. Создать структуру приложения, создать компоненты контейнеры.

---

Документация по webpack
https://webpack.js.org/guides/getting-started/

Документация по babel
https://babeljs.io/docs/en/

Typescript preset https://babeljs.io/docs/en/babel-preset-typescript

Можете взять за основу простое todo приложение

https://codesandbox.io/s/github/reduxjs/redux/tree/master/examples/todos
Паттерны проектирования React (Higher-Order Components)
2 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Обзор современных возможностей React
после занятия вы сможете:
разбираться в техниках и использовать различные hooks.
5 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Состояние приложения - Flux и Redux
после занятия вы сможете:
отличать основные понятия однонаправленной архитектуры Flux;
ориентироваться и использовать возможности redux - создавать actions, reducers, а также применять redux в связке в React.
9 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Особенности использования Redux
после занятия вы сможете:
использовать Redux в React приложениях.
12 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Routing в React - Оптимизация приложения
после занятия вы сможете:
создавать систему routing для React приложений, использовать библиотеку react-router;
использовать специальные возможности библиотеки для оптимизации отрисовки.
16 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Домашние задания: 1
ДЗ
Routing для приложения погоды. Реализовать компонент фильтра и поиска городов.
Данные по городам сохранять в браузерном хранилище.
Добавить страницу погоды по конкретному городу.
При переходе на нее должен меняться url, показываться информация на несколько дней вперед.
Подготовка React Приложения к Production, Best Practices
после занятия вы сможет:
эффективно разрабатывать приложения на React, учитывая последние тенденции в разработке front-end;
использовать Advanced React;
применять на практике Best-Practices разработки на React.
19 ноября, 20:00 — 21:30
Лектор: Никита Овчинников
Vue
В этом модуле мы сосредоточимся на Vue - современном и популярном FrontEnd фреймворке. Мы рассмотрим особенности шаблонизации и создания динамических приложений на Vue. Разберем возможности и жизненный цикл компонент, хранения состояния. Изучим инструменты Vuex и Vue CLI. Будем настраивать и оптимизировать сборку приложений с Server-Side Rendering.
Основы Vue
после занятия вы сможете:
настроить себе окружение IDE, зависимости и библиотеки для создания проектов и работы с Vue;
создавать простейшие приложения используя Vue.
23 ноября, 20:00 — 21:30
Лектор: Михаил Кузнецов
Компоненты, шаблонизатор и формы
после занятия вы сможете:
объяснить синтаксис шаблонизаторы;
создавать компоненты, описывать атрибуты элементов.
26 ноября, 20:00 — 21:30
Routing и модели данных
после занятия вы сможете:
описывать routing для Vue приложений;
создавать формы, связывая шаблоны с моделями.
30 ноября, 20:00 — 21:30
Лектор: Михаил Кузнецов
Домашние задания: 1
ДЗ
Структура & Routing для приложения "Устный счет". Подготовить общую структуру приложения - компоненты контейнеры для страниц приложения.
Сделать первую страницу приложения - форму настроек.
Реализовать второй экран - игру "калькулятор".
Настроить переходы по страницам приложения.
Advanced Vue - Vuex
после занятия вы сможете:
применять анимацию в компонентах;
создавать плагины;
разбираться в тонкостях Change Detection.
3 декабря, 20:00 — 21:30
Лектор: Михаил Кузнецов
Специфика построений приложений c Vue, Best Practices
после занятия вы сможете:
работать с анимацией во Vue.
7 декабря, 20:00 — 21:30
Лектор: Михаил Кузнецов
Домашние задания: 1
ДЗ
Добавление фич в open source проект. На каждый поток мы выбираем репозиторий с каким то проектом или плагином и развиваем его силами студентов курса.
Проектная работа
Заключительный месяц курса посвящен проектной работе. Это то, чем интересно заниматься студенту на базе знаний, полученных на курсе.
При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.
Вводное занятие по проектной работе. Обзор пройденных фреймворков и технологий
выбрать и обсудить тему проектной работы;
спланировать работу над проектом;
ознакомиться с регламентом работы над проектом;
выделять характеристики проектов и окружения;
решать задачи выбора и сравнения фреймворков, понимать их преимущества и недостатки.
10 декабря, 20:00 — 21:30
Лектор: Александр Коржиков
Домашние задания: 1
ДЗ
Проектная работа. Заключительный месяц курса посвящен проектной работе. Это то, чем интересно заниматься студенту на базе знаний, полученных на курсе.
При этом не обязательно закончить его за месяц. В процессе написания по проекту можно получить консультации преподавателей.

Проект должен стать примером кода, который можно показывать потенциальным работодателям.
Консультация по проектам и домашним заданиям
получить ответы на вопросы по проекту, ДЗ и по курсу.
17 декабря, 20:00 — 21:30
Лектор: Александр Коржиков
Защита проектных работ
защитить проект и получить рекомендации экспертов.
24 декабря, 20:00 — 21:30
Лектор: Александр Коржиков

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

Александр Коржиков
Dev IT Engineer ING Group (Нидерланды)
Опытный программист, Senior Web Developer, тимлид, ментор и автор технических статей по JavaScript. Специалист по Frontend, программирует на JavaScript, начиная с 2010 года.

Работал в компаниях Tinkoff Bank (Москва), «Альпари», Comindware, Backbase (Амстердам) и других. С 2017 года — Dev IT Engineer в международной финансовой корпорации ING Group (Нидерланды). Занимается проектированием и поддержкой процессов web-разработки.

Среди реализованных проектов — JSON Schema Validator Library — самая быстрая JavaScript-библиотека для проверки объектов на соответствие определениям JSON.

Образование: степень магистра в Московском государственном университете им. М. В. Ломоносова (факультет вычислительной математики и кибернетики, кафедра автоматизации научных исследований).
Преподаватель курсов:
Fullstack разработчик JavaScript