vedyakov / semanticNT

Сетевой проект разработки системы открытого онлайн-обучения НИУ ИТМО

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

semanticNT

Цель образовательного проекта "Открытое онлайн-обучение" — предоставление доступа к электронным курсам НИУ ИТМО, которые могут содержать видеолекции, электронные презентации к ним, текстовые материалы, вопросы для самоконтроля, экзаменационные задания.

Познавайте новое в компактной форме в любой точке мира в удобное для себя время!

Описание

В проекте используется система, в основе которой лежит концепция веб-приложения. В отличие от веб-сайта, где сервером генерируется контент и отсылается клиенту в виде HTML-страниц, система представляет собой почти автономное приложение, работающее в браузере. Приложение динамически отслеживает свое состояние, обрабатывает действия пользователя и отображает данные, которые получает с сервера по запросу в формате JSON. В таком приложении страницы динамически изменяются на клиенте, а не генерируется полностью или частично на сервере. Стоит отметить, что все данные делятся на две части — статические и динамические. Предполагается, что данные не меняющиеся со временем (например, содержимое курса) хранятся в файлах на веб-сервере, а динамически изменяемые данные (например, данные пользователей) хранятся в базе данных, доступ к которым можно получить прямо из веб-приложения через API. Веб-приложение получает данные с сервера посредством службы REST, представляющая собой некоторый API, используя который приложение может получать и передавать динамически изменяющиеся данные для последующей их обработки и сохранения в базе данных. Такой API в дальнейшем можно использовать при разработке других приложений, например приложения для мобильных устройств.

При разработке системы используется только свободное программное обеспечение. Серверная архитектура спроектирована с учетом возможности масштабирования системы, что позволяет почти линейно наращивать вычислительную мощность путем увеличения количества серверных компонентов. В качестве серверной платформы используется node.js, а в качестве front-end — веб-сервер nginx.

Для хранения данных используется нереляционная (noSQL) документо-ориентированная СУБД MongoDB, основным достоинством которой является возможность работы с большими объемами данных, масштабируемость и распределенность.

Разработка клиентской части (веб-приложение) ведется на основе фреймворка AngularJS и библиотеки jQuery, в качестве шаблона оформления (стили и примитивы) используется Twitter Bootstrap. В качестве видеоплеера используется popcorn.js.

Электронный курс состоит из отдельных блоков, каждый из которых представляет собой шаблон JavaScript + HTML + CSS. На данный момент в системе предусмотрены следующие типовые блоки:

  • программа;
  • дорожная карта;
  • форумы и объявления;
  • видеолекции, презентации, опросы;
  • онтология предметной области;
  • проектная деятельность;
  • упражнения;
  • практикум;
  • песочница;
  • экзамен;
  • рейтинг.

Разработчики системы могут создавать новые типы блоков, если предложенного функционала недостаточно. Каждый блок содержит клиентскую и серверную части, разработка которых должна вестись на JavaScript — один язык как для клиента, так и для сервера, что позволяет использовать одни и те же фрагменты кода на обеих сторонах. Помимо использования единого языка для программирования как клиентской, так и серверной части, следует упомянуть о наличии бесплатной облачной среды разработки Cloud9, что является еще одним плюсом для разработчиков системы.

Лицензия

(с) НИУ ИТМО, 2013

Проект опубликован под лицензией GPL версии 3 и выше.

Адрес в Интернете: http://courses.academicmt.ru/

About

Сетевой проект разработки системы открытого онлайн-обучения НИУ ИТМО

License:GNU General Public License v3.0