Это квинтэссенция курса компьютерных наук (CS), который может пройти любой студент (независимо от статуса самоучки / учебного курса / степени CS). Могу с уверенностью сказать, что без этого курса я бы не был там, где нахожусь сегодня. Для тех из вас, кто еще не знает (позор вам), этот курс проводится организацией edX Гарварда, и, что самое важное, он бесплатный.

Его преподает профессор Дэвид Дж. Малан. CS50 подходит к информатике более «дружественным к новичкам» способом, и вместо того, чтобы погрузиться прямо в запутанный и лабиринтный синтаксис, он разбит на 8 недель с финальным проектом.

Неделя 0

CS50 начинается с Scratch, визуального языка программирования / языка спрайтов, который в некотором роде дает базовые концепции низкоуровневого программирования. На завершение проекта я потратил больше времени, чем положено, потому что хотел, чтобы он выглядел красиво. К сожалению, это единственная легкая неделя курса, сразу после этого они сразу же погружаются в язык C. Основная концепция CS50 - развивать компьютерных специалистов, которые думают и решают проблемы, как ученые-компьютерщики. Люди, которые понимают и применяют концепции, а не люди, которые просто помнят, как повторять x, y количество раз, потому что основные концепции в конечном итоге намного важнее, чем просто запоминание синтаксиса.

1–5 неделя

Это продолжается с 1-й по 5-ю (что довольно долго), и лично я боролся изо всех сил в это время. С учетом сказанного, это совершенно нормально. Данные задания довольно сложны для кого-то на этом уровне, цель этих недель состоит в том, чтобы на самом деле установить, что в мире программирования вы все время будете сталкиваться с кирпичными стенами, встречаться с вещами, о которых у вас есть самое слабое, не знаю где начать вообще. Но главный вывод таков:

Каждая проблема - это просто серия небольших проблем.

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

Если вы решите достаточно мелких проблем, в конечном итоге решатся и более крупные проблемы.

6 неделя

Здесь все становится «проще», но только потому, что вы работали без устали (я надеюсь) на протяжении последних недель, пытаясь решить проблемы на C. На 6 неделе вы знакомитесь с Python, гораздо более новым языком программирования для сравнения. в C. Здесь, если вы выполнили работу правильно, вы бы на самом деле легко справились с наборами задач, потому что в Python вам не нужно слишком беспокоиться о таких вещах, как распределение памяти / хеш-таблицы - вещи, которые вы не делаете не получить бесплатно в C по сравнению с Python. Python - отличный язык для программирования благодаря своей универсальности и простому синтаксису. Это был абсолютно забавный момент, когда профессор показывает, чего можно достичь одной строкой кода Python и 10 строками кода C.

7 неделя

Базы данных имеют первостепенное значение, когда дело доходит до программирования, и, конечно же, CS50 никогда не перестает выполнять свой комплексный учебный план. На этой неделе вы познакомитесь с языком запросов под названием SQL. SQL - самая популярная используемая база данных из-за того, насколько мощной она может быть при хранении данных сложного уровня. Лично для меня эта неделя довольно интересна, и вам предстоит решить множество проблем, используя только что изученные навыки SQL. Проблемы становятся все сложнее, когда вам действительно нужно логически подумать о том, как запросить конкретный фрагмент данных, который вам нужен. У меня были целые страницы иллюстраций, чтобы побудить мой мозг задуматься о том, как я действительно могу соединить точки. Наберитесь терпения, и если вы соедините точки, оно того стоит.

Неделя 8

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

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

Этот веб-путь состоит из 2 частей. Сначала рассматривается базовый HTML / CSS JavaScript. Это святая троица интерфейсной веб-разработки и самого необходимого. Хотя этот раздел курса выполнен не так хорошо, как остальные, я бы засвидетельствовал это временными ограничениями, которые у них, вероятно, были, поскольку эта часть длится всего одну неделю, а веб-разработка - слишком разнообразная тема, чтобы охватить ее за неделю. Но спасибо им за то, что они втиснули как можно больше контента и информации за эту неделю. Задача в этой части недели довольно проста - выполнить базовую задачу по разработке веб-сайта.

Вторая часть посвящена Flask, который представляет собой веб-фреймворк на Python (ура, вы уже знаете Python!). Точно так же эта часть не так тщательна, как остальные, опять же, вероятно, из-за нехватки времени.

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

Последний проект

Финальный проект состоит из

  • веб-приложение, использующее JavaScript, Python и SQL, частично основанное на коде распространения веб-трека
  • приложение для iOS с использованием Swift
  • игра, использующая Lua с LÖVE
  • приложение для Android с использованием Java
  • расширение Chrome с использованием JavaScript
  • программа командной строки с использованием C
  • аппаратное приложение, для которого вы программируете какое-то устройство

Ладно, не волнуйся, я шучу. Вам не обязательно выполнять ВСЕ из них (хотя вы можете), но, по сути, вы должны выбрать один, основываясь на решении 8-й недели. Естественно, веб-приложение будет наиболее актуальным еще и потому, что оно спроектировано таким образом, что все, что вы сделали на 8-й неделе, будет продолжением вашего последнего проекта.

Я провел здесь почти неделю, создавая приложение для расчета времени прибытия автобуса. Базы данных не было (потому что я действительно не знал, что это такое на тот момент), но я разработал приложение Flask, которое могло использовать API с открытым исходным кодом. Мое приложение было некрасивым, но, по сути, оно могло точно отображать время автобуса и работало довольно прилично. Что наиболее важно и удивительно, эта идея на самом деле заключалась в решении одной из моих актуальных повседневных проблем.

Это было забавно, потому что мне настолько понравилась идея, что я позволил себе реорганизовать ее через несколько месяцев с помощью React и развернуть на Heroku (проверьте это здесь).

Последние мысли

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

Я заканчиваю хорошей цитатой хорошего друга:

«Как бы это ни звучало, с CS50 я действительно научился учиться».

До следующего раза береги себя.

Тим

P.S.

Я вижу много сообщений, в которых люди борются со многими наборами задач, но позвольте мне заверить вас - ПОЛНОСТЬЮ нормально! чрезвычайно сложно, но не невозможно. Помните, проблема за проблемой, решайте одну и переходите к следующей.

Больше контента на plainenglish.io