Год назад я был фанатом чисел без опыта программирования. Попробовав онлайн-курс программирования, я был так вдохновлен, что поступил на одну из лучших программ по информатике в Канаде.

Две недели спустя я понял, что могу научиться всему, что мне нужно, с помощью edX, Coursera и Udacity. Я бросил учебу.

Решение было несложным. Я мог изучать контент, который хотел, быстрее, эффективнее и за небольшую плату.

У меня уже был университетский диплом и, что еще важнее, университетский опыт. Платить более 30 тысяч долларов, чтобы вернуться в школу, казалось безответственным.

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

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

С 2011 года основатель Class Central Дхавал Шах внимательно следит за онлайн-курсами, чем кто-либо другой в мире. Дхавал лично помог мне составить этот список ресурсов.

Как мы выбрали курсы для рассмотрения

Каждый курс должен был соответствовать четырем критериям:

  • Он знакомит с программированием и, при желании, информатикой. См. «Замечание о программировании и информатике» ниже.
  • Язык обучения - Python или R. Это, безусловно, два самых популярных языка программирования, используемых в науке о данных.
  • Это должен быть интерактивный онлайн-курс, поэтому никаких книг или текстовых руководств. Что касается последнего, то подойдут курсы Codecademy без видео и на основе текстового редактора, но строгие текстовые учебники, подобные тем из R tutorial - нет. Хотя книги - это эффективные способы изучения программирования, Python и R, в этом руководстве основное внимание уделяется курсам.
  • Он должен быть приличной продолжительности: всего не менее десяти часов для предполагаемого завершения.

Как мы оценивали курсы

Мы считаем, что прошли все известные курсы, которые существуют и соответствуют вышеуказанным критериям. Поскольку существует, по-видимому, сотни курсов по Udemy на Python и R, мы решили рассмотреть только самые популярные и получившие самые высокие оценки. Однако есть шанс, что мы что-то упустили. Пожалуйста, дайте нам знать, если вы думаете, что это так.

Мы собрали средний рейтинг и количество отзывов с Class Central и других сайтов с обзорами. Мы рассчитали средневзвешенный рейтинг для каждого курса. Если в серии было несколько курсов (например, Часть 1 и Часть 2 Университета Райса), мы рассчитывали средневзвешенный рейтинг по всем курсам. Мы также читали текстовые обзоры и использовали эти отзывы для дополнения числовых оценок.

Мы сделали субъективное суждение о программе, основываясь на трех факторах:

  1. Освещение основ программирования.
  2. Освещение более сложных, но полезных тем в программировании. (Например, некоторые курсы предпочитают не охватывать объектно-ориентированное программирование. Мы считаем, что это ключевая тема, хотя и не нарушающая условия сделки, поэтому эти курсы являются лишь закрепленными отметками и не исключаются из рассмотрения.)
  3. Какая часть учебной программы имеет отношение к науке о данных?

Заметка о программировании и информатике

Программирование - это не информатика, и наоборот. Есть разница, которую новички могут не осознавать. Заимствуя этот ответ из Programmers Stack Exchange:

Информатика - это изучение того, что [могут] делать компьютеры; программирование - это практика заставить компьютеры что-то делать.

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

Однако ни один из курсов не является строго курсом по информатике, поэтому что-то вроде Harvard’s CS50x на edX исключено.

Мы выбрали лучший курс программирования для специалистов по данным:

Серия статей Университета Торонто Учитесь программировать на Coursera. LTP1: The Fundamentals и LTP2: Crafting Quality Code имеют почти идеальный средневзвешенный рейтинг 4,71 из 5 звезд по 284 отзывам. У них также есть отличное сочетание сложности контента и возможностей для начинающего специалиста по данным.

Это бесплатное введение в программирование на основе Python выгодно отличается от других 20+ курсов, которые мы рассмотрели.

Дженнифер Кэмпбелл и Пол Грайс, два доцента факультета информатики Университета Торонто (который считается одним из лучших в мире) преподают серию. Самостоятельные, автономные курсы Coursera соответствуют материалу их книги Практическое программирование: введение в информатику с использованием Python 3. LTP1 покрывает 40–50% книги, а LTP2 покрывает еще 40%. Непокрытые 10–20% не особенно полезны для науки о данных, что помогло им стать нашим выбором.

Профессора любезно и быстро присылали мне подробные программы курса по запросу, которые было трудно найти в Интернете до официального перезапуска курса в сентябре 2016 года.

Научитесь программировать: основы (LTP1)

Срок: 7 недель

Ориентировочное время: 6–8 часов в неделю.

Этот курс представляет собой введение в компьютерное программирование, предназначенное для людей без опыта программирования. Он охватывает основы программирования на Python, включая элементарные типы данных (числовые типы, строки, списки, словари и файлы), поток управления, функции, объекты, методы, поля и изменчивость.

Модули

  1. Установка Python, IDLE, математических выражений, переменных, оператора присваивания, вызова и определения функций, синтаксических и семантических ошибок.
  2. Строки, ввод / вывод, повторное использование функций, рецепт создания функций и строки документации.
  3. Логические значения, импорт, пространства имен и операторы if.
  4. Для петель и причудливых манипуляций со струнами.
  5. Пока циклы, списки и изменчивость.
  6. Для циклов по индексам, параллельным спискам, строкам и файлам.
  7. Кортежи и словари.

Научитесь программировать: Код качества изготовления (LTP2)

Срок: 5 недель

Ориентировочное время: 6–8 часов в неделю.

Вы знаете основы программирования на Python: элементарные типы данных (числовые типы, строки, списки, словари и файлы), поток управления, функции, объекты, методы, поля и изменчивость. Чтобы преуспеть в этом курсе, вам нужно уметь это делать.

LTP: создание кода качества охватывает следующие этапы: проектирование более крупных программ, тестирование вашего кода, чтобы вы знали, что он работает, чтение кода, чтобы понять, насколько он эффективен, и создание ваших собственных типов.

Модули

  1. Разработка алгоритмов: как вы решаете, что делать в теле функции? Как понять, какие функции писать в первую очередь?
  2. Автоматизированное тестирование: доктест и юниттест.
  3. Анализируем код на скорость - подробности поиска и сортировки.
  4. Создание новых типов: классы в Python.
  5. Функции как аргументы, значения параметров по умолчанию и исключения.

Доцент Грайс также прокомментировал структуру курса: «Каждый модуль имеет от 45 минут до чуть более часа видео. В видео есть вопросы-викторины, благодаря которым общее время, затрачиваемое на изучение видео, составит, возможно, 2 часа ».

Эти видеоролики обычно короче десяти минут каждое.

Он продолжил: «Кроме того, у нас есть одно упражнение (дюжина или два или около того вопросов с несколькими вариантами ответов и коротких ответов) на каждый модуль, которое должно занять час или два. В LTP1 есть три задания по программированию, каждое из которых может занять от четырех до восьми часов работы. В LTP2 есть два программных задания одинакового размера ».

Он подчеркнул, что оценка 6–8 часов в неделю является приблизительной: «Оценка затраченного времени невероятно зависит от студентов, поэтому, пожалуйста, возьмите мои оценки в этом контексте. Например, кто-то, кто немного разбирается в программировании, возможно, на другом языке программирования, может потратить половину времени на кого-то совершенно нового в программировании. Иногда кто-то зацикливается на одной концепции на пару часов, в то время как они могут быстро перейти к другим концепциям ... Это одна из причин, по которой нам так нравится формат самостоятельного обучения ".

В общей сложности серия программ Обучение программированию Университета Торонто длится примерно 12 недель по 6–8 часов в неделю, что является стандартным для большинства онлайн-курсов, созданных университетами. Если вы предпочитаете зацикливаться на своих МООК, это 72–96 часов, которые можно завершить за две-три недели, особенно если у вас есть некоторый опыт программирования.

Еще один отличный вариант Python

Если вы уже знакомы с программированием и не возражаете против учебной программы, в которой есть заметный перекос в сторону игр и интерактивных приложений, я также рекомендую Введение в интерактивное программирование на Python Университета Райса (Часть 1 и Часть 2. ) на Coursera.

Этот популярный курс, имеющий более 6000 отзывов и самый высокий средневзвешенный рейтинг 4,93 / 5 звезд, известен своими увлекательными видео, сложными викторинами и интересными мини-проектами. Это немного сложнее, и в нем меньше внимания уделяется основам и больше темам, которые не применимы в науке о данных, чем наш выбор №1.

Эти курсы также являются частью 7 курса Принципы компьютерной специализации на Coursera.

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

Краткое описание курса и полная программа:

«Этот курс, состоящий из двух частей, разработан, чтобы помочь студентам с очень небольшим опытом работы в области вычислительной техники или без нее изучить основы создания простых интерактивных приложений… Чтобы упростить изучение Python, мы разработали новую среду программирования на основе браузера, которая упрощает разработку интерактивных приложений на Python. просто. Эти приложения будут включать окна, содержимое которых является графическим и реагирует на кнопки, клавиатуру и мышь.

Рекомендуемый уровень подготовки: требуется знание математики в средней школе. Хотя класс предназначен для студентов, не имеющих опыта программирования, некоторые начинающие программисты считают, что этот класс быстро развивается. Для студентов, заинтересованных в легкой подготовке перед началом урока, мы рекомендуем сайт для самостоятельного изучения Python, такой как codecademy.com ».

Часть 1

Срок: 5 недель

Ориентировочное время: 7–10 часов в неделю.

Неделя 0 - инструкции, выражения, переменные
Изучите структуру этого класса и изучите Python как калькулятор.

Неделя 1 - функции, логика, условные выражения
Изучите основные конструкции программирования на Python и создайте программу, которая воспроизводит вариант «Камень-ножницы-бумага».

Неделя 2 - программирование, управляемое событиями, локальные / глобальные переменные
Изучите основы программирования, управляемого событиями, поймите разницу между локальными и глобальными переменными и создайте интерактивную программу, которая воспроизводит простые угадайку.

Неделя 3 - холст, рисование, таймеры
Создайте холст на Python, научитесь рисовать на холсте и создайте цифровой секундомер.

Неделя 4 - списки, ввод с клавиатуры, основы моделирования движения
Изучите основы списков в Python, смоделируйте движущиеся объекты в Python и воссоздайте классическую аркадную игру «Pong».

Часть 2

Неделя 5 - ввод с помощью мыши, методы списков, словари
Читайте ввод с помощью мыши, узнавайте о методах списков и словарях и рисуйте изображения.

Неделя 6 - классы и объектно-ориентированное программирование
Изучите основы объектно-ориентированного программирования на Python с помощью классов и работы с мозаичными изображениями.

Неделя 7 - базовая физика игры, спрайты
Разберитесь с математикой ускорения и трения, работайте со спрайтами и добавляйте звуки в свою игру.

Неделя 8 - наборы и анимация
Узнайте о наборах в Python, вычислении коллизий между спрайтами и анимации спрайтов.

Если вы настроили R

Если вы настроены на введение в курс программирования на R, мы рекомендуем серию курсов DataCamp на R: Введение в R, Промежуточный R, Промежуточный R - Практика и Написание функций на R. Хотя последние три доступны по цене 25 долларов в месяц, DataCamp является лучшим в категории для освещения основ программирования и тем, связанных с R, что отражено в его среднем рейтинге 4,29 / 5 звезд.

Мы считаем, что лучший подход к изучению программирования для науки о данных с помощью онлайн-курсов - сначала пройти через Python. Почему? Отсутствуют варианты MOOC, которые обучают основным принципам программирования и используют R в качестве языка обучения. Мы нашли шесть таких курсов R, соответствующих нашим критериям тестирования, по сравнению с двадцатью двумя курсами на основе Python. Большинство курсов R не получили высоких оценок и не соответствовали большинству наших субъективных критериев тестирования.

Разбивка по сериям выглядит следующим образом:

Введение в R

Ориентировочное время: 4 часа

Главы:

  1. Введение в основы
  2. Векторы
  3. Матрицы
  4. Факторы
  5. Кадры данных
  6. Списки

Средний R

Расчетное время: 6 часов

Главы:

  1. Условные выражения и поток управления
  2. Петли
  3. Функции
  4. Семья заявки
  5. Утилиты

Средний R - Практика

Ориентировочное время: 4 часа

Этот дополнительный курс по промежуточному R не охватывает новых концепций программирования. Вместо этого вы укрепите свои знания по темам среднего уровня R с помощью кучи новых и забавных упражнений.

Написание функций на R

Расчетное время: 4 часа

Главы:

  1. Быстрое освежение
  2. Когда и как писать функцию
  3. Функциональное программирование
  4. Расширенные входы и выходы
  5. Надежные функции

Другой вариант для R - пройти вводный курс программирования на Python, чтобы охватить основы программирования, а затем освоить синтаксис R с курсом основ R. Это то, что я сделал, но я сделал это с помощью Анализ данных с R от Udacity. У меня это сработало.

Вы также можете выбрать R с нашей высшей рекомендацией для класса статистики, которая учит основам R через кодирование задач статистики.

Конкурс

Наши пики №1 и №2 получили средневзвешенный рейтинг 4,71 и 4,93 по 284 и 6069 отзывам соответственно. Давайте посмотрим на другие альтернативы.

Курсы Python (рейтинг по убыванию средневзвешенного значения)

Курсы R (рейтинг по убыванию средневзвешенного значения)

Подведение итогов

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





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

Если вам нужен полный список МООК по Data Science, вы можете найти их на тематической странице Class Central Наука о данных и большие данные.

Если вам понравилось это читать, ознакомьтесь с некоторыми другими произведениями Class Central:





Если у вас есть предложения по курсам, которые я пропустил, дайте мне знать в ответах!

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

Это сокращенная версия оригинальной статьи, опубликованной на Class Central, в которую включены описания курсов, учебные планы и несколько обзоров.