Исходный вопрос
Сейчас я учу своего брата программированию. Он новичок, но очень умен. (И он действительно хочет учиться). Я заметил, что некоторые из наших сессий увязли в мелочах, и мне не кажется, что я был очень организован. (Но ответы на этот пост очень помогли.)
Что я могу сделать лучше, чтобы научить его эффективно? Есть ли логический порядок, который я могу использовать для прохождения концепции за концепцией? Есть ли сложности, которых мне следует избегать на потом?
Мы работаем с языком Python, но совет на любом языке приветствуется.
Как помочь
Если у вас есть хорошие, добавьте в свой ответ следующее:
Опишите, пожалуйста, ресурс со ссылкой на это, чтобы я мог посмотреть. Я хочу, чтобы все знали, что я определенно использовал некоторые из этих идей. Ваши материалы будут собраны в этом сообщении.
Интернет-ресурсы для обучения начинающих:
Рекомендуемые печатные книги для обучения начинающих






Если ему интересно, разве мелкие детали не хорошие? Используя python, вы уже отключили графический интерфейс, чтобы не было путаницы. Почему бы не выбрать проект, игру или что-то еще и реализовать его. Классическая игра по угадыванию чисел может быть просто реализована из командной строки в 20-30 строк кода (в зависимости от языка, конечно) и дает вам переменные, условия, циклы и ввод данных пользователем.
W.r.t. привет-лоу: stackoverflow.com/questions/811074/…
Прежде всего, начните, как и все остальные: с программы Привет, мир. Это просто и дает им общее представление о структуре программы. Попытайтесь вспомнить, когда вы впервые программировали, и насколько сложными были некоторые концепции - начните с простого.
После Hello World перейдите к созданию некоторых основных переменных, арифметики, затем к логической логике и операторам if / else. Если у вас есть один из ваших старых учебников по программированию, ознакомьтесь с некоторыми из первых примеров и попросите его прогнать их. Только не пытайтесь вводить слишком много всего сразу, иначе это будет ошеломляющим и сбивающим с толку.
На самом деле я бы поспорил, чтобы выбрать более простой язык с меньшим количеством инструкций. Я лично выучил дома на BASIC, как сделал Джефф. Таким образом, вам не придется углубляться в более сложные вопросы, такие как объектно-ориентированное программирование или даже процедуры, если вы этого не хотите. Как только он сможет справиться с простым потоком управления, переходите к чему-то более сложному, но только к простым функциям.
Может быть, начать с очень простых программ, которые просто складывают 2 числа, а затем вырастают до чего-то, что может потребовать ветки, затем, возможно, читать ввод и отвечать на него, затем какой-то цикл и начинать объединять их все вместе. Просто начните с малого и продвигайтесь вверх. Не делайте никаких больших проектов, пока он не поймет основы (иначе это может быть слишком сложно, и он может сдаться на полпути). Как только он освоит БЕЙСИК или что угодно, переходите к чему-то более сложному.
Только мои 0,02 доллара
При обучении брата программированию вам следует очень внимательно относиться к тому, чтобы он не слишком полагался на вас. Часто, когда я обнаруживаю, что помогаю другим, они начинают думать обо мне как о книге для ответов на все свои вопросы, и вместо того, чтобы экспериментировать, чтобы найти ответ, они просто спрашивают меня. Часто лучший учитель - это экспериментирование, и каждый раз, когда у вашего брата возникает вопрос типа «Что будет, если я добавлю 2 к строке?» Вы должны сказать ему, чтобы он попробовал и убедился сам. Также я заметил, что когда я не могу донести концепцию до кого-то, это помогает увидеть пример кода, в котором мы можем смотреть на каждый сегмент индивидуально и объяснять его по частям. В качестве побочного примечания у людей, плохо знакомых с программированием, часто возникают проблемы с идеей объектно-ориентированного программирования, они скажут, что понимают ее, когда вы их учите, но не получат четкой концепции до тех пор, пока на самом деле не реализуете ее.
Вы можете попробовать использовать Алиса. Это трехмерная программа, предназначенная для использования на вводных курсах программирования.
Двумя самыми большими препятствиями для начинающих программистов часто являются:
Алиса использует интерфейс перетаскивания для создания программ, избегая возможности синтаксических ошибок. Алиса позволяет вам создавать трехмерные миры и иметь свой код, управляющий (простыми) трехмерными персонажами и анимацией, что обычно намного интереснее, чем реализация связанных списков.
Опытные программисты могут смотреть на Алису свысока как на игрушку и насмехаться над перетаскиванием строк кода, но исследование показывает, что этот подход работает.
Отказ от ответственности: я работал над Алисой.
Я узнал об этом из последней лекции Рэнди Пауша. Обоснование этого проекта поразило меня.
Хороший курс по питону - Нежное введение в программирование с использованием Python Массачусетского технологического института. Все это бесплатно онлайн, и вам не нужно быть сверхстудентом Массачусетского технологического института, чтобы понять это.
Edit [Justin Standard]
This course uses this free online book: How To Think Like a Computer Scientist
I'm definitely finding it quite useful.
Мне приходилось работать с несколькими начинающими (никогда не писавшими ни строчки кода) программистами, и этой осенью я проведу после школы семинар со старшеклассниками. Это самое близкое к документации. Работа над этим все еще продолжается, но я надеюсь, что это поможет.
1) FizzBuzz. Запускаем программы из командной строки. Вы можете очень быстро написать несколько забавных игр или инструментов и очень быстро изучить все языковые функции, не изучая сначала инструменты графического интерфейса. Эти ранние приложения должны быть достаточно простыми, чтобы вам не нужно было использовать какие-либо настоящие инструменты отладки, чтобы заставить их работать.
По крайней мере, такие вещи, как FizzBuzz, - хорошие проекты. Ваши первые несколько приложений не должны иметь дело с базами данных, файловой системой, конфигурацией и т. д. Это концепции, которые просто сбивают с толку большинство людей, и когда вы просто изучаете синтаксис и базовые функции фреймворка, вам действительно не нужно больше сложности.
Некоторые проекты:
2) Простой проект Когда они хорошо разбираются в особенностях языка, вы можете начинать проект (простые веселые игры работают хорошо). Вы должны постараться, чтобы первый проект был завершен в течение 6-12 часов. Не тратьте время на то, чтобы спроектировать его рано. Пусть проектируют, даже если это отстой. Если он развалится, расскажите о том, что произошло и почему не удалось, затем выберите другую тему и начните заново.
Здесь вы начинаете знакомство с возможностями отладки ваших инструментов. Даже если вы можете увидеть проблему, прочитав код, вы должны научить их пользоваться инструментами, а затем показать им, как вы могли это увидеть. Это служит двойной цели: обучить инструментам отладки и научить выявлять ошибки без инструментов.
Когда или если проект станет функциональным, вы можете использовать его для внедрения инструментов рефакторинга. Хорошо, если вы затем сможете расширить проект с помощью некоторых простых функций, которые вы никогда не планировали. Обычно это означает рефакторинг и значительную отладку, поскольку очень немногие люди пишут хотя бы половину приличного кода в первый раз.
Некоторые проекты:
3) Реальный проект Запустите настоящий проект, который может занять некоторое время. Используйте надлежащий контроль версий и установите расписание. Запустите этот проект как настоящий, если только у него хороший опыт работы с инструментами.
Очевидно, вам нужно настроить это для каждого человека. Самое важное, что я обнаружил, - это сделать даже первые простые приложения применимыми к тому, что интересует человека.
Некоторые проекты:
Это отличное руководство. Лично я не могу закодировать свой выход из бумажного пакета (на самом деле, я бы хотел увидеть, как кто-то делает это в реальной жизни), так что это тоже похоже на хорошее руководство для обучения самому себе.
Это очень хороший ответ. Мое единственное возражение заключается в том, что Тетрис не лучший выбор для первой или второй игры. На этом уровне обнаружение столкновений может быть сложной проблемой - отлично, если они могут ее решить.
@phkahler Я понимаю вашу точку зрения, но я считаю, что Тетрис интересен, потому что существует так много OSS / демонстрационных реализаций, которые вы можете проанализировать до и после написания кода.
Раньше я преподавал программирование, и у вашего брата есть одно главное преимущество перед большинством моих учеников, которых он хочет учить :)
Если вы решите использовать C у друга есть сайт, в котором есть программы, которые использовались в предыдущих поколениях, запомните как базовый набор. Более сложные из них используют ncurses, что отчасти сводит на нет их использование в качестве учебного пособия, но некоторые из них являются крошечными мелочами, и вы можете выучить много, даже не будучи обученным.
Лично я думаю, что Python и Ruby станут отличными первыми языками.
Обновлено: список заданий для начинающих по программированию, появившийся в одночасье, может быть именно тем, что вы ищете.
Думаю, здесь работает «мудрость толпы». Как большинство людей научилось программировать? Многие утверждают, что они делали это путем копирования чужих программ, обычно игр, в которые они хотели играть на BASIC.
Может, этот маршрут и с ним подойдет?
Если вы хотите научить основам программирования, не зависящим от языка, существует приложение под названием Царапать, созданное в MIT. Он разработан, чтобы помочь людям развить навыки программирования. По мере того, как пользователи создают Scratch-проекты, они учатся создавать условия, циклы и т. д. Существует также сообщество временных проектов, которые определяют, какие проекты могут быть загружены - таким образом вы можете изучить программы других людей и увидеть, как они были созданы.
Это действительно зависит от стиля обучения вашего брата. Многие люди учатся быстрее, запачкая руки и просто вникая в это, кристаллизируя концепции и общую картину по мере продвижения и накопления знаний.
Я предпочитаю начинать с общей картины и углубляться в мелкие детали. Первое, что я хотел знать, это то, как все это сочетается, затем вся эта объектно-ориентированная болтовня, затем о классах и экземплярах и так далее. Мне нравится знать основные концепции и немного теории, прежде чем изучать синтаксис. У меня было небольшое преимущество, потому что я написал несколько игр на BASIC 20 лет назад, но с тех пор ничего особенного.
Возможно, было бы полезно затенять производственный процесс, начав с общего заявления о миссии, затем плана и / или блок-схемы, а затем переработав некоторый псевдокод (склоняясь к синтаксису, который вы в конечном итоге будете использовать), прежде чем фактически писать код.
Золотое правило здесь - выяснить стиль обучения вашего ученика.
http://tryruby.hobix.com/"> Попробуйте Ruby (в вашем браузере)
Отлично! Использование Ruby кажется простым и мощным
Я согласен с Леаком. Я действительно иногда играю с Царапать, если мне скучно. Это довольно забавный визуальный способ смотреть на код.
Как это работает, они дают вам кучу «блоков» (они выглядят как лего), которые вы можете складывать. И, складывая эти блоки и взаимодействуя с холстом (куда вы помещаете свои спрайты, графику), вы можете создавать игры, фильмы, слайд-шоу ... это действительно интересно.
Когда он будет завершен, вы можете загрузить его прямо на веб-сайты Scratch, которые представляют собой портал YouTube для приложений Scratch. Не только это, но вы также можете загрузить любую заявку на веб-сайт, а также учиться на других приложениях Scratch или расширять их.
Это фантастическая книга, которую мои младшие братья изучали:
http://pine.fm/LearnToProgram/
Конечно, самое главное - приступить к какой-нибудь реальной, полезной программе НЕМЕДЛЕННО после прочтения книги.
Я рекомендую начинать их с C / C++. Я считаю, что это хорошая основа практически для любого другого языка. Кроме того, различные версии BASIC могут быть в лучшем случае довольно хитрыми и не имеют реального отношения к реальному программированию.
Я думаю, что научиться программировать, потому что вы хотите научиться программировать, никогда не будет так же хорошо, как научиться программировать, потому что вы хотите что-то ДЕЛАТЬ. Если вы можете найти что-то, чем ваш брат заинтересован в работе, потому что он хочет, чтобы это работало, вы можете просто оставить его в Google, и он сделает это. И он попросит вас проверить, идет ли он правильным путем.
Я думаю, что одна из самых больших проблем при преподавании абстрактного программирования заключается в том, что у него нет реального контекста, в который учащийся мог бы эмоционально вложиться. Программирование - это сложно, и должна быть какая-то реальная отдача, чтобы оправдать затраченные усилия. делать это. В моем случае я изучал информатику в университете, изучал там Pascal и COBOL, а до этого выучил BASIC дома, но я так и не добился этого, пока не стал самозанятым веб-дизайнером еще в 90-х, и мои клиентам нужна была функциональность на своих веб-сайтах, и они были готовы платить примерно в 10 раз больше за функциональность, чем за дизайн. Положить еду на стол - чертовски мотиватор!
Итак, я изучил Perl, затем ASP / VBScript, затем JavaScript, затем Flash / ActionScript, затем PHP - все для того, чтобы реализовать то, что я хотел.
Я думаю, что когда у него есть основы (переменные, циклы и т. д.), Вы должны попытаться помочь ему найти что-то конкретное, что ему интересно, и помочь ему изучить все необходимое, чтобы это произошло. Я знаю, что я гораздо более склонен и мотивирован делать что-то, если мне это интересно. Кроме того, не забудьте дать ему возможность справиться с некоторыми из более сложных проблем, нет ничего более приятного, чем момент, когда вы решаете это самостоятельно.
Я бы просто позволил ему написать тонны кода. Позвольте ему управлять всем, что делаете вы, и просто будьте готовы ответить на вопросы.
Хотите верьте, хотите нет, но после нескольких месяцев написания тонны дрянного кода он начнет понимать идею и начать писать лучшие программы. На этом этапе вы можете увязнуть в деталях (память и т. д.), А также поговорить об общих принципах проектирования.
Я слышал, что великих художников от посредственных отличает то, что каждый раз, когда они тренируются, они улучшают что-то, даже самое маленькое. Позвольте своему брату попрактиковаться, и он будет совершенствоваться каждый раз, когда садится за клавиатуру.
Edit: [Justin Standard]
Esteban, this reminds me of a recent coding horror post, and I do think you are right. But I think its still worthwhile to find methods to guide his practice. No question, I want him writing as much code as he knows how to do. Thats one reason I'm asking for sample projects.
Да, я знаю, о каком посте вы говорите, Джастин. Чтение напомнило мне, что большинство вещей, которые я узнал, я получил, пытаясь учиться на собственных ошибках. Я действительно не могу переоценить важность обучения на практике!
Меня научили решать проблемы независимым от языка способом, используя блок-схемы и PDL (язык разработки программ). Через пару недель я научился преобразовывать написанный мной PDL в язык. Я рад, что научился так, потому что большую часть своих лет я программировал, решая проблемы, не будучи привязанным к языку. Какой язык я использую, всегда определялся реализацией, а не частью дизайна.
Решать проблему, разбивая ее на основные шаги, является ключевым навыком. Я думаю, что это одна из вещей, которая отличает тех, кто умеет программировать, от тех, кто не умеет.
Что касается того, как вы относитесь к порядку понятий в языке, я считаю, что самый простой способ - это решить, что это будет иметь в виду проект и взяться за концепции по мере необходимости. Это позволяет вам применять их по мере необходимости в том, что вам интересно. При изучении языка полезно иметь в виду несколько простых проектов и несколько проектов с прогрессивной сложностью. Принятие решения о них поможет вам наметить необходимые концепции и их порядок.
Во-первых, я думаю, что уже есть несколько отличных ответов, поэтому я постараюсь не обмануть слишком много.
Я думаю, что одним из самых важных моментов, которые я хотел бы гарантировать, является то, что они понимают основные концепции фреймворка. Я знаю, что вы работаете на Python (о котором я понятия не имею), но, например, с ASP.NET заставить людей понять страницу / код модели может быть реальной проблемой, но это критический, что они это понимают. Например, недавно у меня на форуме возник вопрос о "где я могу поместить свой код доступа к данным, в файл 'cs' или файл 'aspx'".
Поэтому я бы сказал, по большей части, позвольте им указывать путь, просто быть там, чтобы поддерживать их там, где это необходимо, и предлагать больше вопросов для поддержания интереса. Просто убедитесь, что у них есть основы, и не позволяйте им бегать, пока они не научатся ходить.
Удачи!
Я бы порекомендовал также посмотреть несколько скринкастов - они обычно создаются в контексте определенной технологии, а не языка, хотя, если отображается код Python, это подойдет :). Дело в том, что они созданы хорошими программистами, и смотреть, как хорошие программисты программируют, - это хорошо. Вы и ваш брат могли бы также заняться программированием со сверстниками, это может быть даже лучшей идеей. Только не забудьте объяснить, ПОЧЕМУ вы что-то делаете именно так, а не так. Я считаю, что лучший способ изучать программирование - это изучать хорошие примеры и стараться не замечать даже плохих.
Роберт Рид написал полезное руководство Как быть программистом, которое охватывает широкий круг вопросов программирования, которые могут оказаться полезными для новичка.
Уже была куча отличных ответов, но для абсолютного новичка я искренне рекомендую Hackety Hack. Он был создан неоправданно плодовитым why_the_lucky_stiff специально для обеспечения среды, подобной BASIC / LOGO / Pascal, для экспериментов-новичков. По сути, это отличная Ruby IDE с некоторыми отличными библиотеками (флэш-видео, IM, веб-сервер) и интерактивными уроками. Это хороший шаг для программирования, поскольку он выбирает уроки, которые приносят удовольствие и полезные вещи. «Hello, world» может не впечатлить сразу, но создание собственного IM-клиента за 20 минут может вдохновить кого-то продолжать учиться. Радоваться, веселиться!
Скопируйте какой-нибудь простой код построчно и попросите их прочитать и интерпретировать его по мере продвижения. Они скоро это сделают. Я начал программировать на Acorn Electron с помощью фрагментов кода из журналов Acorn. Я понятия не имел о программировании, когда мне было 6 лет, я копировал текст, но постепенно я узнал, что означают разные слова.
Я бы порекомендовал сначала преподавать самые основы, которые используются почти на каждом языке, но делать это без языка. Опишите все основные концепции If-Else If-Else, циклы, классы, типы переменных, структуры и т. д. Все, что лежит в основе большинства языков. Затем переходите к пониманию логических операций, сравнений и сложных операторов И ИЛИ, чтобы понять, каковы результаты для более сложных операторов.
Делая это таким образом, он поймет концепции программирования и ему будет намного легче переходить на языки, оттуда он просто изучает сложные детали языков, их функции и синтаксис.
Мой любимый проект "начать обучение программированию" - это Game Змеи или Трон, потому что он позволяет вам начинать медленно (переменные для хранения текущей "позиции червя", массивы для хранения позиций червя, если червь длиннее одного "куска", циклы, чтобы заставить червя двигаться, если / переключатель позволяет пользователю изменять направление червя, ...). Это также позволяет включать в проект все больше и больше вещей в долгосрочной перспективе, например объектно-ориентированное программирование (один червь - это один объект с возможностью иметь двух червей одновременно) с наследованием (переход от «Змей» к «Трону» или наоборот, где червь немного меняет поведение).
Я бы посоветовал вам для начала использовать Microsoft XNA. По моему опыту, начинать программировать намного веселее, если вы можете что-то видеть на своем экране, а XNA позволяет очень легко заставить что-то двигаться на экране. Довольно легко внести небольшие изменения и взглянуть еще раз, например изменяя цвета, чтобы он мог видеть, что его действия имеют эффект -> Впечатление от успеха. Успех - это развлечение, а это отличный стимул продолжать учиться.
Это может показаться глупым, но почему ВЫ пытаетесь научить своего брата программировать?
Часто лучшая среда обучения состоит из цели, которая может быть достигнута увлеченным новичком (пример программы), достаточного количества ресурсов (Google / учебные пособия / книги) и компетентного источника советов, который может предоставить руководство при необходимости.
Вы определенно можете помочь с предложениями по первым двум, но последнее - ваша основная роль.
Я бы предложил использовать подход, аналогичный подходу, описанному в книге Ускоренный C++, в котором они охватывают части C++, которые обычно полезны для создания простых программ. Я думаю, что для всех, кто плохо знаком с программированием, есть что показать, приложив немного усилий, - это хороший способ поддержать интерес. После того, как вы изучили основы Python, вам следует расслабиться и позволить ему поэкспериментировать с языком.
В одном из моих университетских предметов в этом семестре они применили подход, называемый проблемно-ориентированным обучением (PBL), в котором они используют лекции, чтобы стимулировать студентов к различным подходам к проблемам. Поскольку ваш брат увлечен, вам следует применить аналогичный подход. Поручите ему поработать над небольшими проектами и позвольте ему разобраться во всем сам. Затем, когда он закончит, вы можете изучить его подход, сравнить и сопоставить разные методы.
Если вы можете оказать ему необходимую помощь, чтобы направить его в правильном направлении, тогда с ним все будет в порядке. Было бы неплохо снабдить его хорошими веб-сайтами и книгами.
Я также рекомендую воздерживаться от IDE на начальных этапах. Использование командной строки и текстового редактора позволит ему лучше понять процессы, участвующие в компиляции / сборке кода.
Я надеюсь, что мне немного помогли. :)
Эта ветка очень полезна мне как начинающему (> 100 строк кода) программисту.
Основываясь на том, через что я прошел, как только я закончил с «Hello World» и перешел к переменным и оператору «if / else», я получил слишком много синтаксиса; не зная, что с ними делать.
Так что интересным простым проектом я мог бы снова заинтересовать меня. Здесь довольно много предложений по проектам.
Могу я здесь задать вопросы?
Лучше ли сначала выучить язык сценариев, например Autohotkey?
Edit: [Justin Standard]
I think learning something macro-based like Autohotkey will only help minimally. Try learning a "real" programming language first. The easiest to get started with (according to most people) are python and ruby. I favor python, but both are pretty simple. There is also a full stackoverflow post that answers the question of which language to start with.
Сначала меня интересовало, как работают разные программы, поэтому я начал с просмотра исходного кода. Затем, когда я начинал понимать, как работает программа, я менял определенные параметры, чтобы посмотреть, что произойдет. В общем, я научился читать раньше, чем научился писать. По совпадению, именно так большинство людей изучают английский язык.
Поэтому, если бы я пытался научить кого-то программировать, я бы дал им небольшую программу, чтобы попытаться прочитать и понять, как она работает, и попросил бы их просто поиграть с исходным кодом.
Только тогда я мог бы дать им «задания», чтобы попытаться их выполнить.
Если бы у них была особая причина желать научиться программировать, было бы неплохо начать с чего-то в соответствии с тем, чего они хотят достичь. Например, если они хотят хорошо разбираться в таком приложении, как блендер, определенно было бы неплохо начать с Алиса.
Я бы настоятельно рекомендовал придерживаться языка, в котором есть сборка мусора, например D, Perl, или какого-либо интерпретируемого языка, такого как javascript. Было бы неплохо держаться подальше от Perl, пока Perl 6 не будет ближе к завершению, потому что он устраняет некоторые трудности чтения и понимания Perl.
Вначале меня сбивало с толку множество вещей, но не более чем простая механика. Понятия я сразу же воспринял. Но пропустите закрывающую скобку? Легко сделать и часто трудно отладить в нетривиальной программе.
Итак, мой скромный совет: не недооценивайте основы (например, хороший набор текста). Это звучит исправительно и даже глупо, но это избавило меня от многих горестей в начале моего учебного процесса, когда я наткнулся на простую технику набора полного «скелета» структуры кода, а затем просто его заполнения.
Для оператора «if» в Python начните с:
if :
В C / C++ / C# / Java:
if ()
{
}
В Паскале / Дельфи:
If () Then
Begin
End
Затем введите между открывающим и закрывающим токенами. Как только это станет устойчивой привычкой, и вы начнете делать это не задумываясь, большая часть мозга будет освобождена, чтобы делать забавные вещи. Я признаю, что это не очень яркий совет для публикации, но тот, который я лично видел, приносит много пользы!
Edit: [Justin Standard]
Thanks for your contribution, Wing. Related to what you said, one of the things I've tried to help my brother remember the syntax for python scoping, is that every time there's a colon, he needs to indent the next line, and any time he thinks he should indent, there better be a colon ending the previous line.
Мой личный опыт начался с элементарной работы с Logo Writer (который в какой-то мере превратился в Scratch), учитывая, что я был маленьким ребенком, и компьютеры были не такими крутыми, как сейчас, но в настоящее время это заняло меня там, где я раньше не видел ''. Так было раньше ... Думаю, именно так я увлекся бизнесом ... Могу сказать, что именно эти первые впечатления, основанные на такой простоте и крутизне, сделали товары, которые засели в моей голове на всю жизнь. Вот как следует преподавать основы обучения программированию ... простой процесс, жаждущий магии.
Вернувшись к моему первому CS 101, я начал с представлений о том, что представляет собой алгоритм, создав Tequila Sunrise (пошаговый процесс, который можно было бы повторить в любое время с правильными ингредиентами, что приведет к тому же результату), оттуда. мы переходим к основным математическим функциям с использованием Scheme (как говорил Эхаскинс ... начинайте с малого, а затем наращивайте), а затем переходим к понятиям циклов, логической логики, структур, а затем встраиваем в концепции объектов и некоторые исполнения моделирования. .
Одним из преимуществ этого подхода является то, что язык был не целью, а всего лишь инструментом в процессе изучения концепций и основ программирования (точно так же, как операторы, функции и прочее в математике).
ИМХО, изучение основ программирования и создание основы, вероятно, лучшее, что вы можете научить своего брата, как только цель будет достигнута, вы можете перейти к более общему языку использования, например, python, и научить их более высоким концепциям, таким как архитектура и шаблоны проектирования ( сделайте их естественными в процессе, чтобы он привык к передовым методам с ранних стадий и видел их как часть процесса) ... мы далеки от того, чтобы заново изобретать теплую воду, но мы всегда должны начинать с разжигания огня.
Оттуда небо - предел!
Как насчет этого: Создание нового поколения хакеров Ната Торкингтона.
По моему предвзятому мнению, лучше всего начинать с C. Язык небольшой, функции высокого уровня распространены повсеместно, а функции низкого уровня позволяют изучать машину.
Я нашел C Primer Plus, 5-е издание очень полезным как начинающий программист, почти не имеющий опыта программирования. Он не предполагает никакого предшествующего опыта программирования, интересно читать и подробно рассматривает C (включая последний стандарт C99).
Есть книга под названием Код. Я не могу вспомнить, кто это написал, но он затрагивает основы многих вещей, которые мы (программисты) знаем и принимаем как должное, что люди, с которыми мы разговариваем, тоже знают. Все, от того, как вы считаете двоичные файлы до того, как работают процессоры. В нем нет ничего, связанного с языками программирования (ну, насколько я помню), но это довольно хороший учебник. Я признаю, что я тоже из школы, которая считает, что вы должны знать, как работает компьютер, чтобы иметь возможность эффективно программировать для него.
Думаю, это книга Чарльза Петцольда is.gd/3oes
Я рекомендую Logo (также известный как черепаха), чтобы понять основные концепции. Он обеспечивает хорошую песочницу с немедленной графической обратной связью, и вы можете демонстрировать циклы, переменные, функции, условные выражения и т. д. Эта страница предоставляет отличное руководство.
После логотипа перейдите на Python или Ruby. Я рекомендую Python, так как он основан на ABC, который был изобретен с целью обучения программированию.
При обучении программированию я должен поддержать предложение Э.Хаскинса о простых проектах, а затем о сложных. Лучший способ научиться - это начать с определенного результата и измеримого рубежа. Это сохраняет уроки сфокусированными, позволяет ученику развивать навыки, а затем развивать эти навыки и дает ученику что-то, чем можно похвастаться перед друзьями. Не стоит недооценивать силу того, что можно показать в своей работе.
Теоретически вы можете придерживаться Python, поскольку Python может делать практически все. Это хорошее средство для обучения объектно-ориентированному программированию и (большинству) алгоритмов. Вы можете запустить Python в интерактивном режиме, например из командной строки, чтобы понять, как он работает, или запустить сразу целые скрипты. Вы можете запускать свои сценарии, интерпретируемые на лету, или компилировать их в двоичные файлы. Существуют тысячи модулей для расширения функциональности. Вы можете сделать графический калькулятор наподобие того, что идет в комплекте с Windows, или вы можете сделать IRC-клиент, или что-нибудь еще.
XKCD немного лучше описывает возможности Python:

После этого вы можете перейти на C# или Java, хотя они не предлагают многого, чего еще нет в Python. Преимущество этого в том, что они используют синтаксис в стиле C, который используется во многих (осмелюсь сказать, в большинстве?) Языков. Вам пока не нужно беспокоиться об управлении памятью, но вы можете привыкнуть к большей свободе и меньшему вмешательству со стороны интерпретатора языка. Python применяет пробелы и отступы, что в большинстве случаев хорошо, но не всегда. C# и Java позволяют управлять собственными пробелами, оставаясь строго типизированными.
Оттуда стандарт - C или C++. Свобода в этих языках почти экзистенциальна. Теперь вы отвечаете за собственное управление памятью. Никакая сборка мусора вам не поможет. Здесь вы обучаете действительно продвинутым алгоритмам (таким как сортировка слиянием и быстрая сортировка). Здесь вы узнаете, почему «ошибка сегментации» - это ругательство. Здесь вы загружаете исходный код ядра Linux и смотрите в Бездну. Начните с написания кольцевого буфера и стека для обработки строк. Затем продвигайтесь вверх.
На самом деле, вы не можете полностью управлять памятью в C.У вас есть malloc и т. д., И вы можете бесплатно управлять им. Вам просто нужно сообщить системе, когда вам нужно больше памяти и когда вы закончите с памятью, которую вы использовали.
Если у вашего брата есть доступ к iTunes, он может загрузить видеолекции вводного курса информатики, который читал Ричард Бакленд в Университете Нового Южного Уэльса. Он увлекательный инструктор и охватывает основы вычислений и языка C. По крайней мере, скажите своему брату, чтобы он проиграл видео в фоновом режиме, и некоторые концепции могут проникнуть через осмос. :)
COMP1917 Высшие вычисления - 2008 Сессия 1http://deimos3.apple.com/WebObjects/Core.woa/Browse/unsw.edu.au.1504975442.01504975444
Если ссылка не работает, вот путь:
Главная -> iTunes U -> Инженерия -> COMP1917 Высшие вычисления - 2008 Сессия 1
Для меня изучение и эксперименты в самой среде IDE помогли мне изучить Java и Visual Basic, но я усвоил основы программирования на собственном горьком опыте: Perl 5. В то время не было бесплатной среды IDE, поэтому это означало вводить коды в Блокнот. , сохранив его, а затем запустите интерпретатор perl.
Я бы сказал, что IDE облегчают изучение основ программирования. Попробуйте сначала поиграть с управляющими структурами и переменными. Скажите на Java:
int a = 5;
for (int i = 0; i < a; i++) {
System.out.println("i is now " + i);
}
По сути, простое изучение управляющих структур и переменных позволит новичку уже начать писать забавные вещи.
Ключевым моментом является то, что у человека, о котором идет речь, должна быть какая-то проблема, которую он хочет решить. Если у вас нет программы, которую вы хотите написать (и чего-то разумного и четко определенного, а не «Я хочу написать следующий Quake!»), Тогда вы не сможете научиться программировать, потому что у вас нет ничего, что могло бы вас мотивировать. . Я имею в виду, что вы можете прочитать книгу и иметь общее представление о синтаксисе и семантике языка, но пока у вас не будет программа, которую вы хотите написать, вы никогда не поймете крапиву.
Если такой импульс существует, то все остальное - лишь мелочи.
Я думаю, что лучший способ изучить любой технический предмет - это научиться решать небольшие, постепенные задачи.
Python легко освоить новым разработчикам. Вы не запутаетесь в особенностях управления памятью и определения типов. Погрузитесь в Python - хорошее руководство для начинающих по программированию на Python. Когда моя сестра хотела научиться программированию, я указал ей на серию книг «Head Start», которые она нашла очень легкими для чтения и понимания. Мне трудно просто начать учить кого-то, потому что у вас нет словарного запаса, который можно было бы использовать с ним. Сначала попросите его прочитать несколько книг или руководств и задать вам вопросы. Оттуда вы можете назначать проекты и оценивать их. Мне сложно преподавать программирование, потому что я выучил его за почти 15 лет работы.
У Проект Эйлер есть ряд интересных математических задач, которые могут стать отличным материалом для начинающего программиста, над которым можно поработать. Проблемы начинаются легко и становятся все сложнее, а Интернет - полный примеров решений на разных языках программирования.
Я бы порекомендовал книгу Чарльза Петцольда Код - Скрытый язык компьютерного оборудования и программного обеспечения как отличное общее введение в то, как работают компьютеры.
В книге содержится много информации (382 страницы), и абсолютному новичку может потребоваться некоторое время, чтобы ее прочитать, но оно того стоит. Петцольду удается объяснить многие из основных концепций компьютеров и программирования, от простых кодов, реле, памяти, процессоров до операционных систем и графического интерфейса пользователя, в очень понятной и приятной форме. Это даст любому читателю хорошее представление о том, что на самом деле происходит за кулисами, когда они пишут код.
Я определенно хотел бы, чтобы это было, когда я только учился программировать!
есть викибук, который очень хорош для изучения Python.
Я не знаю, как выглядят вики-книги для других языков, но я лично изучил python из вики-книги, как это было в феврале 2007 г.
ps - если вы не знакомы с викиучебники, это в основном версия написания книг для Википедии. это сложно описать, но если вы посмотрите несколько книг, вы увидите, как это работает
Я не знаю наверняка, что будет лучше для твоего брата, но знаю, что начал с python. Я играл в различные игры с самого раннего возраста и хотел сделать свою собственную, поэтому мой дядя познакомил меня с python с библиотекой Pygame. В нем много руководств, и все это упрощается (на мой взгляд, НАМНОГО проще, чем openGL). является ограничен 2d, но вы все равно должны начинать с простого.
Мой дядя рекомендовал python, потому что в то время он интересовался им, но я рекомендую его, теперь он достаточно хорошо осведомлен, потому что он прост в изучении, интуитивно понятен (или настолько интуитивно понятен, насколько может быть язык программирования) и прост (но, конечно, не упрощен). .
Лично мне казалось, что базовое программирование просто для обучения программированию в то время до неприличия скучно, но по ходу дела я набрался значительного энтузиазма. Я действительно хотел учиться, чтобы что-то построить, а не просто учиться.
Лучший способ научиться чему-либо - начать с базового. Вы можете найти любой хороший учебник, чтобы объяснить, что такое программирование, память, алгоритмы.
На следующем шаге выберите язык, который зависит только от того, что знает учитель или почему ученик хочет изучать.
Тогда это просто код, код, код. Кодируйте каждый пример прямо из книги. Затем немного измените его, чтобы выполнить другое действие. Обучение программированию - это активный процесс, а не пассивный. Вы не можете просто прочитать «Как программировать на C++ от Dietal», а затем ожидать, что будете писать код на C++, не делая этого активно во время чтения.
Даже если вы опытный программист, напишите код в книге, чтобы узнать что-то новое.
Для начала задайте ему этот вопрос: «Что вы хотите делать со своим компьютером?»
Затем выберите набор действий, соответствующих его ответу, и выберите язык, на котором это можно делать. Тем лучше, если это простая (или упрощенная) среда сценариев (например, Applescript, Ruby, любая оболочка (Ksh, Bash или даже файлы .bat).
Причины:
Хорошим ресурсом для обучения молодых людей является бесплатная электронная книга «Изобретайте свои собственные игры на Python»:
Кое-что учесть ... не все умеют программировать:
Некоторые люди просто не могут пройти мимо таких вещей, как:
А = 1
В = 2
А = В
(эти люди все равно будут думать, что A = 1)
Джефф тоже об этом говорил. Фактически, мой пример находится в ссылке (и объяснен для загрузки).
Это может показаться странным, но я начал писать код с автоматизации задач и анализа данных на моей прежней работе. Это было достигнуто путем записи и изучения кода, созданного макросом Excel. Конечно, этот подход предполагает, что вы можете учиться через VB.
Некоторая дополнительная информация, которую кто-то может прикрепить к более раннему сообщению Джейсона Пратта на Алиса ... в частности, вариант Рассказ Алисы.
Хотя представленное исследование ориентировано на девочек средней школы, вам может показаться интересным белая бумага, написанный Кейтлин Келлехер.
Я использовал со своими детьми CEEBot. Это не питон, но он учит программированию в стиле C / Java в увлекательной игре, посвященной программированию роботов. Он рассчитан на детей 10-15 лет, но действительно хорош.
Ставить перед собой небольшие достижимые цели - один из лучших способов овладеть каким-либо навыком. Программирование ничем не отличается. Python - отличный язык для начала, потому что его легко выучить, очистить и он все еще может выполнять сложные задачи. Python ограничен только вашим воображением.
Один из способов заинтересовать кого-то - предложить им небольшие проекты, которые они могут выполнить за час или около того. Когда я изначально начал изучать питон, я играл в Код Гольф. У них есть много небольших задач, которые помогут научить основам программирования. Я бы порекомендовал просто попробовать решить одну из задач в день, а затем поиграть с изученными концепциями. Вы должны сделать обучение программированию увлекательным, иначе интерес пропадет очень быстро.
Если он заинтересован, я бы не стал беспокоиться о том, чтобы сосредоточиться на играх и т. д. Я бы просто взял ту книгу для начинающих «научи себя x», которую ты собирался бросить, и дал ему, и позволил ему с трудом справиться с ней. Может быть, поговорим об этом после, а потом сделаем еще и еще. После этого я бы спарился с ним по программе, чтобы он мог понять, насколько поверхностными и неубедительными были те книги, которые он читал. Затем я бы начал предлагать ему что-то кодировать для себя. Веб-сайт для отслеживания статистики софтбола или чего-то еще, что могло бы его заинтересовать. В свое время для меня это была база данных по вину.
После этого я начинал заниматься настоящими книгами, дизайном доменов и т. д.
Пакет Python VPython - 3D-программирование для обычных смертных (видеоурок).
from visual import *
floor = box (pos=(0,0,0), length=4, height=0.5, width=4, color=color.blue)
ball = sphere (pos=(0,4,0), radius=1, color=color.red)
ball.velocity = vector(0,-1,0)
dt = 0.01
while 1:
rate (100)
ball.pos = ball.pos + ball.velocity*dt
if ball.y < ball.radius:
ball.velocity.y = -ball.velocity.y
else:
ball.velocity.y = ball.velocity.y - 9.8*dt
Прыгающий мяч VPython http://vpython.org/bounce.gif
Подходит сразу после того, как они выучили базовые концепции. Создание визуальных эффектов - отличный способ мотивировать людей изучать программирование.
Я просмотрел комментарии и, похоже, никто не упомянул Основы программирования из www.CodeBetter.com. Хотя это требует некоторого фундамента, это, безусловно, может стать следующим шагом в процессе обучения.
Как не программист, я нашел книгу «Как программировать» от Pragmatic Programmers очень полезной с элементарной точки зрения. Он доступен и легко читается для новичка. Он не превратит вас из новичка в эксперта, но он подготовит вас к тому, что делать, как только вы выберете язык и возьмете свою первую книгу «Научитесь программировать на (язык здесь)».
Пара других стартовых платформ:
Все они разные и увлекательные, и любой из них может вызвать интерес, необходимый для того, чтобы научить новичка бегать.
LBB
Я бы рекомендовал Подумайте о Python.
Когда он усвоит основы, я предлагаю Ханойская башня в качестве хорошего упражнения. Я рекомендую начать с деревянной игрушки, если она у вас есть; пусть попробует решить проблему сам и систематически опишет свой метод. Покажите ему, где в игру вступает рекурсия. Объясните ему, как количество ходов зависит от количества дисков. Затем позвольте ему написать программу для печати последовательности ходов на выбранном вами языке.
Ваш вопрос во многом зависит от возраста и образования вашего брата, но если он ребенок / подросток, я бы рекомендовал сначала заняться программированием графического интерфейса или графическим программированием (с Canvas и т. д.). Выглядит хорошо, и у вас есть немедленные результаты. Алгоритмы скучны и слишком абстрактны для молодых людей (скажем, до 15 лет).
Когда я начал программировать на ZX Spectrum (мне было около 12 лет), мне нравилось рисовать на экране разные вещи, и это все еще было интересно. Я не узнал о настоящих алгоритмических методах, пока мне не исполнилось 18 лет. Не заблуждайтесь, считая, что такое "простое" программирование - неправильное начало; интерес человека, изучающего это, является наиболее важной частью этого.
Итак, я бы посмотрел на PyKDE, PyGTK, PyQt или Python + OpenGL (в сети, конечно, есть несколько руководств, я знаю несколько чешских, но это вам не поможет :)).
Конечно, если ваш брат старше и имеет образование, близкое к математике, вы можете сразу перейти к алгоритмам и тому подобному.
Очень хороший вводный видео-курс Стэнфордского университета (предварительные знания не требуются):
Научит вас хорошим "методологиям", которые должен знать каждый программист, и некоторому программированию на Java.
Какой бы язык и среду вы ни выбрали, если студент хочет учиться по профессиональным причинам или заниматься «настоящим» программированием (что бы это ни было), попросите его начать с написания своих начальных программ 1 на бумаге и забрать их для работы. Вернитесь с результатами и / или ошибками и попросите их исправить ситуацию на бумаге.
Поначалу это не особенно сложно, чем делать это на экране и нажимать «Беги», но это значительно упростит задачу, когда они начнут открывать для себя чудесный мир ошибок.
1) вкратце, "Hello, World!" - программы типа, которые все еще имеют некоторую логику и / или вычисления, делают это до нескольких программ, в которых могут быть ошибки.
Что бы они ни писали, попросите их выполнить это построчно в отладчике при первом запуске. Пусть им убедитесь сами что делает компьютер. Это избавляет от множества загадок, уменьшает запугивание («о, каждая строка действительно такая простая!») И помогает им изучить навыки отладки и понять, почему распространенные ошибки являются обычными (и почему они являются ошибками).
+1 к лекциям Стэнфордского университета. http://see.stanford.edu/see/courseinfo.aspx?coll=824a47e1-135f-4508-a5aa-866adcae1111
Они простые и качественные, и я могу поручиться за их способность обучать новичков (я один из них).
Я предлагаю "Компьютерные науки отключены" в качестве дополнительного дидактического материала.
«Кто боится C++» Автор: Хеллер
Возможно, стоит попробовать
осторожно - по словам Страуструпа, этот «выстрел» может оторвать вам ногу!
На самом деле я имел в виду это как шутку, но для справки: «C позволяет легко выстрелить себе в ногу; C++ делает это сложнее, но когда вы это делаете, он отрывает вам всю ногу» www2.research.att.com/~bs/bs_faq.html#really-say-that
О, я думал, вы имели в виду, что он сказал что-то конкретное об этой книге.
Microsoft Small Basic - это бесплатная среда программирования на основе .NET, предназначенная для "веселой" учебной среды для начинающих. Этот язык является подмножеством VB.NET и даже содержит объект «Черепаха», знакомый по языку Logo. На сайте есть пошаговое руководство.
Я согласен с superjoe30 выше, но у меня еще недостаточно репутации, чтобы оставлять комментарии.
Я был профессором C.S. в течение 4 лет. Языками были Basic, а затем Pascal, но на самом деле неважно, какой язык.
Самый большой урок, который я усвоил, будучи новым профессором, заключался в том, что какой бы простой я ни считал концепцию, она непроста для новичка. Никогда не бегайте быстрее, чем может идти ваш ученик. Я не могу этого особо подчеркнуть. Идти очень, очень медленно.
Я бы начал с очень простых вещей, прочитал и распечатал, может быть, с простых вычислений, просто чтобы ученик привык что-то вставлять и что-то извлекать. Тогда операторы ЕСЛИ. Затем действительно простые циклы FOR, всегда с точки зрения того, что студент мог бы написать и повеселиться.
Затем я потратил около 3 недель на обучение очень простому типу машинного языка для фальшивой десятичной машины под названием SIMPL, которую вы могли бы пошагово выполнять. Причина для того, чтобы ученик мог видеть, где «резина встречается с дорогой», что компьютеры делают все шаг за шагом, и имеет значение, в каком порядке все происходит. Без этого ученики склонны думать, что компьютер может как бы читать их мысли и делать все сразу.
Затем вернемся к основному. Пару недель на массивах, потому что это большой лежачий полицейский. Затем последовательные файлы, что является еще одним ударом скорости. Под «лежачим полицейским» я подразумеваю, что ученик может плыть, чувствуя себя довольно уверенно, а затем вы поражаете его концепцией, такой как массивы, и они снова полностью теряются, пока вы не облегчите им это.
Затем, обладая этими навыками, я бы попросил их выбрать проект на срок, потому что это то, что делает программирование интересным. Без использования это действительно скучно. Я бы посоветовал различные проекты, такие как игры, бухгалтерские программы, научные программы и т. д. Приятно видеть, как они заводятся. Часто они просили меня о помощи, и это здорово, потому что вы знаете, что они учатся.
Пока они работали над своими проектами, мы продолжали охватывать более сложные методы программирования - поиск, сортировку, объединение, создание простой базы данных и т. д.
Удачи. Преподавание - тяжелая работа, но приносит удовлетворение, когда видишь, как ученики растут.
Книга: Программирование на Java для детей, родителей, бабушек и дедушек (PDF)
У меня нет личного опыта обучения по этой книге, но она кажется приятной, потому что быстро приводит к созданию чего-то видимого и не тратит слишком много времени на синтаксические мелкие детали. Кто-нибудь здесь пробовал использовать эту книгу?
+1 голос, Отлично, за вами подписаться. Спасибо, что поделились
Начните с графики черепахи в Python.
Я бы использовал графику черепахи, которая входит в стандартную комплектацию Python. Это наглядно, просто, и вы можете использовать эту среду для ознакомления со многими концепциями программирования, такими как итерация и вызовы процедур, прежде чем углубляться в синтаксис. Рассмотрим следующий интерактивный сеанс в Python:
>>> from turtle import *
>>> setup()
>>> title("turtle test")
>>> clear()
>>>
>>> #DRAW A SQUARE
>>> down() #pen down
>>> forward(50) #move forward 50 units
>>> right(90) #turn right 90 degrees
>>> forward(50)
>>> right(90)
>>> forward(50)
>>> right(90)
>>> forward(50)
>>>
>>> #INTRODUCE ITERATION TO SIMPLIFY SQUARE CODE
>>> clear()
>>> for i in range(4):
forward(50)
right(90)
>>>
>>> #INTRODUCE PROCEDURES
>>> def square(length):
down()
for i in range(4):
forward(length)
right(90)
>>>
>>> #HAVE STUDENTS PREDICT WHAT THIS WILL DRAW
>>> for i in range(50):
up()
left(90)
forward(25)
square(i)
>>>
>>> #NOW HAVE THE STUDENTS WRITE CODE TO DRAW
>>> #A SQUARE 'TUNNEL' (I.E. CONCENTRIC SQUARES
>>> #GETTING SMALLER AND SMALLER).
>>>
>>> #AFTER THAT, MAKE THE TUNNEL ROTATE BY HAVING
>>> #EACH SUCCESSIVE SQUARE TILTED
При попытке выполнить последние два задания у них будет много неудачных попыток, но неудачи будут визуально интересными, и они быстро научатся, пытаясь выяснить, почему получилось не так, как они ожидали.
как только вы научите их программировать, они могут захотеть научиться разрабатывать программное обеспечение. для этого я думаю, что курс Грега Уилсона Программное обеспечение великолепен ... он также использует Python в качестве студенческого языка.
Я думаю, что Python - действительно отличный язык для начала: :-)
Предлагаю попробовать http://www.pythonchallenge.com/
Он построен как небольшое приключение, и каждое решение связывает вас с новой красивой проблемой.
После решения проблемы вы получаете доступ к симпатичному форуму, где можно поговорить о вашем коде и увидеть, что создали другие люди.
Могу порекомендовать свой проект PythonЧерепаха.
Резюме:
PythonTurtle стремится предоставить способ изучения Python с минимальным порогом. Учащиеся управляют интерактивной оболочкой Python (аналогичной среде разработки IDLE) и используют функции Python для перемещения отображаемой на экране черепахи. Иллюстрированный экран справки знакомит учащихся с основами программирования на Python, демонстрируя, как перемещать черепаху.
Это выглядит так:
альтернативный текст http://www.pythonturtle.com/screenshot.gif
Я считаю, что Python - отличная идея. Я бы дал ему несколько основных заданий, которые он мог бы выполнить самостоятельно, и сказал бы, что любые тупики, в которые он попадет, вероятно, можно разрешить поездкой в Google. Для меня, по крайней мере, самостоятельное решение проблемы всегда помогало ей лучше, чем кто-то, говорящий мне о решении.
Некоторые возможные проекты (в произвольном порядке):
Симулятор подбрасывания монет. Позвольте пользователю ввести желаемое количество попыток подбрасывания монеты. Выполните его и отобразите результаты вместе с процентным соотношением орла или решки.
Сделайте преобразователь температуры с меню, в котором пользователь может выбрать, какой тип преобразования он хочет выполнить. После выбора и выполнения преобразования оно должно вернуться в главное меню.
Вот пример расширенного конвертера с той же идеей: http://pastebin.org/6541
Создайте программу, которая принимает числовой ввод и отображает буквенную оценку, в которую она будет переведена. В конечном итоге он будет оценивать ввод по операторам if и elif, чтобы найти, где он подходит.
Сделайте простую викторину с несколькими вариантами ответов или заполните пустые вопросы. В конце будет показано, как это сделал пользователь. Он может выбрать любые вопросы, какие захочет.
Возьмите некоторое (предположительно большое) количество пенни и конвертируйте его в более крупный номинал. Например, 149 пенни = 1 доллар, 1 четверть, 2 копейки и 4 пенни.
Создайте простой менеджер списков. Уметь добавлять / удалять списки и добавлять / удалять записи в этих списках. Вот пример менеджера рождественских списков: http://pastebin.org/6543
Создайте программу, которая будет строить, а затем проверять, образуют ли введенные числа магический квадрат (с двумерным массивом). Вот пример кода, но он действительно должен распечатывать квадрат на каждом шаге, чтобы показать, где находится пользователь с точки зрения построения квадрата: http://pastebin.org/6544
Я бы также посоветовал поработать с xTurtle или другим графическим модулем, чтобы смешать вещи и не дать ему наскучить. Конечно, это во многом практическое программирование, а не сценарии, для которых многие люди действительно будут использовать python, но приведенные мной примеры в значительной степени напрямую взяты из того времени, когда я учился с помощью python, и это отлично сработало для меня. Удачи!
Попробуйте найти копию Почему (острый) путеводитель по Ruby в Интернете. Исходный сайт оффлайн, но я уверен, что есть несколько зеркал. Это не обычное руководство по программированию; это придает уникальный (и забавный) вид изучению нового языка, который может подойти вашему другу. Не говоря уже о том, что Ruby - отличный язык для изучения.
Используйте аналогии из реального мира и воображаемых персонажей, чтобы научить их программированию. Например, когда я учу людей переменным, контрольным утверждениям и т. д.
Обычно я начинаю с примера калькулятора. Я говорю: представьте, что у вас есть коробка для каждой переменной, и у вас есть 10 карточек с числами от 0 до 9, напечатанными на них. Скажем, что в коробке можно хранить по одному картону, и аналогичные способы объяснить, как работают элементы программирования.
И акцент на том, как работает каждый оператор ... например, простой оператор '=' всегда сначала вычисляет правую часть в одно значение. и поместите это значение в поле с именем "num_1" (которое является именем переменной)
Это было очень и очень эффективно, поскольку они могут очень быстро представить себе течение.
Просто развлекайся!
Удивительно, но Scala может оказаться самым простым, если вы попробуете Коджо
Если вашему брату нравятся головоломки, я бы порекомендовал Python Challenge. Я бы не стал использовать его как формальный инструмент обучения в уроках один на один, но он может это сделать, когда вы не вместе, чтобы бросить вызов самому себе и повеселиться.
Академическая Земля предлагает ссылки на бесплатные курсы компьютерных наук от ведущих университетов. У них есть раздел, посвященный началу компьютерных наук. Языки, изучаемые на начальных курсах, различаются:
Я не знаю, упоминал ли кто-нибудь об этом здесь, но вы можете проверить Зед Шоу's Изучите Python трудным путем
Надеюсь это поможет
Пройдя несколько бесплатных электронных книг, я обнаружил, что лучшая книга для обучения программированию - это Head First Programming, изданная O'Reily Press. Он использует Python в качестве языка и дает вам программы для работы с самого начала. Все они интереснее, чем «Hello World». Он стоит денег, которые я на него потратил, и, поскольку его уже давно нет, вы можете найти более дешевую бывшую в употреблении копию на Ebay или Amazon.
Спросите своего брата, есть ли что-то, что он хотел бы сделать в программе, или изобрести для него проект, который, по вашему мнению, его заинтересует.
Что-то, где он может узнать, каким должен быть результат, и указать ему на материалы (в Интернете или в печати), относящиеся к проекту. Если он переходит на Python или программирует `` холодно '', проявите терпение, пока он работает над пониманием основ, таких как синтаксис, ошибки, область видимости, и будьте готовы отойти в сторону и позволить ему бежать и делать свои собственные ошибки, когда вы начинаете видеть свет лампочка горит над его головой.
Я очень рекомендую Программирование на Python: введение в информатику, 2-е издание от Джон Зелле. Он предназначен для начинающих и имеет дело с семантика программирования. После прочтения вы сможете гораздо быстрее освоить другие языки благодаря семантическому и синтаксическому подходу Zelle. Проверьте это!
Я не понимаю, почему это нужно закрывать. По крайней мере, 295 пользователей сочли этот вопрос (и 92 ответа) достаточно полезным, чтобы проголосовать за него, а 290 пользователей считают его одним из своих любимых. Вопрос привел к очень полезной совокупности учебных ресурсов. На самом деле это не привело к «спорам» или «дебатам», но действительно привело к множеству отличных советов о том, как учесть один из сложных «человеческих факторов» в программировании. Я думаю, что закрытие такого вопроса является драконовским и вредным для сообщества StackOverflow.