TL; DR: для всех, кто хочет переключить поля в CS, но не имеет надлежащих знаний, это лучший ресурс для вас.

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



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

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

Да, у него крутая кривая обучения

Я участвую в программе Bridge в Университете Сан-Франциско, что означает, что первый год (промежуточный год) предназначен для ускоренного ознакомления с концепциями CS, чтобы по существу «преодолеть» разрыв между людьми, не имеющими отношения к CS, и людьми с 4-летним стажем. Степень CS за плечами. Это означает, что моя программа, по сути, охватывает 4 года содержания (спорно) в течение года. И вот что самое интересное - CS50 все еще был намного сложнее, чем все, что мне приходилось отправлять в этом семестре. Он разработан так, чтобы быть трудным, но если вы справитесь с этим (и получите удовольствие от процесса), вы почувствуете, что вас не остановить, чтобы проложить себе путь в область CS.

Используйте свои ресурсы

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

Веб-разработка с Flask

Курс на удивление хорошо объясняет концепции взаимодействия сервер-клиент и передачи данных по HTTP. Он также занимается обслуживанием баз данных, что дает хорошую базовую основу для веб-разработки. По сути, это лекарство, открывающее путь к пониманию сложности модели MVC разработки веб-приложений. Класс веб-разработки довольно быстро охватывает такие концепции, как запросы, сеансы, HTML, AJAX, JavaScript и фреймворк Flask - это один из самых сложных классов для понимания. Однако, если у вас появится возможность поработать с Flask и SQL, он откроет множество дверей в области веб-разработки, которая является огромной частью компьютерных наук. Хороший финальный проект во Flask даст вам базовые навыки, необходимые для более глубокого погружения в веб-разработку.

Потратив более 100 часов на создание финального проекта во Flask, я получил более глубокое понимание SQL, JQuery, AJAX и Python. Проект представляет собой приложение ToDo List and Goals, которое можно просмотреть ниже. Я настоятельно рекомендую потратить эти дополнительные 10% времени на то, чтобы выяснить, как развернуть ваш проект (если это веб-приложение), чтобы любой мог его просмотреть и использовать.



Я хотел бы верить, что изучение фреймворка ASP.Net после этого помогло мне получить длительную стажировку в качестве разработчика Dot Net в Polymerupdate в Мумбаи.

Структуры данных и алгоритмы

Примечательно, что этому классу также удается охватить основы разработки программного обеспечения - структуры данных и алгоритмы. В Pset 5 - Speller мы должны реализовать структуру данных по нашему выбору для выполнения проверки орфографии в очень большом текстовом файле. Словарь из более чем 100 000 слов будет жить в выбранной нами структуре данных. При подаче заявок на участие в проекте есть возможность соревноваться за лучшую временную и пространственную сложность.

Достаточно умно, что мы созданы для создания наших собственных структур данных с нуля, что отлично подходит для понимания того, как они работают под капотом для более сложных языков, таких как Java и python. Не многие студенты колледжа CS могут сказать, что они реализовали хеш-таблицу с использованием алгоритма хеширования, но Pset 6 рекомендует вам попробовать и это!

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

Сложность времени и пространства - это теоретическая концепция, с которой студенты CS будут сталкиваться на протяжении всей своей карьеры. Даже сегодня, когда я отрабатываю задачи на LeetCode, я стараюсь осознавать временную сложность моего алгоритма, просматривая, где моя заявка попадает в таблицу представлений. Параллель между CS50 Big Board и диаграммой распределения времени выполнения LeetCode довольно сильна.

Детали, детали, детали

Вы покидаете CS50 с чувством, что потратили время и что на то, чтобы отточить темп каждой минуты лекции, были потрачены кропотливые часы. Профессор Малан раскрывает причудливую природу профессионалов CS, рассказывая о таких вещах, как Резиновая утка и Маленькие столики для бобби. Можно было бы ожидать, что динамичный курс может упустить из виду, казалось бы, тривиальные детали, подобные этой, но их включение сохраняет курс интересным и создает у студентов чувство общности. Я до сих пор могу вспомнить один из наборов задач, который выводит секретную ссылку на YouTube, которая при открытии приводит вас сюда… Да, это классический тролль, который никогда не устареет. Это мелкие детали, которые вы будете помнить спустя годы после завершения курса.

В заключение спасибо

CS50 всегда будет занимать особое место в моей жизни, и я всегда буду оглядываться на него с любовью. Я благодарен всем организаторам в Гарварде, которые сделали возможным проведение такого хорошо продуманного и динамичного занятия, доступного бесплатно для всех, у кого есть Интернет. Профессор Дэвид Малан удивительно напоминает нам о том, что программирование - это действительно круто. Он использует театральный подход к демонстрации концепций, чтобы показать, что программирование намного более доступно, чем кажется. Нигде больше вы не найдете кого-нибудь, кто разорвет книгу желтых страниц пополам, чтобы продемонстрировать концепцию бинарного поиска! Это веселее, если подумать о том, что он делает это каждый год.

Его энтузиазм и харизма заставляют завершить текущее задание только для того, чтобы принять участие в новой лекции. Аналогичная заслуга принадлежит студенту TA Дугу Ллойду, Замиле Чан и Брайану Ю за их отличную работу по представлению концепций в «шортах», а также решение задач. Надеюсь, моя история свидетельствует о том, что этот онлайн-курс действительно может быть использован для официального изменения вашей карьеры в CS.