Воссоздание степени бакалавра компьютерных наук с помощью онлайн-курсов

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

Многие университеты делают свои учебные программы общедоступными, перечисляя все необходимые курсы для получения степени. Область компьютерных наук не исключение. Используя такие свободно доступные ресурсы (см. MIT (английский), JMU (немецкий) и KIT (немецкий) в качестве отправной точки), можно создать собственное расписание.

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

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

Первый семестр

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

ОБЪЯВЛЕНИЯ

«Алгоритмы и структуры данных» сосредотачиваются на алгоритмах и структурах данных. Первая часть, алгоритмы, знакомит вас с сортировкой, которая включает QuickSort, MergeSort и многие другие. Кроме того, вы научитесь проверять время работы таких алгоритмов на основе их входных данных, что делается с помощью нотации Big-O.

Вторая часть, структуры данных, знакомит с широко используемыми структурами данных.

Эти структуры используются для хранения данных, чтобы можно было быстро найти или обновить соответствующую информацию. Используемые структуры включают красно-черные деревья, деревья двоичного поиска и графы. Естественно, вы также научитесь преодолевать такие структуры. Курс, который обучает вас таким темам, - это Специализация по структурам данных и алгоритмам, доступный на Coursera.

Линейная алгебра

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

Основы программирования

Эта лекция хочет, чтобы вы приобрели практический опыт программирования. Поскольку этот пост находится на пути к машинному обучению, в качестве языка следует выбрать python. Мне нравится простота Python - после того, как вы пройдете специализацию Python для всех, вы поймете, о чем я.

Логика

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

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

Второй семестр

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

Статистика и вероятность

Работа в качестве специалиста по данным или аналогичным образом означает работу с данными. А работа с данными включает в себя исследование. Очевидно, вы не можете просто просмотреть 1000 изображений за один раз. Это не обязательно, это можно сделать с помощью статистики. Проверяете среднюю форму? Возможный. Среднее значение списка? Возможный. Здесь пригодится математика. Вероятность и статистика: р или не р? конечно подходит для этого. Это и название передает юмор.

Программная инженерия

Имея набор математических навыков, мы можем перейти к большему количеству связанных с компьютером вещей. Программная инженерия учит концепциям разработки программного обеспечения: создание программного обеспечения, его адаптируемость, ускорение, основы чистого кода, наследования и шаблонов. В этой области многое происходит, курс Специализация в области дизайна и архитектуры программного обеспечения расскажет вам больше о UML, ООП и дизайне.

Основы компьютеров

В этой лекции рассматриваются компоненты (современных) ПК. Мне было трудно найти лекцию, охватывающую темы, эквивалентные моей учебе в бакалавриате. В итоге я остановился на курсе Компьютеры и Интернет от Khan Academy. Если вы ищете книгу, то можете прочитать Вычисления с квантовыми кошками, в которой также рассказывается об истории компьютеров.

Третий семестр

На этом второй семестр, уже приближается третий. Он охватывает передачу сигналов, расширенное программирование и семинар для студентов.

Передача сигнала

Эта лекция посвящена передаче цифровых данных из точки А в точку Б. Но что, если передача происходит с утечками, и мы теряем информацию? Или есть фоновый шум? Что ж, есть такие методы, как фильтры или схемы кодирования, которые решают эту проблему. Перейдите в раздел Специализация по цифровой обработке сигналов, чтобы узнать больше.

Программирование II

Вторая лекция по программированию будет построена на первой, но даст более глубокое представление о Python. Специализация по программированию на Python 3 - это следующий шаг после Python для всех.

Бакалаврский семинар

Учебные планы, которые я проверил как справочные, содержали такие семинары-заполнители. Пока вы выбираете тему из своей области, CS & ML, у вас все в порядке.

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

Эту настройку сложно воспроизвести с онлайн-курсами. Есть два решения, чтобы преодолеть это: вы можете найти единомышленника и поговорить о выбранной вами области или пройти еще один курс. Последний вариант - мое предпочтительное решение, и поскольку эта дублированная степень фокусируется на машинном обучении, следовательно, следует пройти курс Эндрю Нг CS230 Deep Learning из Стэнфорда. Этот курс дает обзор области, представленный одним из самых известных исследователей.

Лекция из другой области

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

Четвертый семестр

Теоретическая информатика

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

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

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

Теория графов

Как найти кратчайший маршрут между пунктами А и Б? Смоделированный в виде графа, мы можем выбрать кратчайший подмаршрут между A и B. Но графы присутствуют в таких (теоретических) задачах, социальных сетях (кто за кем следует), теории молекул и других областях, которые они часто используются. Следующие два курса научат вас больше о них: Теория графов и Введение в теорию графов.

Практический курс по программному обеспечению

Этот курс хочет, чтобы вы что-то создали. Это не обязательно должно быть что-то нелепое и сложное. Я рекомендую простой сценарий, который вы запускаете на веб-сервере. Загляните в галерею на streamlit.io и вдохновитесь. Речь идет не столько о создании превосходного продукта, сколько о том, чтобы научиться чему-то новому.

Лекция из другой области

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

Пятый семестр

Лекция по оборудованию

В предыдущей лекции мы слышали о компонентах, из которых состоит компьютер. Мы расширим это и переключим наше внимание на взаимодействие с оборудованием на более низком уровне. Ознакомьтесь с курсом Архитектура встроенного программного обеспечения и оборудования, чтобы узнать о низкоуровневом микропрограммном обеспечении. Если вы хотите изобретать новые компоненты, вам может подойти курс по описанию оборудования. В этом случае ознакомьтесь с курсом Языки описания оборудования для проектирования ПЛИС.

Операционные системы

В наши дни пользоваться компьютером стало просто. Эффективное использование набора инструментов - это уже другая история. Когда я начал программировать с PyCharm, я часто обращался к документации, чтобы найти сочетания клавиш. С их запоминанием программирование становится намного проще. Опыт работы с вашими программами не ограничивается только IDE, он распространяется на использование командной строки, использование текстовых редакторов и управление разрешениями. Вы не хотите тратить свою жизнь на выяснение инструментов, а на создание вещей с их помощью. В этом заключается цель курсов Пропавший семестр вашего обучения CS и Операционные системы и вы: стать опытным пользователем.

Базы данных

Вместо того, чтобы хранить данные в именованных папках и наблюдать за нарастанием хаоса, вы можете использовать базы данных в качестве альтернативы. Найдите среднее количество изображений? Вы нашли всех пользователей, которые поставили 5 звезд? Благодаря своим языкам запросов базы данных легко позволяют извлекать полезную информацию. И поскольку SQL де-факто является стандартным языком для взаимодействия с базами данных, каждый основной язык программирования имеет интерфейсы для взаимодействия с ними. Поскольку python является одним из них, он также предоставляет пакеты, скрывающие всю сложность. Все, что вам осталось, это настроить базы данных и подготовить запросы. Это и многое другое вы узнаете из курса IBM Базы данных и SQL для науки о данных с Python.

Курс общей квалификации

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

Шестой семестр

Ваш последний семестр включает два курса и вашу диссертацию.

Сбор данных

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

Математика для науки о данных

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

Бакалаврская работа / курс ML

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

Куда идти дальше?

Если вы ищете более подробные ресурсы, вы можете заглянуть в этот репозиторий GitHub (спасибо Брэдли Гранту за то, что поделился этим!).