Мечтаю стать инженером-программистом. Услышав бесчисленные восторженные отзывы, я решил рискнуть и зарегистрироваться в CS50.

CS50 — это курс Введение в компьютерные науки, который ведет Дэвид Малан в Гарвардском университете.

Согласно программе, по окончании курса я освою:

  • Широкое и надежное понимание информатики и программирования
  • Как мыслить алгоритмически и эффективно решать задачи программирования
  • Такие понятия, как абстракция, алгоритмы, структуры данных, инкапсуляция, управление ресурсами, безопасность, разработка программного обеспечения и веб-разработка.
  • Знание ряда языков, включая C, Python, SQL и JavaScript, а также CSS и HTML.
  • Как взаимодействовать с активным сообществом единомышленников с любым уровнем опыта
  • Как разработать и представить окончательный проект по программированию своим коллегам

Что ожидать

Весь курс длится 11 недель и требует от 10 до 20 часов в неделю. Он предназначен как для специальностей, так и для неспециалистов, что, вероятно, объясняет диапазон времени, который студент может потратить.

Я не совсем новичок в программировании — знаю HTML, CSS (знаю, знаю, что это не языки программирования), немного JavaScript и немножко React. У меня нет опыта работы с C, с чего мы и начнем, но, учитывая, что JavaScript — это язык типа C, я надеюсь, что смогу довольно легко его освоить.

Лекции

Каждую неделю выходит видеолекция (около 2,5 часов) и заметки, предлагающие лекционный материал в текстовом формате. Профессор Дэвид Малан говорит со скоростью мили в минуту, поэтому лекции проходят довольно быстро. Он также невероятно увлекателен и использует множество метафор и примеров живого кодирования, чтобы упростить понимание концепций.

Шорты

В большинстве недель есть серия видео семинаров (каждое по 5–10 минут), которые преподают Дуг Ллойд и Брайан Ю, в которых более подробно рассматриваются некоторые важные концепции. Они чрезвычайно полезны при выполнении наборов задач! Они называются Шорты, поэтому сначала я подумал, что это могут быть просто короткие отрывки лекции, но они совсем другие и обязательно нужны.

Лаборатории

Каждую неделю (кроме недель 0, 1 и 10) необходимо выполнять лабораторные работы, которые включают решение задачи по программированию. Нам разрешено сотрудничать с другими одноклассниками для решения лабораторных вопросов, если мы хотим. Поскольку я не знаю, чтобы кто-то еще проходил курс, возможно, я просто буду приставать к своему парню-компьютерщику, если застряну (спасибо, детка!).

Наборы задач

Каждую неделю также предлагается набор задач (обычно 2 задачи по кодированию), которые нужно решить и отправить на оценку. Задача фокусируется на лекционном материале, прочитанном на этой неделе, в то же время опираясь на материал, пройденный в предыдущие недели.

В течение первых нескольких недель нам предоставляется возможность выбирать между «менее удобной» или «более удобной» версией набора задач. Поскольку все, кто приходит в CS50, имеют разный опыт и уровень опыта, это гарантирует, что те, у кого уже есть некоторый предыдущий опыт программирования, могут взять на себя дополнительную задачу, если захотят.

Академическая честность

Учащиеся не могут работать вместе над наборами задач в соответствии с политикой курса:

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

Сотрудники проводят выборочные проверки материалов, отправленных в CS50x. Студенты, уличенные в нарушении этой политики, будут удалены с курса. Учащиеся, которые уже прошли курс CS50x, в случае обнаружения нарушений будут навсегда отозваны сертификаты CS50.

Среда разработки

CS50 предлагает Github Codespace в качестве IDE (который в основном представляет собой VSCode в облаке), чтобы мы могли выполнять все лабораторные работы и наборы задач прямо из браузера. Это чрезвычайно удобно, потому что я могу получить доступ к коду с любого компьютера в любом месте, а все мои файлы и история версий сохранены на Github.

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

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

Я заметил, что каждый раз, когда я компилирую свой код, он автоматически запускает коммит git. Поскольку мне приходится входить в кодовое пространство с помощью моей личной учетной записи Github, количество моих вкладов росло (зеленые квадраты, ву-у!)

Отправка заданий

Чтобы задание было отправлено, оно должно сначала пройти тест на «правильность» и «стиль». По сути, если ваш код проходит все тесты, вы можете спокойно отправить свое задание, зная, что получите его на 100%.

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

Содержание курса

Основной материал курса будет доставлен в соответствии со следующим графиком:

  • Неделя 0: Скретч
  • Неделя 1: С
  • Неделя 2: Массивы
  • Неделя 3: Алгоритмы
  • Неделя 4: Память
  • Неделя 5: Структуры данных
  • Неделя 6: Питон
  • Неделя 7: SQL
  • Неделя 8: HTML, CSS, JavaScript
  • Неделя 9: Фляга
  • Неделя 10: смайлики
  • Бонус: кибербезопасность

Дополнительные семинары

  • Как подготовиться к техническим собеседованиям
  • Складной/двойной экран форм-фактора
  • Совместная работа и контроль версий с помощью Git
  • Локальная разработка вашего проекта с помощью VSCode
  • Создание небольших 2D-игр с помощью LOVE 2D и Lua
  • Введение в машинное обучение

Сертификат

По окончании курса, если студенты выполняют не менее 70% всех заданий и итогового проекта, они получают Сертификат Гарвардского университета. Также есть возможность заплатить 150 долларов за подтвержденный сертификат от EdX, который предоставляет доказательство для работодателя того, что вы успешно прошли онлайн-курс. Платить за сертификат edX мне кажется абсолютно бессмысленным, поскольку Гарвард предоставляет его бесплатно, поэтому я пропущу это.

Последующие курсы

CS50 предлагает несколько дополнительных курсов, которые охватывают более сложные темы: веб-программирование, разработка игр и искусственный интеллект. Как только я закончу этот курс, я обязательно запишусь на CS50 для веб-программирования (поскольку моя конечная цель — работать веб-разработчиком!). Я также очень заинтересован в разработке игр и искусственном интеллекте, поэтому я планирую сделайте и это, но это будет скорее побочный проект.

Заключительные слова

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

Пока что мне полностью нравится этот курс 😊, и я очень взволнован тем, что будет дальше.

🔗 Первоначально опубликовано на Alekz.dev