Детальный план самообразования в Computer Science за 1.5 года |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2018-12-12 11:40 Любой план субъективен, поэтому задачей этой публикации было не составление идеального плана самообразования в Computer Science, а создание конкретного примера одного из возможных направлений с достаточным числом ссылок на образовательные ресурсы, изучив которые вы будете способны воплотить новые идеи на практике. Очевидно, что независимо от наших рекомендаций вы можете корректировать время и направление развития обучения. Если вы намерены предварительно продумать курс под себя еще более детализировано, изучите различные соображения по самообразованию на примере американских университетов и ресурса Teach Yourself Computer Science. Если у вас есть возможность отводить занятиям большее время (по 18-22 часов в неделю), рекомендуем обратить внимание на план Open Source Society University. Наверняка вы хотите, чтобы самообразование проходило эффективно и с максимальной пользой. Некоторые из читателей, начинающих знакомство с IT, не знают, с чего начать, или, имея некоторые соображения на этот счет, хотели бы узнать, как попасть в IT после 30. Возможно, вы стремитесь скорее стать Junior-разработчиком и начать зарабатывать на программировании. Перед тем, как изложить сам план, рассмотрим некоторые предварительные соображения относительно самообразования в Computer Science, справедливые для различных категорий учеников. При просмотре видеолекций для экономии времени ускоряйте их в 1.25-2 раза, в особенности в тех местах, где происходит обзор концепций и повторение материала предыдущих занятий. Несмотря на легкость изложения, концентрация новых знаний в этих частях минимальна и рассчитана на то, чтобы освежить знания с учетом больших интервалов между лекциями при традиционном обучении. Если вы проходите урок за уроком, соответствующие нейронные связи будут поддерживаться за счет применения старых знаний в новых уроках. Подход ускорения видео требует некоторой привычки, но позволяет больше времени уделять действительно сложным моментам. При чтении сопроводительных материалов ведите краткий конспект, дополняя его после каждой смысловой части. Пройдя какую-то из концепций, например, определенный алгоритм, полезно детально объяснить его реальному или воображаемому собеседнику. Это та составляющая, которой обычно сильно не хватает относительно самообразования в Computer Science и не только – фидбэка. Будет отлично, если вы можете найти заинтересованного партнера по занятиям – это не только повысит качество проверки тестовых работ, но также добавит в обучение соревновательный аспект и повысит мотивацию прохождения очередного курса. По тем же причинам при нескольких вариантах реализации практической части выбирайте курсы с мгновенной обратной связью – те, в которых проверка результата происходит без задержки, например, непосредственно в консоли или по приложенным ответам. Обязательно пользуйтесь системами контроля версий, такими как GitHub и Gist, чтобы не тратить время на решение однотипных задач и реализовывать попутно с обучением различные проекты, приходящие на ум в процессе прохождения курсов. Тогда профиль GitHub можно будет использовать как портфолио при устройстве на работу. Учебный план самообразования в Computer Science Первый семестр является фундаментом, в котором закладываются математико-алгоритмические основы компьютерных технологий и получаются представления о программировании. Второй семестр посвящен различным аспектам, в которых полученные в первом семестре понятия реализуются через различные виды взаимодействий между компьютерами или между компьютерами и пользователями: базы данных, компьютерные сети, мобильные приложения и обработка текстов. Третий семестр является наиболее субъективной частью этого плана, так как анализ данных и компьютерное зрение часто выносятся за пределы Computer Science. Однако с практической точки зрения владение этими технологиями в рамках Computer Science существенно расширяет навыки специалиста относительно решения современных задач анализа данных. В этом завершающем семестре также рассматриваются распределенные системы и практики разработки.
1. Первый семестр – математика, алгоритмы и структуры 1.1. Гарвардский обзорный курс CS50 (4 недели) Чтобы получить общее представление о Computer Science, пройдите курс CS50 Гарвардского университета. В качестве основного языка программирования используется язык С, что хорошо дополнит ваш инструментарий, так как в приведенном плане в этой же роли выступает высокоуровневый язык Python. Этот курс позволит увидеть картину в целом, и, если вы не уверены в выборе, понять, нужно ли вам заниматься Computer Science. 1.2. Основы Python (4 недели) Язык Python – интерпретируемый объектно-ориентированный язык с динамической типизацией. Этот высокоуровневый язык позволяет быстро освоить основные концепции программирования и начать делать что-то практическое. Automate the Boring Stuff with Python Альберта Свейгарта – один из лучших учебников по Python с задачами, направленными на облегчение ежедневной рутины. Книгу в вышеуказанном темпе можно пройти за 4 недели, читая и делая задания одной главы в день. Либо можно ориентироваться на объем книги: 600 страниц это соответственно 150 страниц в неделю или 20-25 страниц в день. Автоматизация рутинных задач с помощью Python: практическое руководство для начинающих (2016) Если вам когда-либо приходилось тратить часы на переименование файлов или обновление сотен ячеек электронных таблиц, то вы знаете, что такое рутинная работа. А что если поручить компьютеру выполнять такую работу вместо вас? 1.3. Математика для Computer Science (8 недель) В освоении вопросов математической индукции, теории чисел, теории графов и прочих математических основ самообразования в Computer Science поможет соответствующий курс MIT, состоящий из 25 лекций и 12 контрольных работ. Полный конспект курса состоит из 557 страниц, соответственно в среднем нужно проходить около 10 страниц в день и решать 1-2 контрольные в неделю. 1.4. Структуры данных (6 недель) Чтобы разбираться в связных списках, очередях, множествах, хэш-таблицах, бинарных деревьях и других структурах данных, пройдите курс университета Сан Диего, в создании которого принял участие Михал Левин, читающий в Школе анализа данных курс «Алгоритмы и структуры данных поиска». 1.5. Алгоритмы (8 недель) Одним из лучших курсов по алгоритмам является курс MIT 6.006, состоящий из 8 разделов: 24 лекций и 7 подборок задач. Соответственно каждой теме можно уделить одну неделю.Подборка книг по теме: Алгоритмы [20 книг] Видеоуроки: Дискретная математика [16 лекций] Алгоритмы и структуры данных. Подготовительный курс 2. Второй семестр – интерфейсы взаимодействия 2.1. Базы данных (3 недели) Для обучения работе с базами данных пройдите курс Мичиганского университета Using Databases with Python. В качестве базы данных в курсе используется SQLite3. Отточить свои навыки в написании SQL-запросов можно при помощи нашей подборки полезных ссылок по SQL . 2.2. Компьютерные сети (6 недель) Шестинедельный курс от Google, входящий в специализацию Google IT Support Professional Certificate научит вас разбираться в TCP/IP, DNS, DHCP и прочих вещах, на которых строятся компьютерные сети. Если потребуются дополнительные разъяснения на русском, мы подготовили: Компьютерные сети.Принципы,технологии,протоколы [2016] В. Олифер Н. Олифер ПОДБОРКА КНИГ ПО СЕТЯМ И АДМИНИСТРИРОВАНИЮ 2.3. Веб-программирование (5 недель) Гарвардский курс CS50’s Web Programming with Python and JavaScript состоит из 10 лекций и является расширенным подмодулем первого курса (с другим лектором) описываемого плана, рассматривающим основные технологии современного веб-программирования. В течение каждой недели проходите по 2 лекции, отводя по два-три дня под изучение соответствующих технологий. Язык JavaScript уже шестой год поряд остается самым популярным языком программирования по опросам StackOverflow. Если вы посчитаете, что с JavaScript вы хотите разобраться подробнее, пройдите : Продвинутый курс по WEB-разработке [10 лекций из 25] Лучший способ научиться веб-программированию это создать свой проект. Поэтому параллельно с прохождением указанного курса создайте ресурс, в котором вы будете реализовать возможности рассматриваемых технологий. Множество идей проектов собрано в подборке Just Build Websites. 2.4. Обработка текстов на естественном языке (4 недели) Одним из интерфейсов взаимодействия человека с миров является язык, на котором человек говорит. Для приобретения навыков в обработке строковых объектов и файлов, написанных на естественном языке, пройдите четырехнедельный курс Мичиганского университета Applied Text Mining in Python. 2.5. Мобильные приложения (5 недель) Для того, чтобы окунуться в разработку мобильных приложений, лучший старт это курс, в котором параллельно объяснениям создается первое приложение (такие курсы есть и для iOS, и для Android). Если вас увлекла эта сфера и перед вами встал вопрос, стоит ли становиться разработчиком мобильных приложений, то мы подготовили материал для вас: Подборка видеоуроков по Objective-C [8 уроков, Уровень 2] [2015 г] Разработка под iOS // Подборка уроков по Swift. Подборка полезных ссылок по Java и по разработке под Android OS Видеокурс: Разработка приложений под OS Android 3. Третий семестр – анализ и управление данными 3.1. Машинное обучение (10 недель) Один из вариантов разобраться в главных особенностях машинного обучения – пройти десятинедельный курс Python for Data Science. Отточить свои навыки в написании SQL-запросов можно при помощи нашей подборки полезных ссылок по SQL. При прохождении любого из вариантов вам помогут ссылки на ресурсы по Machine Learning и подборка материалов по машинному обучению. При проработке конкретных идей и поиске истоков алгоритмов машинного обучения важно знать, как правильно искать и читать научные статьи. Подборка книг по теме: Искусственный интеллект [30 книг] 3.2. Компьютерное зрение (6 недель) Видеокурс Компьютерное зрение [25 лекций] Вводный курс Georgia Tech представляет собой введение в компьютерное зрение, включая основы формирования изображений, обнаружение и сопоставление образов, отслеживание движения и т. д. 3.3. Распределенные системы (5 недель) Распределенные системы – область с быстро меняющимся инструментарием, поэтому наиболее правильно в этом разделе рекомендовать книгу, рассматривающую фундаментальные особенности этой области. Одна из лучших книг по тематике распределенных систем, не теряющая своей актуальности для самообразования в Computer Science – Распределенные системы. Принципы и парадигмы Таненбаума и ван Стеена. Это довольно объемный труд, требующий чтения порядка 15-20 страниц в день и продумывания вопросов в конце каждой из глав. Подборка книг «Классика Computer Science» (26 книг + CD) [2002-2016] 3.4. Практики разработки (4 недели) Курс Миннесотского университета объясняет как происходит совместная работа команды разработчиков, какие процессы и методологии ими используются для создания законченного программного продукта. Зачем нужны книги по программированию? Провоцирует данный вопрос изобилие курсов и видеотуториалов, которые якобы сводят пользу чтения на нет, хотя это далеко не так. Книга – довольно объемный ресурс, предназначенный для основательного изучения материала. Техническая книга предоставляет не только информацию о техниках и советы, но также взгляд с высоты птичьего полета на определенные концепции, идеи и общее понимание предмета. Техническая книга не читается за один вечер подобно художественной литературе. Зачастую она забирает дни, недели, а иногда и месяцы. Но даже столь «растянутый» срок не гарантирует, что вы быстро освоите все изложенное. Таким образом, брать в самом начале большую техническую книгу (а то и две) и просто читать – малоэффективный метод. Книги по технологиям (языки программирования, web-разработка, создание мобильных приложений) переполнены практическими примерами и заданиями, а потому нужно основательно «набить руку»: только так материал правильно осядет в голове. Правило первое: только практика набивает руку. Следует испытывать описанные в книге примеры сразу, в процессе чтения. Вы также можете усложнять их самостоятельно, придумывать свои собственные задачи с использованием только что изученного материала. Это хорошая практика за неимением учителя или репетитора. Правило второе: перечитывайте. Книги по программированию просто предназначены для этого, тем более, если конкретная технология или язык программирования для вас в новинку, и опыта работы с ними нет. С первого раза понять всю изложенную в книге информацию не получится. После первого прочтения и некоторой практики вернитесь к теоретическому изучению пройденного материала снова. Правило третье: пять книг не лучше, чем одна. Погоня за количеством в надежде забить свой шкаф «умными» книжками ни к чему не приведет. Изучая новое, бывает тяжело заставить себя перейти к практике. Чтобы оставаться в зоне комфорта, мы часто утешаем себя тем, что мало знаем, и попадаем в ловушку под названием «Вечный Студент» – человек, который постоянно что-то учит, но на самом деле ничего со своими знаниями не делает. Чтобы начать работать над новой для нас технологией, достаточно пройти одну базовую книгу. Если вы считаете иначе – поделитесь в комментариях своими мыслями по этому поводу: будет интересно подискутировать на тему. Не загоняйте себя в тупик вопросами в стиле «Прочел Лутца по Питону. Что читать дальше?». Лучше ответьте на вопрос «Сколько строчек кода вы написали в процессе чтения?». Что вы получите от следующей книги по программированию на ту же тему, если и эта не закрепилась на практике? Перечитайте книгу и попробуйте реализовать из нее что-то на практике. Не гонитесь за количеством. Для начала хватит одного курса, одной книги, одного туториала, одного видеоурока, чтобы написать первые строки кода. Без этих строк грош цена следующей толстой книге. Источник: m.vk.com Комментарии: |
|