Як я можу завантажувати спільноту з розробки програмного забезпечення у своїй школі?


14

Я студент університету Південної Флориди, який засмучений навчальним середовищем в програмі "Комп'ютерні науки". Зараз я беру "Дизайн програми". Я повинен навчитися впорядковувати свій вихідний код у функції та модулі, щоб зробити мої програми читабельними та ремонтопридатними; натомість я дізнаюся про масиви та рекурсії в C. У наступному семестрі я повинен взяти "Об'єктно-орієнтований дизайн", який викладається через C ++ ( здригається .)

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

Однак я починаю розуміти, що не може бути інших студентів, які поділяться моїм досвідом розробки програмного забезпечення. Це не через відсутність мотивації, а через відсутність можливостей: я знаю лише про один інший клас програмування ("Мови програмування") і немає класів з розробки програмного забезпечення в реальному світі. Всі інші мають лише досвід написання тривіальних сценаріїв на C та C ++.

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

Який у мене план нападу?

Повинен я

  • лекція клубу сама, намагаючись збалансувати роботу клубу з домашніми завданнями?
  • попросити викладачів CS викладати теми, що знаходяться в межах їхньої експертизи, які можуть бути менш ніж стосуються членів?
  • спробуйте знайти співчутливого, досвідченого розробника всередині школи або поза нею, який би міг розділити моє навантаження?
  • показувати відео-лекції (від MIT OpenCourseWare , Google Tech Talks тощо)?
  • проводити практичні семінари з програмування?
  • призначити домашнє завдання?
  • робити щось інше?

3
Чому ти здригається в навчанні ООП через C ++? Вам просто неприємно спілкуватися з мовами високого рівня? Якщо так, то як ви розраховуєте вивчити OOP?
Кам

4
@Evan: Якщо чесно, якщо ви вважаєте, що C ++ є мовою низького рівня, то курс C ++ був би ідеальним для вас. Ви багато чого навчитесь Спочатку для початківців C ++ може здатися низьким, тому що він пропонує функції низького рівня, але користуватися ними точно не доведеться. Насправді більшу частину часу ви будете використовувати STL та всі його функції високого рівня OOP.
Cam

10
C ++ є низьким рівнем порівняно з, скажімо, Java, Ruby, Javascript, C # і т. Д. Це високий рівень порівняно з багатьма іншими мовами. Здається, це щось безглуздо.
Рибний прикорм

2
@fishtoaster: Я б не сказав, що c ++ є низьким рівнем порівняно з java та c #. Це настільки ж високий рівень, як принаймні ця мова (про іншу я мало знаю). Є лише додаткова перевага в тому, що він також може бути низьким рівнем, щоб отримати найкраще в обох країнах.
n1ckp

1
@ n1ck: Вказівники, звичайно, (я знаю, що у C # є їх, але їх використання рідкісне), ручне управління пам'яттю, відсутні лямбда (не впевнені, яке ім'я C # дає, python використовує лямбда), немає рідного передбачення, набагато менший стандарт бібліотека, частіші подвійні подвійні перекомпіляції, необхідні для різних платформ і т. д. Вам не потрібно, щоб збірка була нижчого рівня, ніж ці дві.
Мача

Відповіді:


20

Відверто кажучи, все ваше ставлення стосується мене. Ви навіть не зібрали групу разом, і вже ви припускаєте, що будете лише тим, хто має знання, і тим, хто повинен вирішити, що буде робити група.

Найкраще ставитись до того, щоб об'єднати інтимну групу і, як групу, думати штурм того, що вони хочуть робити. Те, що ви особисто хочете зробити, не має значення з точки зору того, що група хоче зробити. Вирішуючи, що робити без участі інших членів групи до першої зустрічі, ви зіткнетесь як зарозумілий ідіот, з яким я не хотів би працювати добровільно. Таким чином, ви вбили б групу ще до її початку.


Ти абсолютно правий; Мені не доведеться самостійно формулювати та реалізовувати загальний генеральний план клубу. Тим не менш, мені потрібні ідеї для діяльності клубу та зустрічей, щоб обговорити з рештою клубу.
Еван Кроске

5

Оскільки всі у вашому клубі приходять добровільно, вам потрібно зробити це цікавим та мотивуючим. І домашнє завдання не зовсім мотивує.

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

У чому перевага цього процесу?

  • Люди не нудьгують, слухаючи вас чи когось іншого, гуляючи про щось про кожну зустріч
  • Люди вчаться самостійно навчатись, дуже важливого навику реального світу
  • Ви не переймаєте себе, оскільки ви не єдиний ресурс знань
  • Вам не потрібно знати всю мову, перш ніж ви зможете її викладати, оскільки вам потрібно лише ознайомити їх з мовою. І коли їм потрібно буде про щось запитати вас, ви можете швидко дослідити це. Однак вам потрібно бути трохи попереду всіх інших, оскільки для деяких речей потрібно знати, що на 5 кроків попереду
  • Ви створюєте щось, що мотивує людей

Єдиний спосіб зрозуміти, чи працює він - спробувати його.


Груповий проект був би хорошою ідеєю, якби я зміг утримати членство в клубі нижче десяти студентів. Минулого цього команди починають ставати непростими. Однак я не можу отримати підтримку університету, якщо заборонити студентам вступити до клубу, і я впевнений, що більше 10 студентів будуть зацікавлені приєднатися до клубу. У нашому хакерському клубі завжди є більше тридцяти студентів на своїх щотижневих зборах.
Еван Кроске

1
Тож більше одного проекту? Спробуйте знайти спільні інтереси серед усіх членів групи. Спочатку зустрічі опитуйте особисті інтереси, а потім спробуйте придумати проекти, що обертаються навколо цих проектів?
Кріс

4

Дивлячись на схему курсу вашого основного , ви насправді не розумієте, чого очікувати в різних класах спеціальності «Комп’ютерна наука».

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

Існує наукова та галузева дискусія щодо того, чи орієнтована навчальна програма з інформатики на організацію програмного забезпечення настільки, наскільки це має бути, чи слід реорганізувати основні, і чи є комп’ютерна наука та програмне забезпечення - це різні напрямки, але поки що ваша програма з інформатики є НОРМАЛЬНОЮ .

(І повісити там - в іншому семестрі або два, ви будете отримувати більш складні класи , які навчать вас , що ви ще не викладали себе.)


Я не задоволений "нормальним". Я хочу залишити коледж з освітою світового класу з розробки програмного забезпечення, і я готовий (важко) працювати, щоб досягти цього. Я мав намір перейти на MIT замість USF, тому я використовую програму MIT Computer Science and Engineering як свою ідеальну CS-освіту.
Еван Кроске

@Evan @Ken heh. Тоді свій коледж я вважав би не нормальним. Вступ до комп’ютерних додатків (тобто, як ви використовуєте Word) -> Комп'ютерна логіка та алгоритми (тобто діаграма потоку та булева логіка. Ніяких алгоритмів до цього насправді немає) -> Програмування на C ++ (синтаксис, OOP, основи) -> Розширений Програмування на C ++ (алгоритми, рекурсія, покажчики) -> Програмування на Java (те саме, що і базовий C ++) -> Програмування в Коболі (Ще не досі, але бог, я його
бояться

1

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

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


1

Ви праві, що вам потрібна якась структура; ви хочете змусити себе та інших вчитися, а не просто сидіти навколо, дбаючи про програмне забезпечення / сукаючись про невдалий вибір курсу. Але я не впевнений, що ставитись до цього як до класу як до свого вчителя - це шлях; ти ще не експерт, і ти в цьому теж щось навчився.

Як щодо організації клубу навколо програмних проектів? Не кілька іграшкових програм для домашніх завдань, а те, що, на вашу думку, може бути корисним. (Зверніть увагу, що "незначно корисний" все ще кваліфікується як "корисний"; ви намагаєтеся вчитися на практиці, не знайшли стартапу. :-)) Якщо в клубі є достатньо людей для декількох команд, сформуйте кілька команд. Команда вирішує, якою мовою вона хоче користуватися, якими є специфікації, як слід розподілити працю тощо тощо, і працює над цим індивідуально у свій час. Потім на своєму щотижневому засіданні клубу ви обговорюєте, як це відбувається віч-на-віч, де стоять блокпости, акуратні речі, які ви дізналися тощо.

Мені також дуже подобається ідея залучення запрошених викладачів, будь то викладачі, професіонали чи відео, якими ви чи хтось інший вважає, що варто поділитися. Отже, ви можете організувати нічну зустріч, як це:

  1. Гість лекції на якусь тему програмного забезпечення від того, хто це добре знає.
  2. Q & A / seb-сесія на лекції (сподіваємось, що лектор бере участь, але просто серед вас для відео).
  3. Розділіться на проектні команди, робіть проект.

Це займе вечір і наповнить його сповненим знаннями доброти. Сподіваємось.

Незважаючи на це, бажаю вам удачі з цим проектом. Коли ви вийдете з землі, я сподіваюся, що ви повернетесь сюди і розкажете, як це працює.


1

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

Я приєднався до групи ще в коледжі, який працював над проектами для студентів.
Найпопулярнішим проектом була 360-градусна віртуальна екскурсія по кампусу.
Ми придбали необхідне обладнання та почали фотографуватись по кампусу. Тоді ми створили веб-сайт для розміщення екскурсії, розібралися в хостингу і розмістили його на веб-сайті університету для майбутніх студентів. Цей проект охоплював більше, ніж просто завдання програмування, а також зацікавив непрограмістів.

Спробуйте визначити новий веб-сайт чи програму, якими ви не хотіли б користуватися, а й усі в кампусі. Я думаю, що легше і веселіше вчитися, якщо ти маєш на увазі мету.


Мені дуже подобається ця ідея; Є багато способів, щоб мій новий клуб міг доповнити або покращити ІТ-системи коледжу. З цікавості де ти пішов до коледжу?
Еван Кроске

Університет Кларіона в штаті Пенсільванія. Я навіть ходив одного разу на інтерв'ю, де інтерв'юер згадував, що використовував тур для пошуку коледжу сина. Це було дуже круто.
Тодд Бамбаргер

1

Якщо це буде позакласною діяльністю, не займайтеся домашнім завданням. Це просто кульгаво.

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

Якщо немає інтересу, приєднатися до проекту з відкритим кодом досить смішно, якщо ви досить кваліфіковані. Простий, як розмовляти щось, що вас цікавить у Github, і починати спілкуватися з розробниками.

Перевага, яку ви не мали попереднього покоління, полягає в тому, що підключитися до програмістів на вашому рівні та на вашій мові зовсім не складно, при цьому дуже географічно розрізнені. І я не маю на увазі просто надіслати електронний лист. Skype / iChat / Ventrilo полегшують голосові конференції, такі інструменти, як git / mercurial (та пов'язані сторінки проекту в Інтернеті), дозволяють легко кодувати як групу, навіть якщо ви знаходитесь на протилежних сторонах атлантики. Дійсно немає причин не кодувати соціально в ці дні, якщо це те, що ви хочете зробити.

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


1

Це звучить як можливість для мереж, я впевнений, що є кілька студентів, зацікавлених у програмуванні з подібним рівнем досвіду / навчання ... ви їх просто не знаходите ...

Ви відвідували один із кодексів коду (безкоштовне навчання, пов'язане з розробниками) в районі Тампа-Бей, або приєдналися до однієї з місцевих груп користувачів програмування?

Обидва ці ресурси забезпечать вам можливості мереж. І замість того, щоб відчувати, що вам потрібно навчати своїх однокурсників, ви зможете запросити своїх друзів разом із вами, а потім обговорити те, що було висвітлено.

Ви також отримаєте доступ до людей, які програмують як кар’єру, і зможете зрозуміти, які ситуації ви, можливо, зіткнетеся в "реальному світі".

Вивчивши ці місцеві ресурси, ви все ще можете виявити, що ви можете поділитися своїми знаннями, роблячи власні презентації, що чудово. Спільний доступ до того, що ви дізналися з групою користувачів або в якості доповідача презентації кодового табору, - це хороший спосіб отримати зворотній зв'язок про те, що ви дізналися, і також відкриєте для того, щоб дізнатися більше.

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

Ну, це була відповідь на довгу хвилю ...

Наступний кодовий табір у Тампа відбудеться 13 листопада 2010 року, згідно з веб-сайтом tampacodecamp.

Ось посилання на локальну групу користувачів INETA / програмування:

http://www.tampadev.org/

(Я новачок у цій групі і зміг включити лише одне посилання.)


1

Як щодо пошуку проекту з відкритим кодом (або декількох), до якого ваша група зацікавлена?

Я думаю, що найбільшим завданням, з яким ви, швидше за все, зіткнетеся, є те, що під час написання коду це весело, все оточуючий адміністратор тощо може швидко перетворити це на болісний досвід. Якщо ви можете знайти існуючий проект з відкритим кодом, у вас повинен бути принаймні деякі рамки підтримки.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.