вторник, 9 сентября 2014 г.

Coursera - давайте учиться вместе!

У меня есть предложение - а давай учиться вместе?

Кто-то уже учился на Coursera, кто-то только слышал, что она есть. Кто-то сегодня прочтёт о ней впервые. К какой бы группе ТЫ не относился(лась) моё предложение в силе: давай учиться вместе!

Собственно, предложение для тех, кто уже в теме (более развернутое для тех, кто не в теме, будет ниже).

Со 2 октября по 11 декабря 2014 года на Coursera начинается довольно-таки неплохой для тестировщиков курс "Языки программирования". Я предлагаю пройти его вместе.
Как это будет проходить? Шаг первый - записаться на курс :) Потом присоединиться к группе в скайпе, где можно будет обсуждать домашние задания, делиться успехами и просить помощи в случае неудачи. Тем, кто не владеет английским в достаточной степени, я обещаю помочь.

Краткий обзор курса:
10 недель обучения
8-16 часов работы в неделю
Лекции на английском + субтитры
С возможностью получения свидетельства об окончании
Преподаватель - Ден Гроссман,
Университет Вашингтона
Категория: компьютерные науки - разработка программного обеспечения.



Развернутое описание для тех, кто "не в теме" :)

Что такое Coursera?

Coursera - это образовательная платформа, которая предлагает бесплатные онлайн-курсы от различных ведущих (и не очень) университетов мира. Преподавание ведется в основном на английском языке (в лекциях есть субтитры). Сейчас идет движение по переводу лекций на различные языки мира, но пока я видела эти переводы только в группах у самих переводчиков, но не на сайте.
Участником курсов может стать любой человек. При условии успешного окончания курсов выдается сертификат об этом.

О чем будет курс "Языки программирования" (для тех, кому нужна помощь в переводе)?

В курсе будут исследованы основные концепции языков программирования, с акцентом на методы и преимущества функционального программирования. Программные языки ML, Racket и Ruby будут использованы так, чтобы показать вам как кусочки разных языков, складываясь воедино, могут создать больше, чем просто сумма их частей. На курсе будут даны такие программные навыки и понятия, которые необходимы для изучения новых языков (любых, какие вам только захочется).

О курсе

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

Учебный план курса
 
Примечание: примерно половина студентов предыдущих курсов отмечала время, затрачиваемое на изучение, в районе 8-12 часов в неделю, в то время как другая половина указывала большие затраты времени - около 15 часов в неделю или даже больше. Затрачиваемое время действительно отличается для разных людей. Зависит это от имеющейся подготовки. Пожалуйста, посмотрите уровень рекомендуемой подготовки ниже.

Темы (большинство из которых, возможно, не скажет вам ничего до самого начала курса):
Синтаксис & семантика & идиомы & библиотеки & инструменты
Основы ML (связи, условия, записи, функции)
Рекурсивные функции и рекурсивные типы
Преимущества не мутаций
Алгебраические типы данных, шаблоны соответствий
Хвостовая рекурсия
Функции первого класса и замыкание функций
Лексическая область действия
Карринг
Синтаксическое удобство
Эквивалентность и эффекты
Параметрический полиморфизм и замыкание функций
Выведение типа
Абстрактные типы и модули
Основы Racket
Динамическая & статическая типизация
 Ниспровержение лени, потоки и сохранение результатов
Имплементация языков, особенно функций высшего порядка
Макросы
Оценка
Основы Ruby
Объектно-ориентированное программирование - это динамическая диспетчеризация
Чистое объекто-ориентированное
Имплементация динамической диспетчеризации
Множественное наследование, интерфейсы и примеси
ООП & функциональная декомпозиция и расширяемость
Подтипы для записей, функций и объектов
Создание подтипов
Подтипирование, основанное на классах
Подтипирование & параметрический полиморфизм; ограниченный полиморфизм.


Рекомендуемая подготовка

Курс предполагает, что студенты уже знакомы с программированием на уровне большинства вводных курсов - потому что это не вводный курс по программированию. К слову, это и не достаточно продвинутый курс - но пары предыдущих курсов по программированию вполне достаточно. Студенты должны комфортно себя чувствовать при работе с переменными, условиями, массивами, списками с указателями, стеками и рекурсиями (хотя рекурсии будут рассмотрены на курсе), и знать разницу между интерфейсом и имплементацией. Студенты должны быть готовы писать программы на новых для них языках программирования. Последние части курса анализируют основные объектно-ориентированные концепции в противопоставлении с другими языками, поэтому знакомство с Java или близким языком (например, C#) будет полезно, но не обязательно для выполнения домашнего задания.  

Рекомендуемая литература

Видео курсов и упражнения по программированию служат основными информационными материалами класса. Инструктор также пишет заметки, которые доступны и могут использоваться в качестве ценного источника информации.

Формат курса

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



3 комментария:

  1. Ответы
    1. Так вперед! Ссылка на группу в скайпе в посте :)

      Удалить
  2. О нет. Я пропустил Ваш пост, Татьяна.
    Я подписался на курс, вечером я вступлю в группу. Но, кажется, за первые два домашних задания я получаю пенальти. Жаль.

    ОтветитьУдалить