Мечтаю стать инженером-программистом. Услышав бесчисленные восторженные отзывы, я решил рискнуть и зарегистрироваться в 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