Бесплатный онлайн-курс Clojure MOOC

Курс, который представляет собой введение в функциональное программирование с использованием языка с динамической типизацией Clojure, использует совершенно иной подход к большинству МООК.

Clojure MOOC

Благодаря Coursera, edX, Udacity и другим мы привыкли к мысли, что когда вы подписываетесь на MOOC, вы будете смотреть видео и отвечать на вопросы викторины с несколькими вариантами ответов, которые будут отмечены автогрейдером как основная часть MOOC.

Это не тот подход, который используется в курсе «Функциональное программирование с Clojure», основанном на факультативном курсе бакалавриата факультета компьютерных наук Хельсинкского университета.

Курс ведется на английском языке и требует от студентов базовых навыков программирования, но при этом не требуется опыта функционального программирования. Для участия вы должны зарегистрировать учетную запись GitHub и завершить курс, создав репозитории GitHub, содержащие материалы курса и программные решения для упражнений, встроенных в них.

Курс, рассчитанный на индивидуальный темп и в общей сложности составляющий около 120 часов, начинается с введения в Clojure; его синтаксис и среда разработки. Далее рассматриваются структуры данных Clojure, а также рассматриваются основы рекурсии и функций высшего порядка.

Курс работает с набором инструментов и сервисов, как показано на этой диаграмме, иллюстрирующей, что происходит, когда студент отправляет свое решение в одно из упражнений по программированию:

На Github размещены как письменные материалы курса, так и репозитории проектов для каждой главы. Чтобы начать работу над упражнениями, вам также понадобится установленный менеджер проекта для Clojure Leiningen. Когда студент клонирует репозиторий главы в Github, он получает проект Leiningen с набором тестов и исходным файлом, полным заглушек функций. Когда заглушки заполнены и набор тестов пройден, пора сделать запрос на вытягивание, и именно здесь на сцену выходит Travis, инструмент непрерывной интеграции как услуга.

Отправка упражнений осуществляется в виде запросов на вытягивание между репозиторием chapters и вилкой отправителей. Трэвис отвечает за запуск набора тестов проекта для каждого такого запроса на вытягивание. Он выводит оценки в формате JSON на основе метаданных тестов, а затем вызывает веб-перехватчик на нашем сервере табло, который развертывается в Heroku.

Табло показывает, что можно получить высший балл и что многие студенты активно этим занимаются.

Итак, что вы узнаете?

Цитата из описания курса:

Функциональное программирование – это парадигма программирования, в которой чистые функции являются основными строительными блоками программ. Чистая функция похожа на функцию в математическом смысле. Выходы функции полностью определяются ее входами. Идея в том, что это ограничение упрощает понимание ваших программ. Этот курс показывает, как можно кодировать значимые программы, используя в основном чистые функции. Чистое функциональное программирование отличается от объектно-ориентированного программирования тем, что, например, в нем не используются переменные или циклы.

Clojure – молодой язык функционального программирования Lispish на платформе виртуальной машины Java (JVM), подходящий для малых и больших программ. Поскольку он работает на JVM, все программы Clojure могут свободно использовать все стандартные и сторонние библиотеки Java. Он предлагает инструменты для многих задач, которые сложнее решить с другими языками, и уделяет особое внимание параллельному программированию.

Дискуссионные форумы, на которых вы обмениваетесь информацией, являются центральным компонентом большинства МООК, и на этом опять же дело обстоит иначе. У него есть собственный канал IRC, где вы можете обсудить темы курса и получить поддержку при выполнении упражнений, отметив:

Большая часть разговоров на канале ведется на финском, но не бойтесь задавать вопросы на английском.

Если вы хотите познакомиться с функциональным программированием и Clojure, это хороший способ сделать это.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *