Курс «Концепции языков программирования» (2014)
29 января пересдачи не будет, доп. сессия 9 февраля
Экзамен на дополнительной сессии, который должен был состояться 29 января, переносится на 9 февраля 14:00.
Экзамен на дополнительной сессии 29 января
Экзамен на дополнительной сессии состоится 2015-01-29 в 14:00.
Вопросы к экзамену
Экзамен состоится 16 января в 10:00 в ауд. 9-112. Консультация пройдёт 15 января в 16:00 в ауд. 9-112.
Экзаменационный билет состоит из одного теоретического вопроса и одной задачи по языку Python.
Список вопросов:
- Интерпретация и компиляция
- Динамическая типизация
- Статическая типизация
- Функциональная чистота и побочные эффекты
- Функции как полноправные объекты
- Функции высшего порядка
- Объектная система Python
- Принципы ООП
- Многозадачность и параллелизм
- ООП и многозадачность
- Принципы ФП
- CPU- и IO-ограниченные вычисления
- Библиотека asyncio
- Язык функциональных комбинаторов парсинга
- Предметно-ориентированные языки
- Списки и генераторы в Python
- Двусторонние генераторы в Python
- Сопроцедуры в Python
- Язык Erlang: ФП и процессы
- Язык Scheme: программы как данные
Лекции 19 декабря не будет, зачёт 26 декабря
Напоминаю, что 12 декабря состоялась последняя лекция. Лекции 19 декабря не будет. Зачёт пройдёт на зачётной неделе в стандартное время лекций, 26 декабря в 12:00 в 9-305. Дата проведения экзамена уточняется. Организационные вопросы по экзамену можно будет задать на зачёте.
Задание 7
Написать простой сервис интернет-радио, вещающего в реальном времени. Пользователи заходят на веб-сайт радиостанции и слушают передаваемые композиции в прямом эфире при помощи тэга <audio>
стандарта HTML 5. Вещание происходит в потоковом режиме, так что все пользователи, подключившиеся с радиостанции, слушают примерно одни и те же секунды одинаковых композиций. Расхождение в звучании между клиентами не должно превышать единиц секунд. Радиостанция передаёт композиции только в формате MP3 в фиксированном битрейте.
В простейшем варианте клиентская часть может быть написана только на HTML без JavaScript.
Серверную часть требуется написать на Python при помощи библиотек asyncio и aiohttp. Имена файлов воспроизводимых композиций можно задать для простоты через аргументы командной строки. Битрейт файлов MP3 можно определить при помощи какой-либо библиотеки работы с MP3.
Требуется протестировать радиостанцию с несколькими одновременно подключёнными клиентами.
Дополнительным плюсом будет реализация отказа новым клиентам при помощи кода HTTP 502, если пропуская полоса исчерпывается, а также отключение имеющихся клиентов, если пропускная полоса по каким-либо становится недостаточной для продолжения вещания в реальном времени.