о преподавании программирования
Apr. 23rd, 2012 03:01 pmВ реддите обсуждают закрытие факультета CS (Computer Science) во Флориде и один обмен мнениями там заставил меня задуматься. Один из участников написал, что в Америке на факультеты CS поступает очень мало абитуриентов в сравнении с другими факультетами, после которых реально найти работу. Более того, даже это сравнительно малое число абитуриентов завышено, если учесть два обстоятельства. Во-первых, студенты в CS чаще других переходят на другие факультеты или бросают учебу (30-50% drop rate). Во-вторых, из тех, кто остается и заканчивает степень большинство и так уже умели программировать к тому времени, как они записались. Из чего следует вывод, что мы не умеем на самом деле преподавать программирование. Либо человек сам научился, и только дополняет свое умение формальным образованием, математикой, алгоритмами итд., либо не научился, и тогда университет его (чаще всего) не научит.
А другой собеседник ему возражает и говорит: нет, это совсем не так. Да, многие студенты CS приходят уже умея программировать на одном или даже нескольких языках, но далеко не все, и нет корреляции между умением до учебы и успехом впоследствии.
Вот я и думаю, кто прав, и как это чаще бывает? Большинство знакомых мне программистов занимались этим в детстве или школе еще до высшего образования. Очень мало я знаю людей, которые пришли в университет с нулевым знанием программирования. Из таких еще меньше - тех, кто закончили учебу и работают по специальности; есть такие, но выборка крохотная, не знаю, насколько это нормально и обычно.
Как вы думаете? Может, вы знаете много людей, которые учили программирование с нуля в университете, или сами такой человек, и поделитесь мнением/опытом? Может ли университет научить программированию?
А другой собеседник ему возражает и говорит: нет, это совсем не так. Да, многие студенты CS приходят уже умея программировать на одном или даже нескольких языках, но далеко не все, и нет корреляции между умением до учебы и успехом впоследствии.
Вот я и думаю, кто прав, и как это чаще бывает? Большинство знакомых мне программистов занимались этим в детстве или школе еще до высшего образования. Очень мало я знаю людей, которые пришли в университет с нулевым знанием программирования. Из таких еще меньше - тех, кто закончили учебу и работают по специальности; есть такие, но выборка крохотная, не знаю, насколько это нормально и обычно.
Как вы думаете? Может, вы знаете много людей, которые учили программирование с нуля в университете, или сами такой человек, и поделитесь мнением/опытом? Может ли университет научить программированию?
no subject
Date: 2012-04-23 12:08 pm (UTC)Так-то у нас в школе, например, 2 одиннадцатых класса из 4-х, или даже три, не помню, учили "программировать", на паскале. Некоторые даже смогли выучить циклы. Нельзя же их назвать умеюшими программировать в том смысле, в котором усеет программировать человек, которого возьмут на работу программистом.
no subject
Date: 2012-04-23 12:21 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 12:11 pm (UTC)no subject
Date: 2012-04-24 05:51 am (UTC)Если математике в каждой школе учат, и на матфак просто не берут НАСТОЛЬКО необразованных, то программированию в большинстве школ НЕ учат, поэтому университеты вынуждены брать на себя заботы школьных учителей (если брать только умеющих, пул абитуриентов сильно уменьшается).
Я убедился, что программистами потом работают не только те, кто программировал-как-дышал до поступления, так и те, у кого никакого опыта не было. Была бы голова на плечах.
С точностью до этого, на CS-факультете ожидается (не от всех - от кого-то одно, от кого-то - другое)
- владение теми концепциями и приёмами, которым в школе учить рано,
- навык работы в разной архитектуре,
- навык промышленной разработки,
- обучение математике, алгоритмам и пр.,
- обучение менее математическим предметам (базы данных и пр.),
- наконец, обучение не только программистов, но и информатиков.
Примерно вот так: http://mit.spbau.ru/ (я там отвечаю только за теоретическое отделение, но тем не менее) :-)
(no subject)
From:no subject
Date: 2012-04-23 12:11 pm (UTC)К слову, в нашем вузе программировать почти не учили. Три года у нас была высшая математика в различных ее проявлениях. БОльшая часть приобретенных по программированию знаний - самостоятельное изучение, основанное на собственном энтузиазме или на необходимости писать курсовую/диплом.
И по моему опыту работы программистом, учеба после окончания вуза не заканчивается, а только начинается.
no subject
Date: 2012-04-23 09:13 pm (UTC)(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 12:11 pm (UTC)Т.е., у меня были студенты, которые учили язык практически с нуля и схватывали все идеи на лету; некоторые из них работают сейчас программистами. Один-два человека в год из класса в 50-100 человек. Каждый такой случай производит впечатление исключения: эти люди, видимо, не начали программировать раньше только потому, что им никогда не случалось столкнуться с такой идеей. Если человек не, скажем так, предрасположен к программированию изначально, научить такого человека программировать почти невозможно.
no subject
Date: 2012-04-23 12:15 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 12:13 pm (UTC)Я заканчивал факультет кибернетики МИФИ, программировать умел со средних классов школы (в активе на момент поступления было 5 языков программирования). IMHO, высшей школе обязан не столько практическими навыками разработки софта, столько теоретической подготовкой в области численных методов, статистики, моделирования, надёжности и создания больших программных систем. Многое потом очень пригодилось.
Среди одногруппников были те, кто программиировать раньше не умел. Часть из них научилась и даже работает по специальности.
no subject
Date: 2012-04-23 12:18 pm (UTC)Какие еще есть специальности, где [если это верно] большинство студентов, успешно заканчивающих степень, главное занятие умели неплохо делать и до учебы? Скажем, во врачи не идут ан масс люди, и так умеющие лечить. Подозреваю, что студенты-архитекторы не умели проектировать здания до начала учебы. Итд.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:какие еще специальности
From:no subject
Date: 2012-04-23 12:14 pm (UTC)Научили в huji как миленькую, потом 15 лет программировала, да и сейчас наверное могу, если сильно надо. На втором курсе пошла работать, и со товарищи такими же студентами написала программу для дапей-захав, с нуля практически, которая до сих пор им книжки клепает (сложная, интерактивная, с базой данных и непростым алгоритмом расположения фигни на странице и проч). Ну, потом ещё много всякой фигни писала, но главное - да, универ может. Но не любой.
no subject
Date: 2012-04-23 12:15 pm (UTC)Думаю, дело не в том, что в университетах не умеют учить программистов, а в том, что толковые студенты начинают практиковаться самостоятельно, вне зависимости от школьной программы.
no subject
Date: 2012-04-23 12:16 pm (UTC)Но я не рассчитываю, что университет научит меня программировать. Я хочу получить от него методологию обучения, базовые знания по математике, основы теории программирования. А конкретным техническим навыкам придется учиться самостоятельно.
Мне кажется, что и в других специальностях так же.
no subject
Date: 2012-04-23 12:27 pm (UTC)(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 12:16 pm (UTC)Она всю жизнь считала (и продолжает) себя полным куку в математике, но при этом оказалась талантливым программистом, и сейчас (7 что ли лет она работает) - уверена, что это дело всей её жизни, её прет от того что она делает)
она работает сейчас тимлидом на одного из крупнейших провайдеров, отвечает за разработку сайта его со всеми там сервисно-пользовательскими плюшками.
в чистом виде пример того, как научили человека программированию с чистого листа и весьма успешно и несмотря на то, что никаких не было до этого предпосылок (она вообще хотела в школе всякой модой и дизайном заниматься, пошла учиться только потому что надо было срочно зарабатывать деньги и это была область в которой в то время можно было научиться джаваскрипту или чему-то подобному и быстренько начать работать простенько - а теперь бесконечно счастлива, что так звезды встали, и она занимается делом в которое влюблена по уши, а на работе все думают что им с неё невероятно повезло)
я училась в универе в россии на информатике, нас там тоже учили программировать помимо прочего - на паскале и на си, тоже с нуля.
но это было совсем давно и я по специальности не работаю)
no subject
Date: 2012-04-23 12:17 pm (UTC)no subject
Date: 2012-04-23 12:20 pm (UTC)no subject
Date: 2012-04-24 09:49 am (UTC)(no subject)
From:no subject
Date: 2012-04-23 12:21 pm (UTC)Лет в 12 я пробовал писать на паскале, дальше простейших if и while не ушёл, ничего интересного не написал и забросил это дело. Концепцию указателя осознать не смог. Учился я в гуманитарном лицее, мы учили английский и читали петрарку при свечах. Поступил, однако, на техническую специальность.
В институте двухсеместровые курсы по C и C++ были одними из немногих объективно хороших - их читали "for fun" двое ребят, выпустившиеся за несколько лет до того, и работавшие где-то программистами. Преподавание было не самое системное, но очень толковое - программировать я научился. С остальным образованием было всё плохо, причитающийся мне computer science я добираю сейчас на coursera, как ни смешно это звучит.
Институт я бросил не закончив. Последние шесть лет я perl-программист.
no subject
Date: 2012-04-23 10:53 pm (UTC)Потому что когда то этот признак довольно четко делил людей в профессии случайных - и прирожденных. Можешь в голове крутить их - или не получается, тяжело, неудобно, сложно, ну их нафиг. Киких то машинок в уме не хватает - и все. Я сам про них узнал, уже работая, когда познакомился с первым ассемблером, еще до Си - но там без них работать просто нельзя. А в фортране, алголе, пл/1 вполне без них обходился, хотя они там были (да и есть) .
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From:как это - не осознали?
From:(no subject)
From:no subject
Date: 2012-04-23 12:21 pm (UTC)no subject
Date: 2012-04-23 09:46 pm (UTC)no subject
Date: 2012-04-23 12:21 pm (UTC)либо есть, либо нет ((( мне хочется высшее программиста только из за диплома. Нашел одного более менее толкового паренька, сейчас у меня работает, но опять же не программист конечно, но в компьютерах разбирается, только шум стоит. Т.е. если бы захотел мог бы. И я начал замечать, что есть люди которые могут работать с компьютерами вообще, не в смысле открыть программу, ввести текст, сохранить и т.п. а на уровне администратора или программиста.
В общем единичные случаи.
С другой стороны хорошо ) конкурентов меньше ;)
no subject
Date: 2012-04-23 12:21 pm (UTC)no subject
Date: 2012-04-23 12:24 pm (UTC)"нет корреляции между умением до учебы и успехом впоследствии"
Это вообще для всех наук справедливо.
no subject
Date: 2012-04-23 09:46 pm (UTC)no subject
Date: 2012-04-23 12:25 pm (UTC)Но из тех, кому компьютер был доступен, но до университета программировать им было неинтересно, я и правда хороших программистов не видел. Не от того, наверное, что университет не может программировать научить, а от того, что если нет склонности в 16 лет, то в 20 она и не появится.
no subject
Date: 2012-04-23 12:52 pm (UTC)no subject
Date: 2012-04-23 12:25 pm (UTC)no subject
Date: 2012-04-23 12:26 pm (UTC)Сейчас я занимаюсь другими вещами, но эти навыки мне очень помогают.
Я наблюдал, как многие мои товарищи учились программировать очень хорошо, а многие из тех, кто пришел уже с некоторыми знаниями, расслаблялись и в итоге через некоторое время не могли справиться с заданиями.
no subject
Date: 2012-04-23 12:27 pm (UTC)Для начала неплохо бы дать определение того, что именно есть программирование. Потому что на факультетах CS вообще говоря мало учат программированию как таковому. Учат теории, учат отдельным элементам ремесла (т.е. каким-то языкам, каким-то прикладным областям вроде графики и т.п.), но практически не учат инженерным аспектам (обще-инженерным дисциплинам, процессам, управлению производством). В результате, массово выпускаются недоучки-полуремесленники. В итоге имеем то что имеем - массу дипломированных трубоукладчиков. Их университеты выпускать умеют.
Людей же думающих они зачастую только тормозят или калечат.
Исключений мало. Даже лучшие школы вроде Беркли или Стенфорда дают в лучшем случае теоретическую основу, базу, на которой приходится много чего надстраивать уже в промышленности.
И это если рассматривать undergrad. Что же касается graduate schools, то там вообще практического программирования нет и быть не может. Считанные программы вообще имеют хоть какое-то отношение к прикладному программированию - остальные занимаются прицельно производством постдоков и профессоров. Система замкнута на себя и нафиг не интересуется внешним миром.
no subject
Date: 2012-04-23 01:05 pm (UTC)А внешнему миру - только подай готовенькое :) Вкладываться надо, внешний мир
(no subject)
From:(no subject)
From:no subject
Date: 2012-04-23 12:29 pm (UTC)no subject
Date: 2012-04-23 12:34 pm (UTC)no subject
Date: 2012-04-23 04:37 pm (UTC)Вот поэтому у нас в лавке и проблема с кадрами. "Программистов"-то полно, а тех, кто может что-то толковое сделать... Даже не так - тех, кто хотя бы _хочет_ программировать нетривиальные вещи, очень мало. Приколы как раз совершенно не нужны, строгое понимание того, что делаешь ты и что делается в системе, вот это важно. А это как раз теория и математика.
no subject
Date: 2012-04-23 12:36 pm (UTC)Хотя, когда приходил, был вполне продвинут на общем фоне.
К слову сказать, те, кто стал продвинутыми программерами - институт не смогли закончить. Ибо в период 1994-2000 года учиться было нечему. Можно было познакомиться с правильными людьми, вписаться в нужные команды, ну и качать скилл.
Очень не хватало базового образования на Си (так и не смог отключить мозги от Паскаля) и тупой усидчивости. А это университетом не лечилось.
no subject
Date: 2012-04-23 12:37 pm (UTC)- много кода
- мого сложного кода
- много чужого кода
- отлаживать сложный/чужой код
- оптимизировать по самое-самое
- писать хорошие тесты, вообще тесты писать
- работать с кучей всевозможных инструментов (для исходников, для разработки, отладки, тестирования, для букашек, ...)
- автоматизировать все процессы, которые не стоит делать руками
- вести проекты, делать оценки, договариваться, принимать решения, ...
- писать толковую документацию/комментарии
- работать в команде (отдельные навыки для малых и больших команд, плоских и не очень)
- работать с клиентами
- ...
Это уже люди обычно на работе и постигают.
no subject
Date: 2012-04-23 12:39 pm (UTC)- Абсолютно справедливо для любой професии.
no subject
Date: 2012-04-23 03:20 pm (UTC)Например нейрохирурги, вряд ли уже в школе научились делать операции, а в медицинский университет пошли так... добрать формальных знаний.
(no subject)
From:(no subject)
From:(no subject)
From:(no subject)
From: