Course Program


ФМИ на СУ “Св. Климент Охридски”

Изборен курс

Преподавател: Траян Илиев

 

Учебна заетост Форма Хорариум
Аудиторна заетост Лекции 30
Семинарни упражнения
Практически упражнения (хоспетиране) 30
Обща аудиторна заетост 60
Извънаудиторна заетост Курсов учебен проект 50
Доклад/Презентация 10
Подготовка на домашни работи 10
Подготовка за финален тестови изпит 10
Самостоятелна работа с ресурси 10
Обща извънаудиторна заетост 90
ОБЩА ЗАЕТОСТ 150
Кредити аудиторна заетост 2
Кредити извънаудиторна заетост 3
ОБЩО ЕКСТ 5

 

 

 

Формиране на оценката по дисциплината % от оценката
Финален курсов проект
50%
2.
Финален тестови изпит
40%
3.
Домашни работи през семестъра (текущ контрол)
10%
Анотация на учебната дисциплина:
Бързите темпове на развитие в областта на информационните и комуникационни технологии, поставят нови предизвикателства пред човешката способност за адаптация. За да се справим с нарастващия информационен поток и по-сложните задачи, които трябва да решаваме, ние се нуждаем от интелигентни помощници. Интелигентните агенти се отличават от по-традиционните хардуерни и софтуерни приложения със своята автономност, способност за самообучение, адаптивност, проактивност (способност самостоятелно да инициират действия) и мобилност. Те могат да комуникират помежду си и да се кооперират за съвместно изпълнение на по-сложни задачи. Състезанието RoboCup (http://www.robocup.org/) демонстрира множество примери за многоагентни системи и кооперативна роботика екипи от роботи спасяват хора при бедствия и аварии, играят футбол, кооперират се с хора за изпълнение на задачи у дома, в промишлеността и логистиката.

Друга актуална тенденция, способна да промени света, в който живеем дори повече от появата на Интернет (според Кевин Аштън, RFID Journal, 2009 ) е Интернет на нещата (Internet of Things – IoT или според Cisco: Internet of Everything – IoE). Все по-голямо количество информация се генерира автоматично от множество мрежово-свързани сензори и устройства информация за трафика по пътищата, за времето и влажността на почвата в селското стопанство, за местоположението на транспортните средства, за енергопотреблението и управлението на домакинските уреди и много други. Обемът на генерираната в реално време информация нараства бързо. Нуждаем се от скалируеми технологии (Big Data), които да позволят тези горещи потоци от данни (hot event streams) да бъдат обработвани в облака (cloud computing). Функционалното реактивно програмиране (Spring Reactor, MS Reactive Extensions RX) предлага значителни предимства при разработката на високо-производителни, конкурентни, неблокиращи, събитийно и поточно ориентирани приложения, за обработка на потоци от данни в реално време.

Курсът запознава студентите със съвременните технологии за създаване на разпределени многоагентни приложения, конкурентно и неблокиращо реактивно програмиране и потребителски интерфейси за роботи и вградени устройства с Java® (Reactor, RxJava, Typesafe Akka, Java FX) и JavaScript (RxJS, Facebook React, Angular 2), а също така и с конкретни платформи за прототипиране на малки роботи и екипи от роботи – Raspberry Pi 2 (quad-core ARMv7 @ 900MHz, 1GB), Lego® Mindstorms EV3 и Arduino (Uno, Leonardo, Micro и др.). Акцент на курса ще бъде практическото прилагане на получените знания чрез изграждане и програмиране на собствени интелигентни агенти с хардуерна архитектура (роботи) и мрежово-свързани устройства (IoT) за изпълнение на самостоятелни и кооперативни задачи.

 

Курсът включва:

  • практическо програмиране на Lego® роботи с използване на Java® библиотеката LeJOS http://www.lejos.org/;
  • управление сензори и актуатори на роботи и вградени устройства през GPIO интерфейс (Serial, I2C, SPI протоколи) върху Raspberry Pi 2 платформа с използване на Java библиотеката Pi4Jhttp://pi4j.com/
  • програмиране на Arduino хардуер, сензори, актуатори и комуникационни протоколи с използване на Arduino IDE / Eclipse (C++) – https://www.arduino.cc/;
  • Интернет на нещата (IoT) – практически проекти с ESP 8266 WiFi SOC (System-On-Chip) модули с интегриран TCP/IP стек от протоколи – http://www.esp8266.com/wiki;
  • IoT архитектури и протоколи за комуникация (MQTT, CoAP, AMQP) и конфигуриране на устройства (OMA-DM, LWM2M);
  • Domain Deiven Design (DDD) и реактивно програмиране за IoT и роботи с библиотеките Spring Reactor, RxJava, RxJS;
  • проектиране и реализация на графични интерфейси за вградени устройства и роботи с Java Swing/FX на ARMv7, Linux платформа;
  • Akka toolkit за разработка на масивно конкурентни, разпределени и устойчиви към грешки събитийно-ориентирани актьор (аctor) системиhttp://akka.io/;
  • взаимодействие и кооперация между хора и интелигентни агенти с хардуерна архитектура (роботи);
  • навигация и картографиране в динамични среди;
  • компютърно зрение и разпознаване на обекти;
  • планиране на действия и манипулиране на обекти;
  • самообучение и адаптивно поведение при интелигентни агенти;
  • FIPA стандарти на за изграждане на многоагентни системи – http://www.fipa.org/;
  • Belief–Desire–Intention (BDI) модел на човешките практически разсъждения и езици за комуникация между интелигентни агенти (Agent Communication Languages – ACLs);
  • представяне на знания с помощта на онтологии и W3C стандарти за изграждане на Семантична Мрежа (Semantic Web): Resource Description Framework (RDF) и Web Ontology Language (OWL);
  • Курсът завършва с преглед на перспективите в бързо-развиващата се област на социалната роботика, събитийно-ориентирана архитектура (Event-Driven Architecture – EDA) и Интернет на нещата (Internet of Things – IoT).
Предварителни изисквания:
Очаква се студентите да могат да боравят свободно с технически английски език. Необходимо е добро познаване на езика Java. Препоръчителна е също базова техническа грамотност за работа с цифрова схемотехника.
Очаквани резултати:
След завършване на курса студентите ще придобият знания и умения за:

  • многоагентните системи с разпределен изкуствен интелект, кооперативната, социалната и домашната роботика и автоматизация;
  • обектно-ориентирано, актьор-ориентирано и агентно-ориентирно софтуерно инженерство, реактивно програмиране (reactive programming) и actor model Reactor, RxJava, Typesafe Akka;
  • платформи Raspberry Pi 2, Lego® Mindstorms EV3 и Arduino за изграждане на малки роботи;
  • Java® програмиране на Raspberry Pi 2 роботи и мрежово-свързани, вградени устройства с използване на Pi4J;
  • управление сензори и актуатори през GPIO интерфейс – протоколи: Serial, I2C, SPI;
  • Java® програмиране на Lego® роботи с използване на библиотеката LeJOS;
  • програмиране на Arduino хардуер, сензори, актуатори и комуникационни протоколи с използване на Arduino IDE / Eclipse (C++);
  • проектиране и реализация на графични интерфейси за вградени устройства и роботи с Java Swing/FX на ARMv7, Linux платформа;
  • Интернет на нещата (IoT) – практически проекти с ESP 8266 WiFi SOC (System-On-Chip) модули с интегриран TCP/IP стек от протоколи;
  • IoT архитектури и протоколи за комуникация (MQTT, CoAP, AMQP) и конфигуриране на устройства (OMA-DM, LWM2M);
  • Domain Deiven Design (DDD) и реактивно програмиране за IoT и роботи с библиотеките Spring Reactor, RxJava, RxJS;
  • разработка на уеб интерфейси за управление на IoT устройства с JavaScript библиотеките RxJS, Facebook React / Angular 2;
  • Akka toolkit за разработка на масивно конкурентни, разпределени и устойчиви към грешки събитийно-ориентирани актьор (аctor) системи;
  • взаимодействие и кооперация между хора и интелигентни агенти с хардуерна архитектура (роботи);
  • навигация и картографиране в динамични среди;
  • компютърно зрение и разпознаване на обекти;
  • разпознаване и генериране на компютърна реч;
  • планиране на действия и манипулиране на обекти;
  • самообучение и адаптивно поведение при интелигентни агенти;
  • FIPA стандарти на за изграждане на многоагентни системи;
  • Belief–Desire–Intention (BDI) модел на човешките практически разсъждения и езици за комуникация между интелигентни агенти (Agent Communication Languages – ACLs);
  • представяне на знания с помощта на онтологии и W3C стандарти за изграждане на Семантична Мрежа (Semantic Web): Resource Description Framework (RDF) и Web Ontology Language (OWL);
  • правни и етични аспекти на роботиката и многоагентните технологии;

Студентите ще изградят и умения за целенасочено търсене, анализиране и представяне на информация, както и умения за работа в екип по избрана от тях тема.

Учебно съдържание

 

Тема: Хорариум
1. Представяне на курса, въведение в областта на многоагентните системи с разпределен изкуствен интелект, кооперативната, социалната и домашната роботика и автоматизация. Обектно-ориентирано, актьор-ориентирано и агентно-ориентирно софтуерно инженерство. Реактивно програмиране (reactive programming) и actor model Reactor, RxJava, Typesafe Akka. Отличителни характеристики на интелигентните агенти. Видове интелигентни агенти. Интелигентни агенти с хардуерна архитектура – роботика. Колаборативна и социална роботика. Платформи за изграждане на малки роботи и IoT устройства– запознаване с Raspberry Pi 2, Lego® Mindstorms EV3 и Arduino. Правни и етични аспекти на роботиката и многоагентните технологии. Перспективи. 4
2. Рационални агенти – AIMA агенти. Структура на рационални агенти. Агенти базирани на таблица. Агенти с прости рефлекси. Агенти с вътрешно състояние. Агенти базирани на цели. Агенти базирани на полезност. Агентни среди – видове и свойства. Програми за реализация на агентна среда. Примери. 4
3. Изграждане на роботи с Lego® Mindstorms. Програмиране на Lego® роботи. Java® програмиране на Lego® роботи с използване на LeJOS – Wifi конфигуриране, разработка с LeJOS, билд файлове, използване на сензори, мотори, инструменти, ssh достъп по EV3 блока, примерни програми и практически упражнения. 4
4. Програмиране на Raspberry Pi 2 роботи и IoT устройства с използване на Java библиотеката Pi4J. Управление на сензори и актуатори през GPIO интерфейс – основни протоколи за комуникация: Serial, I2C, SPI. 4
5. Хардуерна и софтуерна платформа с отворен код Arduino хардуер, сензори и ефектори, комуникационни протоколи, езици за програмиране, среди за разработка Arduino IDE / Eclipse (C++). 4
6. Интернет на нещата (IoT) – практически проекти с ESP 8266 WiFi SOC (System-On-Chip) модули с интегриран TCP/IP стек от протоколи. IoT архитектури и протоколи за комуникация (MQTT, CoAP, AMQP) и конфигуриране на устройства (OMA-DM, LWM2M). 4
7. Domain Deiven Design (DDD) и реактивно програмиране за IoT и роботи с библиотеките Spring Reactor, RxJava, RxJS. 4
8. Взаимодействие между хора и вградени устройства. Проектиране и реализация на графични интерфейси за вградени устройства и роботи с Java Swing/FX на ARMv7, Linux платформа. 4
9. Разработка на уеб интерфейси за управление на IoT устройства с JavaScript библиотеките Angular 2 и RxJS. 4
10. Akka toolkit за разработка на масивно конкурентни, разпределени и устойчиви към грешки събитийно-ориентирани актьор (аctor) системи – референции, състояние, поведение, наследници, супервайзинг стратегия, прекъсване. Наблюдение и контрол – стратегии One-For-One Strategy и All-For-One. Делегиране на задачи на наследници. Референции, пътища и адреси на актьори. Селекция по път. Обработка на изключения и грешки. Жизнен цикъл на актьор – DeathWatch. Изпращане и получаване на съобщения – tell, ask, reply. Спиране на актьори. Динамично добавяне/замяна на поведения на актьори – become and unbecome (шаблон State). Актьори със stash. Типизирани актьори. Проектиране за надеждност. Диспечери на съобщения. Mailboxes – типове конфигурация и приоритети. Маршрутизация на съобщения и стратегии за маршрутизация. Реализация на машини на състояние (крайни автомати) с помощта на актьори. 4
11. Компютърно зрение и разпознаване на обекти. Навигация и картографиране в динамични среди 4
12. Планиране на действия и манипулиране на обекти. 4
13. Самообучение и адаптивно поведение при интелигентни агенти. 4
14. FIPA стандарти на за изграждане на многоагентни системи. Belief–Desire–Intention (BDI) модел на човешките практически разсъждения и езици за комуникация между интелигентни агенти (Agent Communication Languages – ACLs). 4
15. Представяне на знания с помощта на онтологии и W3C стандарти за изграждане на Семантична Мрежа (Semantic Web): Resource Description Framework (RDF) и Web Ontology Language (OWL). 4

Конспект за изпит

 

Въпрос
1. Представяне на курса, въведение в областта на многоагентните системи с разпределен изкуствен интелект, кооперативната, социалната и домашната роботика и автоматизация. Обектно-ориентирано, актьор-ориентирано и агентно-ориентирно софтуерно инженерство. Реактивно програмиране (reactive programming) и actor model Reactor, RxJava, Typesafe Akka. Отличителни характеристики на интелигентните агенти. Видове интелигентни агенти. Интелигентни агенти с хардуерна архитектура – роботика. Колаборативна и социална роботика. Платформи за изграждане на малки роботи и IoT устройства– запознаване с Raspberry Pi 2, Lego® Mindstorms EV3 и Arduino. Правни и етични аспекти на роботиката и многоагентните технологии. Перспективи.
2. Рационални агенти – AIMA агенти. Структура на рационални агенти. Агенти базирани на таблица. Агенти с прости рефлекси. Агенти с вътрешно състояние. Агенти базирани на цели. Агенти базирани на полезност. Агентни среди – видове и свойства. Програми за реализация на агентна среда. Примери.
3. Изграждане на роботи с Lego® Mindstorms. Програмиране на Lego® роботи. Java® програмиране на Lego® роботи с използване на LeJOS – Wifi конфигуриране, разработка с LeJOS, билд файлове, използване на сензори, мотори, инструменти, ssh достъп по EV3 блока, примерни програми и практически упражнения.
4. Програмиране на Raspberry Pi 2 роботи и IoT устройства с използване на Java библиотеката Pi4J. Управление на сензори и актуатори през GPIO интерфейс – основни протоколи за комуникация: Serial, I2C, SPI.
5. Хардуерна и софтуерна платформа с отворен код Arduino хардуер, сензори и ефектори, комуникационни протоколи, езици за програмиране, среди за разработка Arduino IDE / Eclipse (C++).
6. Интернет на нещата (IoT) – практически проекти с ESP 8266 WiFi SOC (System-On-Chip) модули с интегриран TCP/IP стек от протоколи. IoT архитектури и протоколи за комуникация (MQTT, CoAP, AMQP) и конфигуриране на устройства (OMA-DM, LWM2M).
7. Domain Deiven Design (DDD) и реактивно програмиране за IoT и роботи с библиотеките Spring Reactor, RxJava, RxJS.
8. Взаимодействие между хора и вградени устройства. Проектиране и реализация на графични интерфейси за вградени устройства и роботи с Java Swing/FX на ARMv7, Linux платформа.
9. Разработка на уеб интерфейси за управление на IoT устройства с JavaScript библиотеките Angular 2 и RxJS.
10. Akka toolkit за разработка на масивно конкурентни, разпределени и устойчиви към грешки събитийно-ориентирани актьор (аctor) системи – референции, състояние, поведение, наследници, супервайзинг стратегия, прекъсване. Наблюдение и контрол – стратегии One-For-One Strategy и All-For-One. Делегиране на задачи на наследници. Референции, пътища и адреси на актьори. Селекция по път. Обработка на изключения и грешки. Жизнен цикъл на актьор – DeathWatch. Изпращане и получаване на съобщения – tell, ask, reply. Спиране на актьори. Динамично добавяне/замяна на поведения на актьори – become and unbecome (шаблон State). Актьори със stash. Типизирани актьори. Проектиране за надеждност. Диспечери на съобщения. Mailboxes – типове конфигурация и приоритети. Маршрутизация на съобщения и стратегии за маршрутизация. Реализация на машини на състояние (крайни автомати) с помощта на актьори.
11. Компютърно зрение и разпознаване на обекти. Навигация и картографиране в динамични среди
12. Планиране на действия и манипулиране на обекти.
13. Самообучение и адаптивно поведение при интелигентни агенти.
14. FIPA стандарти на за изграждане на многоагентни системи. Belief–Desire–Intention (BDI) модел на човешките практически разсъждения и езици за комуникация между интелигентни агенти (Agent Communication Languages – ACLs).
15. Представяне на знания с помощта на онтологии и W3C стандарти за изграждане на Семантична Мрежа (Semantic Web): Resource Description Framework (RDF) и Web Ontology Language (OWL).