Кто может научиться программировать? [закрыто]

17

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

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

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

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

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

Бет Уайтцель
источник
@ Job- Спасибо, это замечательный момент, и я чувствую себя намного лучше.
Бет Уайтзел
2
@job: выступая в качестве специалиста по психологии, сейчас программирую машины ЯМР, я могу это подтвердить.
Мэтт Эллен

Ответы:

33

Хорошо, по многочисленным просьбам ... Пусть это выяснит свободный рынок. Знаете, 95% специалистов по психологии заканчивают тем, что занимались чем-то другим. Не все, кто имеет степень бакалавра или младшего специалиста, заканчивают программированием, но они делают лучших менеджеров, аналитиков, менеджеров проектов, чем те, кто не имеет. Не несите вес мира на своих плечах. Степень CS это просто лист бумаги. Те, у кого есть математика, физика, химия, ученые степени в области биологии, становятся программистами, и не каждый, имеющий степень CS, становится программистом. Без миллионов детей, стремящихся стать лучшими бейсболистами, у нас не было бы таких великих звезд. Система саморегулирующаяся.

работа
источник
Я согласен в некоторой степени, но я также должен был поддерживать код, написанный людьми со степенями в области физики, математики и машиностроения, которые считали себя программистами. То, что кто-то делает что-то для своей работы, не означает, что он делает это хорошо ...
Джоэл С.
7
Я видел много плохого кода, написанного студентами CS. Я видел удивительный код, написанный людьми из математики, физики или кого-то еще. Существует практически нет корреляции между тем, что именно вы изучали, и качеством вашего кода.
Джокинг
1
Кроме того, иди биологии!
Джокинг
11

Хотя я думаю, что ответ Иова важен для понимания, такой же ответ можно применить к мельнице степени. «Я заплатил 199,95 долларов, а теперь дайте мне степень бакалавра».

Развеять студенческое тело в соответствии со стандартом того, чем являются «настоящие программисты», на самом деле не ваша работа. Обучение студентов программированию / дизайну (предположительно?). Если вы не изменили свое мышление в колледже, вы потратили впустую свое время там. Ваша цель - показать любому студенту, который проявляет интерес, что становление программистом меняет их мышление в лучшую сторону. Вы делаете это косвенно, показывая им ...

  1. что такое программирование на самом деле и ...
  2. что они могут это сделать.

Мы делаем это неправильно

Существует обширное исследование, которое показывает, что 95% наших программ для колледжей преподают программирование / CS ужасно. Средняя программа CS начинается с

  • Семестр базового программирования на C ++ / Java / C #, который проводит 16 недель, обучая немногим более сложным вещам, чем «это цикл for». Аналогия может быть, если физический факультет провел семестр, изучая греческий алфавит, прежде чем начать кинематику.
  • Второй семестр новичка входит в основные структуры данных и, как правило, полностью отстает от 1/3 до половины студентов.
  • Второй курс проводится в какой-то комбинации сборок, структур данных, алгоритмического анализа, курса этики и, возможно, вашего первого тематического курса. В этом году вы, как правило, теряете еще половину поступающих студентов.
  • Юниоры и старшеклассники попадают в классы с такими именами, как «Графика», «Сеть I и II», «Операционные системы», и это первый действительно интересный материал, который студенты могут увидеть.

Почти все остальное лучше

Практически любой эксперимент улучшает ситуацию, измеряемую с точки зрения понимания студентами тем И зачисления в программы И количества выпускников. Некоторые из экспериментов, которые я видел в журналах ACM CSE ...

  • Сборка от очень простых теоретических конечных автоматов до сборки и до C, заканчивающаяся C # / Java в вашем старшем году обучения. Основное внимание уделяется медленному ползанию по слоям абстракции.
  • Выбор очень «простого» языка, чтобы сосредоточить студентов на структурах данных и абстракции. К концу первого года я видел хорошие результаты, когда студенты писали довольно сложные веб-приложения в виде схемы. (Это была модифицированная вики, которая должна была пропустить текст страницы по схеме, прежде чем показывать ... вроде как)
  • Ориентация начинающих студентов на определенную область (сетевое взаимодействие) и обучение каждой структуре / утверждению Java как «в стороне». Студенты второй недели пингуют почтовый сервер, чтобы увидеть список своих электронных писем, финальный проект - это простой IM-клиент. Основной упор делается на том, чтобы показать студентам, как программисты работают в одной части света.
  • Некоторые программы ориентированы на робототехнику. Новичок играет с мозговыми штурмами Lego ... второкурсники используют C-подобный API, младшие и старшие работают вместе с ME и EE в рамках сотрудничества между кампусами для создания довольно сложных систем.
  • Одна программа фокусирует студентов на чтении кода для первого полугодия. Они анализируют код в системе X11 для обучения управлению потоком и базовому синтаксису в течение 8 недель или около того, прежде чем даже начинать писать код. Их первые программы - небольшие исправления, чтобы немного изменить поведение.

В каждом из этих экспериментов наблюдалось значительное улучшение начального интереса учащихся, передачи знаний и удержания до выпуска. Некоторые из них больше подходят для определенных условий колледжа, чем другие, но если вы следуете структуре, описанной в параграфе выше, спросите себя: «Буду ли я оставаться в течение первых двух лет этой программы?»

jkerian
источник
Я согласен с вами в том, что мы должны сосредоточиться на том, чтобы показать им, что такое программирование и как оно может изменить ваш мыслительный процесс независимо от того, что вы делаете потом. Хорошие мысли.
Бет Уайтзел
2

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

Так же, как изучение английского или любого другого языка, вы должны начать с изучения синтаксиса (алфавита), а затем перейти к грамматике и другим конструкциям. Количество требуемого времени варьируется в зависимости от сложности языка. Кодирование на языках более высокого уровня, таких как SQL, Python почти похоже на написание английского.

NAYaN
источник
2

Несколько аспектов помогут, я думаю -

  • Профессионалы, которые осведомлены о современном реальном мире. Если они могут говорить о современных технологиях и о том, как они вписываются в теоретические основы, это гораздо важнее для студентов, не знакомых с историей, чем разборки VAXen без ссылки на текущие технологии.

  • Стажировки при поддержке кафедры. Если отдел может гарантировать по крайней мере 2 года оплачиваемой работы с технологическими компаниями, то есть отличный стимул остаться.

Честно говоря, современные студенты, изучающие информатику, гораздо более счастливы, чем те, кто живет 5-10 лет назад. Возможность приобрести бюджетную систему, а затем установить виртуальную машину и изучать несколько языков, операционных систем и т. Д. Бесплатно - это такой фактор, который трудно переоценить.

Конечно, такие необычные люди, как Хоппер и Кнут, учились без всяких глупостей. Гений выйдет.

Пол Натан
источник
Хотя идея прекрасна ... два года гарантированной оплачиваемой стажировки, к сожалению, нереально. Да, есть платные стажировки, но большинству выпускников в настоящее время повезло, и им часто приходится соглашаться на неоплачиваемую работу. Это может быть другим в других штатах. Я думаю, что вы правы в том, что у них больше возможностей. Они могут внести свой вклад во многие другие проекты с открытым исходным кодом, чем было несколько лет назад.
Бет Уайтзел
@BitOff: я никогда не слышал о неоплачиваемой стажировке CS.
Пол Натан
Без шуток? Это должно быть локализовано.
Бет Уайтзел
1

Создайте подготовительную площадку для потенциальных, успешных студентов за пределами вашей программы, чтобы снизить риск. Это может включать спонсирование классов AP CompSci в местных средних школах для упреждающего отделения пшеницы от плевел. Если это окажется слишком сложным, попробуйте внедрить местные главы DECA (или создайте новую) с помощью программы, ориентированной на CS, в отделениях средней школы или колледжей. И наоборот, вы покажете студентам-предпринимателям, ищущим управленческие навыки, возможно, с нереализованным потенциалом в области КС, новый путь для реализации их деловых устремлений в вашей академической среде.

Трэвис Дж
источник
Да, я полностью согласен с тем, что нам нужно больше заниматься внедрением CS в более раннем возрасте, чем в колледж. Я знаю, что большинство вузов предлагают один или два продвинутых компьютерных класса, которые могут перейти на язык программирования, но я не думаю, что этого достаточно. Я часто думал, что если бы вы могли преподавать простой, понятный ребенку язык для учеников 4-6 классов, вы бы захватили их интерес в нужном возрасте. Я впервые выучил основы, когда мне было 8 или 9 лет, и, хотя мне потребовалось еще около 10 лет, чтобы по-настоящему освоить его, у меня остались отличные воспоминания о «программировании».
Бет Уайтзел
1

Я бы сказал, что ключ к пониманию различных уровней таких программ:

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

Колледжи. Они, как правило, более ориентированы на карьеру, и именно здесь ключевым моментом является обратная связь от отрасли и связи компаний с колледжами. Рассмотрение мест размещения через 6–12 месяцев после окончания учебного заведения может быть метрикой, используемой для определения того, насколько хорошо люди учатся после окончания учебы, поскольку ключевым вопросом является то, рассматривал ли кто-то свое время и деньги, чтобы получить такое образование как стоящее. Обновление программы, скорее всего, будет более частым, поскольку программы здесь могут быть немного короче, например, программы бакалавриата с отличием в университете, как правило, составляют 4 года, а программы обучения в колледже - 18-24 месяца. Таким образом, проблема заключается в том, чтобы эта часть имела связи с компаниями, чтобы люди могли познакомиться с работой и посмотреть, что работает или не работает для них.

JB King
источник