Я студент Университета Южной Флориды, который разочарован образовательной средой в программе Computer Science. Прямо сейчас я беру "Дизайн программы". Я должен научиться организовывать мой исходный код в функции и модули, чтобы сделать мои программы читабельными и поддерживаемыми; вместо этого я изучаю массивы и рекурсию в C. В следующем семестре я должен взять «Объектно-ориентированное проектирование», которому учат на C ++ ( содрогание ).
Два года назад я влюбился в программирование, и с тех пор я учился столько, сколько мог. Перспектива использования другого класса C ++ утомила меня почти до слез. По этой причине я решил создать клуб программирования, чтобы встречаться с такими же амбициозными студентами, изучать новые языки, обсуждать темы разработки программного обеспечения и работать с другими студентами-разработчиками.
Однако я начинаю понимать, что, возможно, нет других студентов, которые поделились бы моим опытом разработки программного обеспечения. Это не из-за недостатка мотивации, а из-за отсутствия возможностей: я знаю только один другой класс программирования («Языки программирования») и никаких классов по разработке программного обеспечения в реальном мире. Все остальные имеют опыт написания тривиальных скриптов на C и C ++.
Я понял, что если я хочу работать с другими студентами-разработчиками программного обеспечения, мне придется обучать их самостоятельно. Теперь я планирую сделать клуб загрузочным лагерем по разработке программного обеспечения, обучая участников тому, как разрабатывать программное обеспечение с использованием современных инструментов и языков. Очевидно, что начать неофициальный курс разработки программного обеспечения - это грандиозная задача со многими возможными подходами. Мой вопрос к вам, дорогой читатель,
Какой у меня план атаки?
Нужно ли мне
- сам читал лекции в клубе, пытаясь сбалансировать работу клуба с домашней работой?
- попросить преподавателей CS преподавать по темам в рамках своей компетенции, которые могут быть менее актуальны для членов?
- попытаться найти сочувствующего, опытного разработчика в школе или за ее пределами, которая может разделить мою рабочую нагрузку?
- показывать видео лекции (из MIT OpenCourseWare , Google Tech Talks и т. д.)?
- проводить практические семинары по программированию?
- назначить домашнее задание?
- делать что-то еще?
источник
Ответы:
Честно говоря, все ваше отношение касается меня. Вы даже не собрали группу, и уже предполагаете, что будете только тем, у кого есть какие-либо знания, и тем, кто должен решить, что будет делать группа.
Лучше всего собрать первоначальную группу и провести коллективное обсуждение того, что они хотят сделать. То, что вы лично хотите сделать, не имеет значения с точки зрения того, что группа хочет сделать. Решив, что делать без участия других членов группы до первой встречи, вы окажетесь высокомерным идиотом, с которым я не хотел бы работать добровольно. Таким образом, вы убили бы группу до того, как она началась.
источник
Поскольку все в вашем клубе приходят добровольно, вам нужно сделать это интересным и мотивирующим. И домашняя работа не совсем мотивирует.
Обучать кого-либо сложно, но почему бы не попробовать учить в непринужденной обстановке с целью в конце? По сути, сначала вы собираете всех вместе и придумываете групповой проект и язык. Проект должен быть интересным и уметь показать видимый прогресс, но не слишком сложно. Как только вы освоите язык, вы научите их основам (синтаксис, пакеты / пространства имен, классы, статическая / динамическая типизация и т. Д.). Затем вы предоставляете им ресурсы (книги, онлайн-учебники, онлайн-документацию), простой способ овладеть вами и определенную часть проекта для работы. Каждый человек затем работает над проектом в свое свободное время, обращаясь к документации и вам по мере необходимости.
В чем преимущество этого процесса?
Единственный способ проверить, работает ли он, - это попробовать.
источник
Глядя на блок-схему курса для вашего специалиста , вы действительно не понимаете, чего ожидать в разных классах по информатике.
Занятия, о которых вы говорите, являются вводными, которые знакомят учащихся с различными базовыми понятиями в области кодирования. Похоже, «Концепции программирования» - введение в профессию с однонедельным обзором всех основных областей информатики без фактического кодирования. Оттуда, это НОРМАЛЬНО, чтобы иметь вводный курс по C, и еще один вводный курс по C ++ - это НОРМАЛЬНЫЙ для специальности «Компьютерные науки». Вы можете входить в программу с некоторым опытом программирования, но большинство людей этого не делают. Программа должна учитьтакие понятия, как рекурсия, и как писать классы, и перегрузку операторов, и шаблоны и все такое (не говоря уже об учении о переменных, циклах for, операторах if и т. д.), поэтому существуют два класса, в основном предназначенные для научит вас программировать на каком-то языке программирования. И у них обычно есть вводящие в заблуждение названия, которые делают классы вашего университета. Классы, которые обучают нужному уровню организации, обычно называются «Разработка программного обеспечения» или «Шаблоны проектирования». Первое, как правило, является обязательным, а второе - факультативным (может быть, на уровне выпускника), но оба могут быть факультативными.
Есть академические и отраслевые дебаты о том, сосредотачивается ли учебная программа Computer Science на организации программного обеспечения так, как она должна, должна ли реорганизоваться основная специализация, и являются ли Computer Science и Software Engineering разными специальностями, но на данный момент ваша программа Computer Science НОРМАЛЬНАЯ ,
(И повесить там - в другом семестре или два, вы будете получать более сложные классы , которые научат вас , что вы еще не преподавали себя.)
источник
А как насчет соревнований по программированию? Даже что-то вроде Perl Golf (или PHP Golf), где у вас работают люди (или команды), чтобы решить проблему, используя как можно меньше кода? Это отличный способ узнать больше о языках, и конкурсы всегда делают вещи интересными.
Конечно, вы должны предлагать больше, чем просто соревнования, но их довольно легко настроить, и я всегда получал от них удовольствие.
источник
Вы правы, что вам нужна какая-то структура; Вы хотите заставить себя и других учиться, а не просто сидеть и болтать о программном обеспечении / скулить о паршивом выборе курса. Но я не уверен, что нужно относиться к этому как к классу с вами, потому что его учитель - это путь; ты еще не эксперт, и ты тоже в этом, чтобы чему-то научиться.
Как насчет организации клуба вокруг программных проектов? Не некоторые программы для домашних игрушек, но что-то, что вы думаете, вы могли бы найти полезным. (Обратите внимание, что «незначительно полезный» по-прежнему считается «полезным»; вы пытаетесь учиться на собственном опыте, но не нашли стартап. :-)) Если в клубе достаточно людей для нескольких команд, сформируйте несколько команд. Команда решает, какой язык она хочет использовать, какие спецификации, как разделить труд и т. Д. И т. Д., И работает над этим индивидуально в свое время. Затем на вашей еженедельной встрече в клубе вы обсуждаете, как это происходит лицом к лицу, где находятся контрольно-пропускные пункты, изящные вещи, которые вы узнали, и т. Д.
Мне также очень нравится идея пригласить приглашенных лекторов, будь то преподаватели, профессионалы или видео, которыми вы или кто-то другой, по вашему мнению, стоит поделиться. Таким образом, вы можете организовать ночные встречи, как это:
Это займет вечер и наполнит его добродетелью. С надеждой.
Несмотря на это, я желаю вам удачи с этим проектом. Когда вы возьмете его с ног, я надеюсь, что вы вернетесь сюда и расскажете нам, как это работает.
источник
Групповой проект - отличная идея. Особенно, если проект может помочь университету или вашим одноклассникам.
В колледже я присоединился к группе, которая работала над проектами для студентов.
Самым популярным проектом стал виртуальный тур по кампусу на 360 градусов.
Мы приобрели необходимое оборудование и начали фотографировать вокруг кампуса. Затем мы создали веб-сайт для размещения тура, выяснили хостинг и разместили его на веб-сайте университета для будущих студентов. Этот проект охватывал не только задачи программирования, но и заинтересовал непрограммистов.
Попробуйте определить новый веб-сайт или приложение, которое хотели бы использовать не только вы, но и все в кампусе. Я думаю, что легче и веселее учиться, если у вас есть цель.
источник
Если это будет внеклассное занятие, не выполняйте домашнюю работу. Это просто отстой.
Вы, вероятно, могли бы получить что-то классное, просто запустив группу github и разместив постеры / электронные письма в своей школе (я полагаю, что дети в наши дни тоже используют Facebook и Twitter? Может быть, это хорошая идея, чтобы достичь этих целей). Когда вы получаете группу из 5-6 человек, которые действительно заинтересованы вместе, выбирайте проект и просто работайте над ним.
Если нет интереса, довольно просто присоединиться к проекту с открытым исходным кодом, если вы достаточно опытны. Просто, как разветвить то, что вас интересует, на github, и начать общаться с разработчиками.
Преимущество, которое у вас есть, чего не было в предыдущем поколении, заключается в том, что совсем нетрудно подключиться к программистам на вашем уровне и на вашем языке, хотя они очень разнородны в географическом отношении. И я не имею в виду просто отправить электронное письмо. Skype / iChat / Ventrilo упрощают голосовые конференции, а такие инструменты, как git / mercurial (и связанные страницы проекта в Интернете), позволяют легко кодировать группу, даже если вы находитесь на противоположных сторонах Атлантики. На самом деле нет никаких причин не писать код в наши дни, если вы этого хотите.
Наконец, не заводите привычку судить людей по языкам, которые они знают / хотят знать. Легко попасть в ловушку, когда вы единственный Smalltalker в стаде людей, которые думают, что C ++ представляет собой предел программирования, но это не принесет вам много друзей, и это даст вам предвзятость против определенных инструментов. Я встречал хакеров, которые намного превосходят меня в навыках и опыте, которые использовали LISP, Perl и C в одном проекте . Люди на вершине кучи профессионального разработчика, как правило, не заботятся о том, на каком уровне находятся их инструменты, пока они выполняют свою работу.
источник
Это похоже на возможность общения, я уверен, что есть ряд студентов, интересующихся программированием с подобным уровнем опыта / обучения ... вы просто не находите их ...
Вы посещали один из Code Camps (бесплатное обучение для разработчиков) в районе Тампа-Бэй или присоединились к одной из местных групп программистов?
Оба эти ресурса предоставят вам возможности для работы в сети. И вместо того, чтобы чувствовать, что вы должны обучать своих сокурсников, вы сможете пригласить своих друзей вместе с вами и затем обсудить, что было освещено.
Вы также получите доступ к людям, которые программируют как карьеру и могут получить представление о том, какие ситуации могут возникнуть в «реальном мире».
Изучив эти локальные ресурсы, вы все равно можете обнаружить, что у вас есть возможность поделиться своими знаниями с помощью собственных презентаций, и это здорово. Обмен тем, что вы узнали, с группой пользователей или выступлением докладчика в лагере кодов - это хороший способ получить обратную связь о том, что вы узнали, и открывает для вас возможность узнать больше.
Я вырос в районе Тампа-Бэй и посетил множество бесплатных мероприятий, спонсируемых Microsoft, ваша местная группа пользователей также должна иметь информацию о том, как принять участие в этих мероприятиях.
Ну, это был длинный ответ ...
Следующий Code Camp в Тампе состоится 13 ноября 2010 года, согласно веб-сайту tampacodecamp.
Вот ссылка на вашу локальную группу пользователей INETA / программирование:
http://www.tampadev.org/
(Я новичок в этой группе и смог включить только одну ссылку.)
источник
Как насчет поиска проекта с открытым исходным кодом (или более одного), в который ваша группа заинтересована внести свой вклад?
Я думаю, что самая большая проблема, с которой вы, вероятно, столкнетесь, заключается в том, что, хотя написание кода доставляет удовольствие, все, что окружает администратора и т. Д., Может быстро превратить его в болезненный опыт. Если вы можете найти существующий проект с открытым исходным кодом, вы должны, по крайней мере, иметь часть инфраструктуры поддержки на месте.
Открытый исходный код поможет вам освоить некоторые полезные привычки, и, хотя вы будете немного закулисны по сравнению с некоторыми из участников, у вас будет одно важное преимущество перед другими людьми - вы все будете в одном месте и сможете вести беседы с членами вашей команды, что, как правило, является одной из самых больших проблем в работе сообщества открытого исходного кода ...
источник