Как я могу загрузить сообщество разработчиков программного обеспечения в моей школе?

14

Я студент Университета Южной Флориды, который разочарован образовательной средой в программе Computer Science. Прямо сейчас я беру "Дизайн программы". Я должен научиться организовывать мой исходный код в функции и модули, чтобы сделать мои программы читабельными и поддерживаемыми; вместо этого я изучаю массивы и рекурсию в C. В следующем семестре я должен взять «Объектно-ориентированное проектирование», которому учат на C ++ ( содрогание ).

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

Однако я начинаю понимать, что, возможно, нет других студентов, которые поделились бы моим опытом разработки программного обеспечения. Это не из-за недостатка мотивации, а из-за отсутствия возможностей: я знаю только один другой класс программирования («Языки программирования») и никаких классов по разработке программного обеспечения в реальном мире. Все остальные имеют опыт написания тривиальных скриптов на C и C ++.

Я понял, что если я хочу работать с другими студентами-разработчиками программного обеспечения, мне придется обучать их самостоятельно. Теперь я планирую сделать клуб загрузочным лагерем по разработке программного обеспечения, обучая участников тому, как разрабатывать программное обеспечение с использованием современных инструментов и языков. Очевидно, что начать неофициальный курс разработки программного обеспечения - это грандиозная задача со многими возможными подходами. Мой вопрос к вам, дорогой читатель,

Какой у меня план атаки?

Нужно ли мне

  • сам читал лекции в клубе, пытаясь сбалансировать работу клуба с домашней работой?
  • попросить преподавателей CS преподавать по темам в рамках своей компетенции, которые могут быть менее актуальны для членов?
  • попытаться найти сочувствующего, опытного разработчика в школе или за ее пределами, которая может разделить мою рабочую нагрузку?
  • показывать видео лекции (из MIT OpenCourseWare , Google Tech Talks и т. д.)?
  • проводить практические семинары по программированию?
  • назначить домашнее задание?
  • делать что-то еще?
Эван Кроске
источник
3
Почему вы содрогаетесь от того, что ООП обучают на С ++? Вам просто неудобно иметь дело с языками высокого уровня? Если да, то как вы собираетесь изучать ООП?
Cam
4
@Evan: Честно говоря, если вы думаете, что C ++ является языком низкого уровня, то курс C ++ был бы идеальным для вас. Вы многому научитесь. На начальном этапе C ++ может показаться низкоуровневым, поскольку он предлагает низкоуровневые функции, но вам определенно не нужно их использовать. Фактически большую часть времени вы будете использовать STL и все его высокоуровневые функции ООП.
Cam
10
C ++ является низкоуровневым по сравнению, скажем, с Java, Ruby, Javascript, C # и т. Д. Он является высокоуровневым по сравнению со многими другими языками. Кажется что-то бессмысленное обсуждение.
Fishtoaster
2
@fishtoaster: я бы не сказал, что c ++ является низкоуровневым по сравнению с java и c #. Это настолько же высокий уровень, по крайней мере, на этом языке (я не знаю много о другом). Есть только дополнительное преимущество в том, что он также может быть низкого уровня, так что вы получаете лучшее из обоих миров.
n1ckp
1
@ n1ck: указатели как само собой разумеющиеся (я знаю, что в C # они есть, но их использование редко), ручное управление памятью, отсутствие лямбда-выражения (не знаю, какое имя им дает C #, python использует лямбда-выражения), нет родного foreach, гораздо меньший стандарт библиотека, более частое переключение битов, перекомпиляция, необходимая для разных платформ, и т. д. Вам не нужно быть сборкой, чтобы быть ниже уровня этих двух.
Мача

Ответы:

20

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

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

HLGEM
источник
Вы абсолютно правы; Мне не нужно самостоятельно формулировать и реализовывать генеральный план для клуба. Тем не менее, мне нужны идеи для клубных мероприятий и встреч, чтобы обсудить с остальной частью клуба.
Эван Кроске
5

Поскольку все в вашем клубе приходят добровольно, вам нужно сделать это интересным и мотивирующим. И домашняя работа не совсем мотивирует.

Обучать кого-либо сложно, но почему бы не попробовать учить в непринужденной обстановке с целью в конце? По сути, сначала вы собираете всех вместе и придумываете групповой проект и язык. Проект должен быть интересным и уметь показать видимый прогресс, но не слишком сложно. Как только вы освоите язык, вы научите их основам (синтаксис, пакеты / пространства имен, классы, статическая / динамическая типизация и т. Д.). Затем вы предоставляете им ресурсы (книги, онлайн-учебники, онлайн-документацию), простой способ овладеть вами и определенную часть проекта для работы. Каждый человек затем работает над проектом в свое свободное время, обращаясь к документации и вам по мере необходимости.

В чем преимущество этого процесса?

  • Люди не скучают, слушая тебя или кого-то другого, дронирующего о чем-то на каждой встрече
  • Люди учатся самообучению, это очень важный навык в реальном мире.
  • Вы не преувеличиваете себя, потому что вы не единственный источник знаний
  • Вам не нужно знать весь язык, прежде чем вы сможете его преподавать, поскольку вам нужно только познакомить их с языком. И когда они должны спросить вас о чем-то, вы можете быстро исследовать это. Однако вам нужно быть немного впереди всех остальных, поскольку некоторые вещи требуют знания того, что на 5 шагов впереди.
  • Вы создаете что-то, что мотивирует людей

Единственный способ проверить, работает ли он, - это попробовать.

TheLQ
источник
Групповой проект был бы хорошей идеей, если бы я мог сохранить членство в клубе ниже десяти студентов. После этого команды начинают становиться громоздкими. Однако я не могу получить университетскую поддержку, если не позволю студентам вступить в клуб, и я уверен, что более 10 студентов будут заинтересованы в вступлении в клуб. В нашем хакерском клубе всегда более тридцати студентов на еженедельных встречах.
Эван Кроске
1
Так больше чем один проект? Попробуйте найти общие интересы среди всех членов группы. Первая встреча, опрос личных интересов, а затем попытаться придумать проекты, вращающиеся вокруг этих проектов?
Крис
4

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

Занятия, о которых вы говорите, являются вводными, которые знакомят учащихся с различными базовыми понятиями в области кодирования. Похоже, «Концепции программирования» - введение в профессию с однонедельным обзором всех основных областей информатики без фактического кодирования. Оттуда, это НОРМАЛЬНО, чтобы иметь вводный курс по C, и еще один вводный курс по C ++ - это НОРМАЛЬНЫЙ для специальности «Компьютерные науки». Вы можете входить в программу с некоторым опытом программирования, но большинство людей этого не делают. Программа должна учитьтакие понятия, как рекурсия, и как писать классы, и перегрузку операторов, и шаблоны и все такое (не говоря уже об учении о переменных, циклах for, операторах if и т. д.), поэтому существуют два класса, в основном предназначенные для научит вас программировать на каком-то языке программирования. И у них обычно есть вводящие в заблуждение названия, которые делают классы вашего университета. Классы, которые обучают нужному уровню организации, обычно называются «Разработка программного обеспечения» или «Шаблоны проектирования». Первое, как правило, является обязательным, а второе - факультативным (может быть, на уровне выпускника), но оба могут быть факультативными.

Есть академические и отраслевые дебаты о том, сосредотачивается ли учебная программа Computer Science на организации программного обеспечения так, как она должна, должна ли реорганизоваться основная специализация, и являются ли Computer Science и Software Engineering разными специальностями, но на данный момент ваша программа Computer Science НОРМАЛЬНАЯ ,

(И повесить там - в другом семестре или два, вы будете получать более сложные классы , которые научат вас , что вы еще не преподавали себя.)

Кен Блум
источник
Я не удовлетворен "нормальным". Я хочу покинуть колледж с мировым классом образованием в разработке программного обеспечения, и я готов к работе (жесткой) для достижения этой цели. Я намеревался перейти в MIT вместо USF, поэтому я использую программу MIT по информатике и инженерии в качестве своего идеального образования в области CS.
Эван Кроске
@Evan @ Кен хе. Тогда мой колледж я бы посчитал ненормальным. Введение в компьютерные приложения (т. Е. Как вы используете Word) -> Компьютерная логика и алгоритмы (т. Е. Потоковая диаграмма и логическая логика. На самом деле никаких алгоритмов к ней нет) -> Программирование на C ++ (синтаксис, ООП, основы) -> Дополнительно Программирование на C ++ (алгоритмы, рекурсия, указатели) -> Программирование на Java (то же самое, что и на базовом C ++) -> Программирование на Cobol (пока не дошло, но,
боже,
1

А как насчет соревнований по программированию? Даже что-то вроде Perl Golf (или PHP Golf), где у вас работают люди (или команды), чтобы решить проблему, используя как можно меньше кода? Это отличный способ узнать больше о языках, и конкурсы всегда делают вещи интересными.

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

Колин О'Делл
источник
1

Вы правы, что вам нужна какая-то структура; Вы хотите заставить себя и других учиться, а не просто сидеть и болтать о программном обеспечении / скулить о паршивом выборе курса. Но я не уверен, что нужно относиться к этому как к классу с вами, потому что его учитель - это путь; ты еще не эксперт, и ты тоже в этом, чтобы чему-то научиться.

Как насчет организации клуба вокруг программных проектов? Не некоторые программы для домашних игрушек, но что-то, что вы думаете, вы могли бы найти полезным. (Обратите внимание, что «незначительно полезный» по-прежнему считается «полезным»; вы пытаетесь учиться на собственном опыте, но не нашли стартап. :-)) Если в клубе достаточно людей для нескольких команд, сформируйте несколько команд. Команда решает, какой язык она хочет использовать, какие спецификации, как разделить труд и т. Д. И т. Д., И работает над этим индивидуально в свое время. Затем на вашей еженедельной встрече в клубе вы обсуждаете, как это происходит лицом к лицу, где находятся контрольно-пропускные пункты, изящные вещи, которые вы узнали, и т. Д.

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

  1. Гостевая лекция на тему программного обеспечения от человека, который хорошо это знает.
  2. Q & A / gab сессия на лекции (надеюсь, с участием лектора, но только между собой для видео).
  3. Разделитесь на проектные команды, делайте проектные вещи.

Это займет вечер и наполнит его добродетелью. С надеждой.

Несмотря на это, я желаю вам удачи с этим проектом. Когда вы возьмете его с ног, я надеюсь, что вы вернетесь сюда и расскажете нам, как это работает.

BlairHippo
источник
1

Групповой проект - отличная идея. Особенно, если проект может помочь университету или вашим одноклассникам.

В колледже я присоединился к группе, которая работала над проектами для студентов.
Самым популярным проектом стал виртуальный тур по кампусу на 360 градусов.
Мы приобрели необходимое оборудование и начали фотографировать вокруг кампуса. Затем мы создали веб-сайт для размещения тура, выяснили хостинг и разместили его на веб-сайте университета для будущих студентов. Этот проект охватывал не только задачи программирования, но и заинтересовал непрограммистов.

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

Тодд Бамбаргер
источник
Мне действительно нравится эта идея; Есть много способов, которые мой новый клуб может добавить или улучшить ИТ-системы колледжа. Из любопытства, куда ты ходил в колледж?
Эван Кроске
Университет Кларион в Пенсильвания. Я даже однажды пошел на собеседование, где интервьюер упомянула, что использовала тур для поиска колледжа ее сына. Это было очень круто.
Тодд Бамбаргер
1

Если это будет внеклассное занятие, не выполняйте домашнюю работу. Это просто отстой.

Вы, вероятно, могли бы получить что-то классное, просто запустив группу github и разместив постеры / электронные письма в своей школе (я полагаю, что дети в наши дни тоже используют Facebook и Twitter? Может быть, это хорошая идея, чтобы достичь этих целей). Когда вы получаете группу из 5-6 человек, которые действительно заинтересованы вместе, выбирайте проект и просто работайте над ним.

Если нет интереса, довольно просто присоединиться к проекту с открытым исходным кодом, если вы достаточно опытны. Просто, как разветвить то, что вас интересует, на github, и начать общаться с разработчиками.

Преимущество, которое у вас есть, чего не было в предыдущем поколении, заключается в том, что совсем нетрудно подключиться к программистам на вашем уровне и на вашем языке, хотя они очень разнородны в географическом отношении. И я не имею в виду просто отправить электронное письмо. Skype / iChat / Ventrilo упрощают голосовые конференции, а такие инструменты, как git / mercurial (и связанные страницы проекта в Интернете), позволяют легко кодировать группу, даже если вы находитесь на противоположных сторонах Атлантики. На самом деле нет никаких причин не писать код в наши дни, если вы этого хотите.

Наконец, не заводите привычку судить людей по языкам, которые они знают / хотят знать. Легко попасть в ловушку, когда вы единственный Smalltalker в стаде людей, которые думают, что C ++ представляет собой предел программирования, но это не принесет вам много друзей, и это даст вам предвзятость против определенных инструментов. Я встречал хакеров, которые намного превосходят меня в навыках и опыте, которые использовали LISP, Perl и C в одном проекте . Люди на вершине кучи профессионального разработчика, как правило, не заботятся о том, на каком уровне находятся их инструменты, пока они выполняют свою работу.

Inaimathi
источник
1

Это похоже на возможность общения, я уверен, что есть ряд студентов, интересующихся программированием с подобным уровнем опыта / обучения ... вы просто не находите их ...

Вы посещали один из Code Camps (бесплатное обучение для разработчиков) в районе Тампа-Бэй или присоединились к одной из местных групп программистов?

Оба эти ресурса предоставят вам возможности для работы в сети. И вместо того, чтобы чувствовать, что вы должны обучать своих сокурсников, вы сможете пригласить своих друзей вместе с вами и затем обсудить, что было освещено.

Вы также получите доступ к людям, которые программируют как карьеру и могут получить представление о том, какие ситуации могут возникнуть в «реальном мире».

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

Я вырос в районе Тампа-Бэй и посетил множество бесплатных мероприятий, спонсируемых Microsoft, ваша местная группа пользователей также должна иметь информацию о том, как принять участие в этих мероприятиях.

Ну, это был длинный ответ ...

Следующий Code Camp в Тампе состоится 13 ноября 2010 года, согласно веб-сайту tampacodecamp.

Вот ссылка на вашу локальную группу пользователей INETA / программирование:

http://www.tampadev.org/

(Я новичок в этой группе и смог включить только одну ссылку.)

Джефф
источник
1

Как насчет поиска проекта с открытым исходным кодом (или более одного), в который ваша группа заинтересована внести свой вклад?

Я думаю, что самая большая проблема, с которой вы, вероятно, столкнетесь, заключается в том, что, хотя написание кода доставляет удовольствие, все, что окружает администратора и т. Д., Может быстро превратить его в болезненный опыт. Если вы можете найти существующий проект с открытым исходным кодом, вы должны, по крайней мере, иметь часть инфраструктуры поддержки на месте.

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

DanW
источник