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

Если вы изучаете (или хотите стать лучше) Python, JavaScript, SQL или решение проблем, читайте дальше. Здесь я предлагаю несколько ресурсов, которые помогут вам в вашем путешествии.

Ускоренный курс Python Эрика Маттеса. Если вы новичок в программировании и Python, эта книга - отличное место для начала.

Маттес предлагает четкие объяснения основных концепций программирования, таких как циклы, функции, файлы и классы. Вы не только узнаете, например, что такое словарь и как его писать. Но вы также получите реальные примеры того, когда это использовать. Кроме того, многие из его примеров кода предлагают построчное объяснение. Это поможет вам лучше читать (и понимать) код.

Интервью с Ace Python от Реувена Лернера - этот бесплатный курс содержит 50 обучающих видео по темам Python, разделенных на три уровня: начальный, средний и продвинутый. Каждое видео посвящено вопросу, который Лернер рассматривает в скринкасте. Вы узнаете, например, как менять местами переменные, но также узнаете, почему это работает.

Его объяснения подтверждаются живыми примерами кода. Вы увидите, как он пишет функции, классы или условные выражения для объяснения каждой концепции. Лернер - отличный учитель. Таким образом, вы приобретете знания Python и при этом станете отличным программистом.

Python Workout Реувена Лернера. Эта книга - еще один фантастический ресурс, который предлагает Лернер. В нем 50 задач, которые касаются основных частей языка Python: строк, словарей, функций, файлов, списков и кортежей, среди прочего. Эта книга насыщена практикой: после краткого введения в тему Лернер дает вам задачу, которую нужно решить.

Однако отличительной чертой является предлагаемое им продуманное решение. Он не только дает ответ, но и дает подробное объяснение. В результате вы узнаете, как разбить проблему, использовать лучшие инструменты для ее решения и понять каждый шаг на этом пути. В дополнение к 50 основным проблемам Лернер приводит дополнительные проблемы (без решений) в конце каждой главы для большей практики.

Современный JavaScript - Выполнение программы - Курс Современный JavaScript в рамках Выполнение программы представляет собой всесторонний обзор современных функций JavaScript, от ES5 до ES2017. Вы узнаете о функциях, классах, символах, деструктуризации и стрелочных функциях, а также о многих других темах.

Программа Execute предлагает успешный рецепт изучения и сохранения информации. Этот курс (и все курсы, предлагаемые в рамках программы Execute Program, включая курс SQL, указанный ниже) предлагает интерактивный подход к обучению. Каждый урок целенаправлен и насыщен практикой: вы будете работать над проблемами на протяжении каждого урока.

Курсы также сложны для повторения: вы будете решать задачи по ранее изученному материалу, прежде чем переходить к новому материалу. Он использует интервальные повторения, чтобы отслеживать, что вы знаете и над чем нужно работать.

JavaScript: Hard Parts, v2 - будет отправлено на FrontEnd Masters - отправка выходит за рамки поверхностного уровня и затрагивает основные темы JavaScript в этом курсе, в том числе поток выполнения, обратные вызовы и обещания, среди прочего другие. Он делает сложные темы, такие как завершение, ясными и легкими для понимания.

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

SQL - Execute Program - изучите SQL с помощью курса SQL Execute Program. Этот обзорный курс охватывает многие из основных тем языка SQL, в том числе: создание таблиц, использование объединений, обработку конфликтов, использование внешних и первичных ключей и многое другое.

Подход к обучению - лучшая часть этого курса (и всех курсов, предлагаемых в рамках программы Execute). Программа Execute работает по-другому (как я уже отмечал выше относительно ее курса JavaScript) - и это хорошо. Вы узнаете и запомните информацию. Его небольшие и целенаправленные уроки требуют много практики, а это означает, что вы будете решать проблемы на протяжении каждого урока. Этот курс (как и другие) также требует много повторений, что помогает убедиться, что вы понимаете имеющуюся информацию, прежде чем двигаться дальше.

Как это решить Джорджа Полиа - это обязательное чтение для любого программиста любого уровня. В нем математик Джордж Пойла объясняет процесс решения проблем. Хотя он пишет с математической точки зрения, принципы неподвластны времени и легко применимы к программированию.

Получите решение

Этого не избежать: чтобы научиться лучше решать проблемы, нужно решить множество проблем. Вот несколько платформ и ресурсов, которые можно попробовать.

Упражнения для программистов Брайана Хогана - Хоган предлагает практические упражнения из реальной жизни, организованные по темам, таким как файлы, структуры данных и функции.

Упражнения в этой книге похожи на лук: вы можете решать одно и то же снова и снова и каждый раз получать новые идеи. Это потому, что Хоган предлагает несколько задач и ограничений для каждого упражнения. Кроме того, упражнения не адаптированы к конкретному языку, поэтому вы можете решать упражнения на Python сейчас и JavaScript позже.

Упражнение. Эта платформа программирования предлагает множество задач различной степени сложности. Что мне больше всего нравится, так это то, что он ориентирован на тесты: для каждой задачи есть файл тестов. Решением задач на Exercism я начал с Test-Driven Development.

Полный курс - Interview Cake - в настоящее время я участвую в полном курсе Interview Cake, где я изучаю алгоритмы, структуры данных и нотацию Big O и получаю практику. Задачи тщательно отобраны, чтобы помочь вам понять концепцию, алгоритм или структуру данных.

Но это еще не все. На мой взгляд, самое лучшее то, что Interview Cake фокусируется на процессе решения проблемы, а не только на ее решении. Он предлагает пошаговое объяснение проблемы. Это поможет вам разобрать проблемы и понять, почему тот или иной подход имеет смысл в данном контексте.

LeetCode - На LeetCode нет недостатка в задачах, которые нужно решить. Но он предлагает важное преимущество: обычно существует несколько решений с подробными объяснениями каждой решаемой проблемы. В результате вы научитесь лучше читать код, учитывать временную и пространственную сложность и обдумывать множество способов решения одной и той же проблемы.

Я пишу о навыках программирования, которые вам необходимо развить, и концепциях, которые вам необходимо изучить, и о лучших способах их обучения ( amymhaddad.com).

Первоначально опубликовано на amymhaddad.com.