Курс «Концепции языков программирования» (2014)

29 января пересдачи не будет, доп. сессия 9 февраля

Экзамен на дополнительной сессии, который должен был состояться 29 января, переносится на 9 февраля 14:00.

Экзамен на дополнительной сессии 29 января

Экзамен на дополнительной сессии состоится 2015-01-29 в 14:00.

Вопросы к экзамену

Экзамен состоится 16 января в 10:00 в ауд. 9-112. Консультация пройдёт 15 января в 16:00 в ауд. 9-112.

Экзаменационный билет состоит из одного теоретического вопроса и одной задачи по языку Python.

Список вопросов:

  1. Интерпретация и компиляция
  2. Динамическая типизация
  3. Статическая типизация
  4. Функциональная чистота и побочные эффекты
  5. Функции как полноправные объекты
  6. Функции высшего порядка
  7. Объектная система Python
  8. Принципы ООП
  9. Многозадачность и параллелизм
  10. ООП и многозадачность
  11. Принципы ФП
  12. CPU- и IO-ограниченные вычисления
  13. Библиотека asyncio
  14. Язык функциональных комбинаторов парсинга
  15. Предметно-ориентированные языки
  16. Списки и генераторы в Python
  17. Двусторонние генераторы в Python
  18. Сопроцедуры в Python
  19. Язык Erlang: ФП и процессы
  20. Язык Scheme: программы как данные

Лекции 19 декабря не будет, зачёт 26 декабря

Напоминаю, что 12 декабря состоялась последняя лекция. Лекции 19 декабря не будет. Зачёт пройдёт на зачётной неделе в стандартное время лекций, 26 декабря в 12:00 в 9-305. Дата проведения экзамена уточняется. Организационные вопросы по экзамену можно будет задать на зачёте.

Задание 7

Написать простой сервис интернет-радио, вещающего в реальном времени. Пользователи заходят на веб-сайт радиостанции и слушают передаваемые композиции в прямом эфире при помощи тэга <audio> стандарта HTML 5. Вещание происходит в потоковом режиме, так что все пользователи, подключившиеся с радиостанции, слушают примерно одни и те же секунды одинаковых композиций. Расхождение в звучании между клиентами не должно превышать единиц секунд. Радиостанция передаёт композиции только в формате MP3 в фиксированном битрейте.

В простейшем варианте клиентская часть может быть написана только на HTML без JavaScript.

Серверную часть требуется написать на Python при помощи библиотек asyncio и aiohttp. Имена файлов воспроизводимых композиций можно задать для простоты через аргументы командной строки. Битрейт файлов MP3 можно определить при помощи какой-либо библиотеки работы с MP3.

Требуется протестировать радиостанцию с несколькими одновременно подключёнными клиентами.

Дополнительным плюсом будет реализация отказа новым клиентам при помощи кода HTTP 502, если пропуская полоса исчерпывается, а также отключение имеющихся клиентов, если пропускная полоса по каким-либо становится недостаточной для продолжения вещания в реальном времени.

« НазадВперёд »
Страница 1 из 3