Pull to refresh

Comments 120

Мистер жополиз, это вы?
Скорее всего, это был троллинг ирония.
Идея хорошая,
но все-таки, думаю, в начале нужно было начать из лабораторных,
на которых они научились бы писать «правильный» код (читабельный, оптимизированный и т.д.),
а потом пробовать какой-нибудь проект…
Хотя как было сказано:
«Попалась мне группа очень толковых студентов»,
насколько — можно только догадываться.
Эм… Мне вот стыдно за код, который я писал на лабах и получал за него «Отлично». Там были просто ужасные мена переменных и методов, иногда они снятся мне в кошмарах. Об оптимизациях я уже и не говорю…
А вот когда ты выходишь на работу, и ты не знаешь что такое системы контроля версий, ТЗ и прочие термины и понятия, вот тогда реально становится грустно.
И только спустя время понимаешь что все твои отметки «Отлично» до одного места…
Я это понял после того, как училка принимала лабы с подгонкой под входные данные.
Надеюсь это прикол и такого никогда не было в реальном мире
Как-то давно я пролистывал тетрадку по математике младшего брата. Обнаружил, что в решении одного уравнения сокращается икс, при этом не делается никаких замечаний на то, что этот самый икс может быть нулем. То есть мало того, что теряют решение, так еще это просто плохая практика.

К слову, я был где-то в старших классах. Написал письмо его учительнице. В ответ получил какую-то бредовую отписку и много нелицеприятных отзывов. Брату (он двоюродный) от нее тоже досталось, поэтому его родители меня попросили больше так не делать. У него и так неважно дела шли в школе, тем более по математике.
Надеюсь, таких учителей можно было бы расстреливать, если бы такое было в реальном мире.
С прямой трансляцией во все школы, дабы перенимали передовой опыт.
В том и смысл «классического образования» — дать базу. Грустно, когда программисты ничего решить не могут, кроме как подгонять фреймворки.

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

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

Сразу видны и минусы в посте. Прямо сказано, что интерпретатор написал один человек. Но учить надо всех? Не все получили нужный и одинаковый опыт. Поэтому и нужна база
И еще. Не будет толку от образования, пока преподавателям на айтишных кафедрах не поднимут зарплату до уровня ВЫШЕ средней по рынку чем работникам в этой сфере. Не будет толковый программист преподавать там за копейки. К сожалению, только такие как в посте хорошие преподаватели и получаются — те, у которых преподавание хобби, но они имеют помимо этого нормальный заработок. Это большая редкость.

А все остальные случаи плачевны. Преподаватели сами ничего не умеют и на реальную работу их не возьмут.

Имея опыт в программировании, можно и процесс обучения адекватнее строить. Даже на лабораторных занятиях. Введите, например, практику взаимного ревью кода. Перед проверкой кода преподавателем, проходит проверка кода студентами. Просто магически подействует на обучение. И читаемость станет появляться. И студентов чувство стыда перед товарищами начнет подгонять писать лучше. И быстро перениматься будут хорошие практики кодирования.
UFO just landed and posted this here
тажа фигня, большая часть времени на ненужную бумажную работу тратилась
Да-да, а кроме кода, я, например, еще и аккуратно оформлял печатный отчет по лабе: текст – антиквой, код – моноширинным, блок схемы – гротеском, буллиты, отступы, заголовки, подзаголовки. Оказалось, что это тоже никому это не интересно. Еще и не соответствует ЕСКД!
У меня принтер был с полем 6 мм… Так пришлось перепечатывать без рамки и руками её чертить. А шрифты я сразу гостовские взял.
Для начала — надо научиться писать код вообще. Обучение «правильности написания» и чистоте кода как раз приходят в больших проектах, а не в лабораторках. Когда видишь чужой код, и не можешь в нем разобраться, понимаешь как стоит писать чтобы другой человек тебя понял, плюс советы «со стороны» о том как можно/стоит улучшить, оптимизировать, переделать какой-либо кусок.
Лабораторки хороши лишь в самом начале, когда в программировании человек где-то между нулем и единицей. Дальше — только практика, и чем больше — тем лучше, и чем больше и сложнее проект — тем быстрее человек разовьется.
когда-то книга анализ программного кода на примере проектов OpenSource мне очень помогла.

Думаю можно поставить хорошую лабораторную по оптимизации участков кода OpenSource или даже сделать курсовик на базе реального проекта.
Только кому это надо… У преподов уже написаны планы лекций и лабораторных и все как по маслу… Все обкатано, а сделать что-то полезное не только студентам — это влом. Возможно в этом виновата система образования или «маленькая» относительно среднего программиста з.п.

Программа Google Summer, как раз нацелена на развитие OpenSource проектов силами студентов и аспирантов.

У меня было желание пойти преподавать или организовать курс практических лекций… только времени уйдет больше, а денег увы… Так что это и осталось идеей. Может быть когда-нибудь (на пенсии)
У меня была подобная мысль. Но я примерял на себе вот что. Когда я сам учился программировать, то читал умные книжки. Пытался усвоить умные советы. Но в голове они укладывались с трудом. Когда я набрался немного опыта написания кода, который был не самый оптимальный и трудно поддерживаемый, то умные советы мне стали казаться еще умнее. Когда читаешь толковые книги или статьи и вспоминаешь свои ошибки, то советы укладываются в голове куда лучше.
И эти проекты для студентов был отличным полигоном, на котором можно ошибаться и набивать шишки. И тебя за эти ошибки не уволят и не лишат премии. Да, конечно гении учатся на чужих ошибках. Но не все такие.
Дак в том-то и прикол подхода, проект через svn, групповой – тут-то всё и налаживается: лидеры, дедлайны, комменты кода, пиздюли и прочие бонусы..))…
UFO just landed and posted this here
Прежде чем браться за какие-то проекты, пусть даже простые, должна быть опорная база из основных знаний

Не факт. Основные знания можно получать по ходу создания проекта. Чисто как пример — на группу из 15 человек 16 однотипных проектов. Один как туториал, остальные как задания. На теоретических занятиях разбирается туториал, на практических студенты повторяют тот шаг, что разбирали на теории.
UFO just landed and posted this here
Обязанности читать маны учебники никто не отменяет.
Идея работы в группах очень правильная. Но непонятно почему давать один проект на всю группу? Да, любой может отказаться. Но оставшаяся часть, пусть это будет человек 10-15 будут работать над одним проектом? Это же очень много для людей у которых нет опыта командной разработки.
На мой взгляд, оптимальнее было бы разбить на небольшие группы 3-4 человека и пусть каждая группа делает свой проект, пусть даже идея будет одна на всех, но зато реализация у каждой группа своя. Это добавит недостающий дух конкуренции и соревнования.
А в итоге ребята делили проекты на две крупных части — клиентская часть и серверная. В каждой части были свои мини группы. В результате тесно трудились по 2-3 человека. А потом они совместно состыковывали код. И это было ой как не просто.
Идея не нова, но идея отличная! Уверен, что именно благодаря этому эксперименту они смогли быстрее раскрыться в своем деле.

Эксперимент оказался очень удачным, потому что
Попалась мне группа очень толковых студентов

Я сам в бытность студентом хорошо поднялся в программировании только потому что с 3-го курса работал над реальным проектом (который сам поднимал с нуля) в стенах и для нужд университета. Проект раскрутился и завелся, я пошел в аспирантуру и на кафедру преподавателем, и дальше этот проект двигался силами других студентов, которые с удовольствием делали его вместо шаблонных курсовых. В итоге эти студенты обычно лучше всех разбирались в своей области и готовили отличные дипломы, после выпуска хорошо устраивались.
Это замечательно. Я был бы рад попасть к такому преподавателю.

К слову, мой друг учится в штатах по специальности «Бизнес и управление», так вот, там один из преподавателей устроил просто гениальное задание.
Он разделил студентов на 3 группы. Первые полгода каждая из групп пишет свой бизнес-план. Если преподаватель его одобряет, то университет берет кредит под этот бизнес-план. Во-втором семестре студенты реализуют свою идею. Если бизнес прогорает, то студенты отдают кредит из своего кармана. Ну а если есть профит, то они отдают его на благотворительность. В случае с моим другом им выдали кредит в размере 2500$, они отбили свои деньги и на благотворительность отдали весь профит, который составил около 1000$. А могли ведь просто писать тесты…

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

Я работал с такими ребятами в качестве наемного программиста (проект был связан с IT) — очень интересно было взглянуть как у них процесс обучения построен.
Матожидание прибыли студентов меньше нуля.
Ну, вот сдаю я лабораторки, тупо для зачета. Хотя я умею писать код, но когда ты сдаешь лабораторные работы, то это не имеет смысла.
Когда я попросил какой-нибудь проект, мне сказали, чтобы я делал лабораторки. Плюс программирование нам преподают в основном старые люди, которые сами-то писали неизвестно в каком году и неизвестно сколько.

Ребята из технопарка пытаются хоть разбавить обстановку, но по сути тщетно — студенты ничего сами не хотят. А я хочу, и получаю «3».

МГТУ. Программная инженерия.
Суть моих лабораторных заключается примерно в этом же. Преподу не нужен красивый код, ему надо, что бы это работало. Хотя, в случае с моим вузом все в плане программирования вообще очень странно.
1 курс. Си, вперемешку с Си++. Какие-то лабораторные работы, которые не учат, а калечат, ибо тот же самый Си давался в очень минимальном объеме.
2 курс. Предметы «Проектирование человеко-машинного интерфейса» и «Вычислительная математика» должны писаться на Visual C++, Delphi, Visual C# и прочих объектно-ориентированных языках (событийно-ориентированных, если точнее). Причем, курс по ООП читается только сейчас, в 4ом семестре. А ПЧИ и ВМ мы делали на семестр раньше.
Я был бы очень рад такому способу преподавания. Это было бы действительно интересно, занимательно и прочие дела. Мы с одногруппниками пытались делать примерно то же самое, только по лабам. Git, ТЗ, составленное по заданию лабы и общее помещение, где мы работали.
ТУСУР. Программная инженерия.
такая же история, программирование только на 1 курсе — С++, причем на ОПП уделено лекции), БД, Сети и т.п. размазано по курсам и по большому счету все
грустно
У нас в первую очередь код смотрели, когда пошли интерфейсы — их смотрели, тыкали, есть ли защита от дурака и т.п. Часто даже и не запускали программу, если что-то обнаруживалось критичное. Студентов это бесило, но эти требования были известны и глупо было спорить.

Да, были лабораторные работы у преподов-математиков, где важен был результат, правильная работа формулы, построение графиков, адекватное реагирование на исключения. Код мельком смотрел, чтобы явных «копи-пастов» не было. Ну так там и программирование было прикладным делом к математике.
До боли знакомая ситуация, у нас в универе была ровно такая же ситуация. Всю жизнь наверное буду помнить как сдавали курсовую на первом курсе и слова преподавателя — «С функциями и процедурами нельзя — мы их еще не проходили». Хотя преподаватель был вполне шарящий. Вот примерно таким образом у нас и отбивают желание учиться у талантливых ребят.
Вот после таких «С функциями и процедурами нельзя» я от студентов третьего курса получаю реализацию списков в виде набора процедур с побочным эффектом. Ох, какая аллергическая реакция у меня появляется на этот код, когда мозг везде видит ООП…
Суть ООП в побочных эффектах методов ;)
ок, но когда товарищ студент передает в процедуру параметром ссылочную переменную по ссылке, меня начинает в легкую знобить… :)
Уважаемый, вы целенаправленно решили меня сегодня затролить? :)
Когда я троллю, то смайлики не ставлю :)
Фигня это все. У меня чуть в школе серебро не завалили за значок предела, ибо какието уроды из минобра убрали эти самые пределы из школьной программы пока я в 11-м классе по олимпиадам носился и был не в курсе. Да и вообще прошли мы их еще в 10-м :)
А на тему без функций и процедур… На моей памяти это весьма развивает постороение эффективного исполяемого кода. В порядке терапии многим бы порекоммендовал пописать драйверочки на ассемблере. А то у современных програмеров развита очень сильная ООП и фреймворко-зависимость, зачастую вырождающаяся в быдлокодерство и костылизм.
Вот как раз написание кода в стиле «поток сознания» (это тот который без функций и процедур) ни разу не прибавляет коду ни скорости ни понятности. Кстати про ассемблер тут разговора не было. И да, на ассемблере можно писать прекрасно структурированные программы, это я вам заявляю как человек писавший в свое время операционную систему, с собственным загрузчиком и кучей кода на ассемблере для обработки прерываний.
Вжисть не видел чтобы «поток сознания» сразу заводился и работал как надо (особенно если это реально поток хотябы строк тыщ на 50). И в процессе ты или структурируешь его, или листинг начинает напоминать Гарольда.Я с этим еще в восьмом классе столкнулся на спектруме(точнее на «байт»е). Накатал говонокода, потом еще чуть чуть, потом еще чуть чуть… потом стер всенафиг, начисто переписал все полюдски в тетрадке. накатал. Заработало. стал расширять… опять задница, транслируемый сорс код то уже в 48к памяти не влазит, полез в машинные коды и возню с портами.Гордый был как таракан когда придумал процедуру которая с битовым сдвигом делала разные вещи (идею понятно из элиты спер). И в общем пошел по кривой дорожке… Гугла не было, и никто не говорил что есть волшебный адресок в адресном пространстве Синклера при попытке записи в который мрет ПЗУ(таблицы в инструкции как бы не все покрывали и полез смотреть что и где методом тыка). Так и умер во мне программист вместе с любимой школьной игрушкой. потом были школьные БК-шки, но уже без фанатизма… С++ у знакомы, Паскаль в институте… Но основной раш прошел и пишу я теперь только на сиквеле. :)
Всю жизнь наверное буду помнить как сдавали курсовую на первом курсе и слова преподавателя — «С функциями и процедурами нельзя — мы их еще не проходили».
Надеюсь, вы настояли на своём и принудили-таки принять задание «с функциями и процедурами»?

Я тоже в таком возрасте думал, что умею писать код. Из-за этого даже ходил к Тассову пересдавать с 4 на 5.

Вот сдай курсач по машграфу в ноябре, тогда я поверю, что ты умеешь писать код! И кафедра поверит, и будет тебе счастье. :) Тупо сделай его и сдай. Ты не представляешь, как С.С. следит за хорошими студентами.
Тассов меня как раз с проектом и послал.
>Вот сдай курсач по машграфу в ноябре
А это вообще пушка. Куров не в себе, я считаю.
Тассов? А мне он дал свой номер, сказал, круто, звони, если что. (Жалко, что я свою деятельность продолжил уже не в Бауманке, но там были другие причины.)

Куров? По сравнению со школьными учителями — да. Но по сравнению с людьми, с которыми тебе придётся иногда работать, он вообще милашка.
Приветствую коллега! Я в высшем образовании с 1998 года. В индустрии разработки ПО чуть дольше :)
Групповые проекты в нашем вузе (ТУСУР, Томск) были приняты еще, как минимум, с конца 80-х (более ранней информации у меня просто нет). Хотя давали их не все и не на каждой кафедре. В том числе и я давал такие проекты (до 7 человек в одной проектной группе) частенько. Так что я не вижу в них (таких проектах) ничего нового и необычного :).

В ТУСУРе их не так давно воздвигли в ранг важной составляющей процесса обучения (слава Богу, не обязательной) и появилась такая методика обучения, которая называется «Групповое проектное обучение». Ссылки в гугле по этой теме ведут, в основном на ТУСУР, хотя и мы тоже не были первопрохордцами :) Я знаю точно, что в Дании используется такая методика обучения (забыл название вуза, увы), примерно, с начала нулевых годов.

Увы, не для всех студентов это подходит.
Увы, не для всех студентов это подходит.

И не всякий преподаватель способен грамотно организовать этот процесс. На нашем курсе ГПО было обязательной процедурой, насколько я помню. Не зацепило — мы с ребятами в группе 2 года успешно пинали балду.

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

Ну вообщем, если коротенько, что бы работать в проекте, нужно уметь общаться и находить общий язык.
Ну, учеба для того и нужна, чтобы научиться, нет?
Увы, не во всех вузах такое является общепризнанной практикой…
Респект Вам и уважуха, ибо такое образование не только весело и интерсно студентам, но и полезно для дальнейшей жизни, тк кроме навыков особенно программирования вы даёте ещё и практику командной работы, что весьма не мало важно…
Тк бывают ребята смышлёные и талантливые но практически бесполезные в течении пары месяцев.
А тут у вас и живое понимание качества кода и коллективная ответственность, в общем всё как в реале, «напиши говнокод и коллеги будут смотреть на тебя как на говно» :-)
Странно.
Я, например, отказался бы. Умея программировать я бы писал что-то для себя.
В чём прикол тратить много времени и нервов для реализации большого и сложного, но при этом высосанного из пальца проекта?
Да и другие предметы есть. На них тоже приходится тратить время.
Думаю такой метод применим только к очень небольшому проценту студентов, которые писать уже могут, но… не знаю даже. Не могу придумать таких студентов.
Писать стандартные задания, или сделать что-то интересное? Я всегда старался выбирать интересное, когда такой выбор был (к сожалению не так часто как хотелось бы, обычно все придерживались стандартных лаб). На первом-втором курсе многие делают что-то «для души», это потом уже приходит понимание, что время-деньги, а по началу часто достаточно заинтересоваться задачей.
А я не согласен. Я бы с радостью взялся за такое. Мало крупных проектов создаются одним человеком.
Я вот сейчас не представляю как программировать в паре, или в команде, как распределять обязанности и тд. А это очень важный навык
>В чём прикол тратить много времени и нервов

В чем тогда вобще прикол тратить время на универ? Иди сразу работать.
Тут предлагается или делать что-то скучное, что не запомнится и будет делаться, лишь бы сдать, или поработать над чем-то более интересным и полезным.
Помню учился я на первом курсе и пришла ко мне знакомая девушка с просьбой помочь написать программу на бейсике для лабораторной работы (у нее была какая то экономическая специальность и она была на курс меня старше). Написал я ей простенькую программу по ее задинию. Приходит она на следующий день и говорит, что препод задание не принимает, т.к. программа не рабочая в принципе. На мой вопрос, пробовал ли он запускать программу, был получен отрицательный ответ. Я предложил ей настоять на том, что бы программу все таки запустили на компе. На следующий день она пришла опять — вся радостная такая, сказала что получила 5+ и что у нее самая лучшая программа, но препод так и не смог понять какого хрена она вообще рботает. Вот такие были преподы.
Пысы это был 1992 год, комп был бк-0010.01 и струйный принтер электронника мс-6312
Было дело, в 1992 году, Бейсик. НО – у нас с другом, к моему сожалению, не приняли курсовую, написанную на Бейсике.
Очень жаль, что преподы оказались не прогрессивные :-) Бери, говорят, лист ватмана, черти таблицу с данными и делай расчеты на калькуляторе.
У них где-то были контрольные точки в этой таблице, они мгновенно вычисляли ошибки. А наша программа на Бейсике просто выдавала результат, мы не подумали тогда о выводе таблицы. Это был расчет паровой турбины.
Вообще с удовольствием прочитал топик и комментарии, спасибо вам.
Наоборот, Ваши преподы были значительно прогрессивнее тех гипотетических преподавателей, которые бы приняли курсовую в виде программы.

Принцип то прост, пока несколько раз сам в ручную задачу не решишь, никогда не поймешь как такие задачи решаются, а написать расчетную программу можно и абсолютно не понимая, как и что она считает. Именно по этому преподаватели проверяли не умение писать программы, а знание предмета.
Помню, я дико возмущался на 1-м курсе когда заставляли чертежи делать на бумаге. Есть же куча софта! Потом понял, что старая бабушка-преподаватель всё правильно сделала — она развила объёмное мышление, которого у меня небыло. А применить его можно уже с помощью любого инструмента — бумажного ли, электронного ли.
Бери, говорят, лист ватмана, черти таблицу с данными и делай расчеты на калькуляторе.
как же бесят такие личности
Да, а еще многих студентов к примеру бесит написание тестов до написания кода )
Пока не поймут, зачем и почему.
Если бы я получил программу, которая неизвестно как работает, я бы, безусловно, обратился к тому, кто ее принес за разъяснениями. И если бы якобы автор тоже не смог этого прояснить, то зачет он бы получал долго и упорно…
Сдаётся мне, что эти ребята уже в школе начали заниматься олимпиадным программированием и программу 1-2 курса уже знали.
У нас на курсе первый год, Java, первый семестр (14 недель) давали в неделя 2 часа теории и потом 4 часа лабы. Второй семестр, так же 2 часа теории и потом 2 часа лабы и был проект (6 часов отводилось в неделю на курсе, ну и дома потом) — сделать торрент клиент. Суперская комбинация
Просто мечтаю как такое же проведут у нас в универе, вместо скучных и непонятных в плане необходимости заданий по дискретной математике
Дискретка — чрезвычайно полезный курс. Чуть ли не единственный предмет, знание которого требуется программисту практически ежедневно. Не стоит ей пренебрегать.
Я не отменяю полезности дискретной математики, сам очень жду когда у нас снова начнется курс по ней. Но считаю задачи по программированию с дискретной математикой менее полезными и интересными, чем скажем такие проекты как описаны у автора статьи.
Очевидно, что подобный подход будет эффективнее и интереснее. Существует не мало эффективных методик обучения, которые можно использовать, чтобы сделать все более интересным и эффективным. Но проблема в том, что не нужно это. Задачи у образования немного иные — это дать некий усредненный набор ЗУН, чтобы их усвоила целая группа (2, 3 и т.д.) и на более-менее сравнимым уровне. Это должен быть конвейер. В этом случае результат — это не опыт каждого отдельного ученика, а освоение программы. В том числе эта программа может сильно пересекаться с другими изучаемыми параллельно предметами.

Вы как-то в рамках проекта следили за тем, чтобы каждый успел освоить все необходимое? Как оценивался результат в итоге? И почему перестали использовать подобную методику в итоге?
Интересно, спасибо.
Два вопроса:
1) каковы ваши идейные соображения, по которым вы преподаёте в ущерб, как говорите, доходу?

2) «уже работают в сша» — вы имели в виду, что это некое достижение?
Преподавание в университете — это не идея. Мне это нравится. Нравится общаться с толковыми студентами. Нравится изучать с ними новые технологии. Например, я погрузился в мир Cloud Computing'а (а именно Microsoft Azure) вместе со студентами, которые писали у меня курсовые работы. Хотя на работе мне эти зная именно сейчас не нужны.

По поводу достижения работы в США — скорее да. Один из них работает в Microsoft. Туда не берут из России всех подряд. Я не хотел сказать, что к этому нужно стремиться. Я хотел сказать, что это получается далеко не у каждого, что хочет уехать работать программистом в США.
Повезло вашим студентам, меня уже бесят лабы в которых для меня нечего нового нет, но времени убивает много, то время которое я мог потратить на свой проект приходиться тратить на всякий бред.
Да даже простые лабы по плюсам можно было-бы разнообразить. Например у всех есть лабы по реализации list, bintree, string. Ну почему бы не изучить STL основательно, написав группой свою STL? Прийдется подумать над архитектурой, понять что писать первым, что на чем будет держаться. А так один делает, половина скатывает.
Я старшекурсникам лабы по плюсам пишу, так они даже объяснить простых вещей при сдаче не могут. Ну вот банальная вещь — в конструкторе вызывается m_data.input(), училка просит — вынеси мне это дело из конструктора, надо чтобы на вход принимались готовые данные — даже это не могут сделать.
написав группой свою STL

Можно было бы что то делать группой если бы учился не с овощами. О чем можно говорить с людьми которые даже не знаю как добавить на форму в C#, не могу добавить новый элемент управление.
У меня только один препод хоть иногда интересные задачи «подкидует».
В данный момент пытаюсь написать не большой аналог Elysium для winForms C#.

П.с я сам пишу криво, но я хоть пытаюсь учиться и развиваться.
> Ну почему бы не изучить STL основательно, написав группой свою STL?

Удачи… Не нужно даже далеко уходить в алгоритмы. Попробуйте написать, например, std::tuple и std::tuple_cat.
Что-то я почитал про этот tuple и мало что понял.
Я скорее говорил о несложных классах, string, list, map — хотябы их реализовать достаточно полно, а то же ведь лабы звучат так:
реализовать связной список и функцию по варианту:
в итоге кто-то 1 пишет сам список, а остальные просят и дописывают функции. Но почему бы это не «легализовать» и сдавать всей группой один большой класс. Люди даже не понимают почему у них программа на борланде не компилируется, когда компилятор орет, что у него нет iostream, есть только iostream.h
«Всей группой» не работает. В зависимости от уровня студентов можно делать группы в среднем 2-3, максимум 5.

> Люди даже не понимают почему у них программа на борланде не компилируется, когда компилятор орет, что у него нет iostream, есть только iostream.h

Это ортогональная проблема, которую нужно решать улучшением лекций.
Замечательно, полностью поддерживаю. Я своим курсовые роздал в группы, так, чтобы группа была минимум 2 человека, а взаимодействие через github.
Скажем так: Вам и Вашим студентам повезло встретиться в стенах одного вуза. Часто бывает так, что одна из сторон не заинтересована либо в предмете, либо в учебном процессе.
Мы с коллегами как раз начали с этого семестра внедрять подобную систему в МИФИ на факультете «Информационная безопасность». Пока в экспериментальном порядке, но, надеюсь, все получится не хуже, чем у вас :)
Читаю комментарии и завидую — когда я учился, преподы даже не смотрели код. Листинг распечатанной программы служил только для того, чтобы найти там какую-нибудь функцию и спросить что делает. Это делалось для выяснения, сам ли писал код.

Если сам писал и хоть как-то работает — сдал. Сказал определение, как сейчас помню, базы данных и представления (дословно, малейшее отклонение — нах) — не сдал. В итоге в конце 2-го курса понял что здесь ничего не светит и пошел работать, а учился только ради корочки. БГУИР, ФИТУ.
Вот, вот! Я хочу сделать это в школе из наших городских олимпиадников. Занимаются до 11 класса какой-то ерундой и быдлокодингом. Потом весь первый семестр уходит на то, чтобы забыть этот кошмар. Навыков проектирования и рефакторинга не хватает прежде всего. Ну и все другие стороны «взрослого» проекта.
По поводу корреляции обучения и последующих достижений есть такой момент: «Одни из вас играют в шахматы хорошо, другие играют плохо. И никакие лекции не изменят этого соотношения сил». Очень редко преподаватель может пинком отправить на следующий уровень просветления, как правило, это все-таки индивидуальная работа увлеченного и башковитого студента. Уже по абитуриентам примерно понятно, что из них вырастет.

Такой групповой проект — ну очень сильно зависит от уровня группы и отношений внутри нее. Меня всегда радовла гибкость моих преподавателей — не хочешь лабу, пили свой проект. Такой компромиссный вариант + инициатива снизу.

Но за клиент-серверные вещи на первом курсе — респект. На ВМК на первых курсах обычно засилие математики, часто бесперспективной.
Огромный плюс программы ВМК — это курс архитектуры ЭВМ и языка ассемблера. Очень помогает пониманию основ.
У нас разные ВМК) Рискую навлечь на себя праведный гнев, но у меня ассемблера не было вообще никак. Хотя это был честный примат, никакого гламура. Возможно, это был локальный глюк составителей программы. Курс архитектуры я тоже не помню, хотя он был. Мне скорее пригодились всякие теории алгоритмов, дискретки, терверы и умение быстро написать код под одноразовый эксперимент. Но я сейчас занимаюсь вещами на стыке NLP-AI-ML, т.е. до ассемблера мне копать с этого уровня слишком глубоко. Так что тут каждому свое.
У многих отбивает (или не появляется) интерес к учебе практическая бессмысленность и логическая незаконченность «вакуумных» лаб типа «хелловорлд» или «richedit». Для тех, кто не хочет свое делать можно хотя бы сделать единый проект из таких лаб. Пускай велосипед будет, но за курс будет готовое целостное приложение пускай и уровня «Блокнот», а не восемь решенных абстрактных несвязанных задач типа «диалоговое окно», «меню», «чтение/запись файла», «редактирование текста» и т. д. то есть в начале курса преподаватель говорит «к концу курса каждый напишет свой „Блокнот“, кому это скучно — предлагайте свои варианты, можно в группы по несколько человек объединяться».
Самое главное так люди быстрее научатся программировать. А то давай пол года рассказывать о операторах, и спрашивать «а вы что, знаете что такое функция? Или это кто-то за вас написал»… Да блин! Вася, а я придуриваюсь сижу. Наболело
Мое мнение как студента: Вы все правильно делали! Думаю, даже можно попробовать просто в группе предлагать такой вариант, не только на тех глаз лег, может быть кто-то еще заинтересуется. Мне этого не хватало в универе, 1, 2 курс сплошные лабы — скукотища.
А на 3 курсе у нас появилась интересная дисциплина Технология Производства ПО (ТППО). Так вот, эта дисциплина длилась целый курс, первые пол года лекции и практики, на практиках мы делились на команды и выбирали проект, т. е. даже сами придумали задачу и ее реализовывали, писали ТЗ, документации, разные отчеты показывали.
Во втором семестре у нас были заказчики с проектами, это было классно. Работали, можно сказать, с реальными людьми, которые требовали отчеты, каждую неделю на семинарах отчитывался менеджер группы, ну и остальные тоже, о том что делали. Был свой сервер с вики, там писалась документация, тесты, результаты тестирования, все подробно, так что в итоге получался довольно объемный результат работы.Лично мне очень понравилось работать в команде, мозговые штурмы, споры, отстаивание точки зрения — здорово. В итоге получилось не плохо — заказчик был доволен.
Очень понравилась статья, спасибо автору!
Сам преподаю первый год. Занимаюсь программированием около 4 лет. Есть много идей и горы энтузиазма! :)
Хотел спросить у бывалых преподавателей, которые здесь присутствуют, есть ли ресурс, где каждый из нас мог бы поделиться своим преподавательским опытом, обменяться мыслями, идеями для лабораторок и прочим?
Часто слушаю лекции по программированию от Stanford / MIT / Berkeley / etc на iTunes U / MITx — в этих вузах всё примерно так и устроено.
Где свою ОС пишут, где чужую улучшают, где-то ещё полезности в опенсорс кладут.

У нас в ВУЗе (привет ИТМО!) была скукатень. Одни и те же лекции / лабы / экзамены из года в год. Design doc'и не писали, SCM не использовали, лабы сдавали на бумаге, как, впрочем, и экзамен. Студенты с потока если, что и делали интересного, то делали это в свободное от учёбы время =/
Спасибо вам, что вы есть!
Могу рассказать аналогичную историю с другой стороны.
Мне 16, Ярославский Политех по четвергам, ЕС ЭВМ, фортран.
И преподаватель давший команде вместо лабораторных задание: «символьный решатель дифуров»

Это было драйвово и во многом помогло мне в жизни.
Они ещё живы? O_o Мы на таких ещ 20 лет назад дифуры решали на Фортране.
Забыл добавить год — 1990
Не знаю как у вас а в нашем провинциальном и известном теперь на всю России АлтГТУ (привет Бабушкину Антивирусу) такая практика применяется давно, правда не на первом курсе — а на третьем и команды у нас поменьше — 3 человека а в остальном все как полагается. Большая часть заданий — типичное desktop приложение аля «Автоматизация рабочего места вахтерши Нины Степановны». Как сейчас помню — основное задание заключалась в том, что использовать БД было запрещено. Вот тут то и начинала свою работу больная фантазия студентов — кто-то, помнится, писал свой SQL движок со всеми вытекающими…
и в чем смысл запрета БД?
Честно говоря не знаю. Много причин могло быть — 1) БД отдельным курсом преподавались и там подобные системы тоже писались 2) Вроде как без БД считается сложно (в моей микрокоманде мы использовали стандартную Java сиреализацию и голову не грели, кто-то использовал запись в файлы и т.д.)
Студентов надо гонять по программированию так же, как и по матану или алгебре гоняют. К примеру, вчера объяснял другу несколько часов (он на 3м курсе, прикладная математика и информатика, С(А)ФУ) как считать матрицу из файла и вывести на экран.
Примерно такую же методику используют в обычных зарубежных школах (например в Германии). Отход от обычной фронтальной методики преподавания. Класс разбивается на группы и каждая группа готовит работу по заданной теме. Потом группы делятся результатами с другими груиппами. Преподаватель должен только контролировать процесс обсуждений.

Но во всем этом есть минусы. Я хорошо могу представить нечто подобное на предметах типа История, Физика или Химия или в изучении языков. Но вот как проводить подобное на Математике, представить сложно.
Не каждый специалист может быть преподавателем. Чаще всего это просто работник который учит по методе с кафедры. Ситуация у нас в местных вузах очень прискорбная, можно запросто выйти с дипломом, но без малейшего представления о реалиях мира ИТ. Такой специалист очень рискует затеряться. Но к сожалению очень мало преподавателей могут ( или хотят) научить чему-то реальному. Слава богу мне встречалась пара таких.
Автору однозначно уважение!
Методики преподавания, принятые в школах и институтах, во многом устарели. Иные люди самостоятельно проходят годовую программу за 1-2 месяца, без чьей-либо помощи.
В этих условиях практически любой нестандартный подход даст хороший результат. Но автору всё равно респект за то что это сделал — сопротивление системы ещё огромно.

Я попробую сформулировать основные педагогические отличия методики:
1. Создавая один проект на всех, тем самым устанавливать коллективную ответственность (но не как в армии — один оплошал, наказан весь взвод — а только с положительным подкреплением),
2. Давать задачи, допускающие (сообразно уровню студентов) неограниченный рост квалификации,
3. Провоцировать драки и ловить от этого кайф.
Всё верно?
(умножение матриц, символьное дифференцирование и т.д.)

Насколько я помню, умножение матриц и дифференцирование на 3м курсе проходится (или втором, во всяком случае не на первом) на мой взляд это далеко не лучшее решение давать такую тему проекта.

Был разработан интерпретатор языка программирования для задания поведения роботов

зачем? Ведь есть же уже готовые решения, python, lua… (список можно увеличить)
Оно конечно не помешает — но то что его разрабатывал 1 человек — это тоже не есть хорошо.
Я не могу сказать, что до конца, но вроде понял немного графы, после того как написал лабу по ним. Они только у нас начались, а я уже достаточно о них знаю.
Прикладная задача помогает вникнуть в материал, даже в тот о котором ничего не знаешь.
Весь период обучения в университете я просто мечтал, чтобы нам преподавали программирование именно так.
За смелый эксперимент +1. Проблема в том, что это требует гораздо больше времени, чем обычные лабы. И тебе их никто не оплачивает — чистый энтузиазм.
Я знаю, что слишком корыстно рассуждаю. Но мотивации для подобных экспериментов не нашел у себя в свое время. Для справки моя зарплата была: доцент+к.т.н. + ряд патентов и научных работ+грант = 12 т.р. в месяц. (1 ставка)
И еще момент.
Когда ты уже не студент, ты думаешь «Надо было меня гонять, давать задания и все такое… сейчас был бы гуру программирования и знаток трехтомника Кнута»
Когда ты студент, ты думаешь: " Чего еще ему от меня надо. Лабы я же сделал. Вот ведь пристал. Надо бы уже валить с пары… там у пацанов вроде как сходка с пивком и девчонками с филфака".
Скажу, что, с моей точки зрения, автор прав, и нельзя преподавать практическую дисциплину программирования в концепции «лекция-семинар-лабораторная». Эта модель предназначена для фундаментальных наук. Для прикладных, инженерных дисциплин давно уже разработаны другие модели, которые ориентированы на систематическую подготовку к практике, а затем ее прохождение в течение длительного времени на реальном предприятии. Но вот так вот бросать студентов как котят сразу в реальный проект, наверное, не стоило. Имело смысл их немного подготовить. Иначе много усилий тратится неэффективно даже с точки зрения обучения.

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

Классические форматы образования больше ориентированы на самостоятельность студентов. Кто мешает студенту самостоятельно поучаствовать в каком-нибудь open-source проекте и накопить необходимые практические навыки? Какая проблема самостоятельно научиться пользоваться SVN? Никаких, было бы желание.

В результате высшее образование все больше перенимает методы, используемые в тренингах. А потом люди выходят за стены ВУЗа, через пару лет все их знания устаревают, а ничего нового они сами уже изучить не в состоянии. Этому их не учили. Ноют, просятся на тренинги, а книжку прочитать не в состоянии, засыпают на десятой странице.
В моем конкретном случае студентам для выполнения задания не хватало достаточно много знаний. И лекций по этим вопросам у них не было. Они самостоятельно освоили те технологии, которые им были нужны. Изучили теорию и тут же применили её на практике. Т.е. они прошли достаточно мощный курс самообразования, что немаловажно в нашей профессии.
Конечно. Они прошли курс самообразования «нахрапом» под давлением необходимости, то есть при наличии сильного внешнего мотиватора. Причем самообразование это все равно обрывочное: они изучили в основном то, что нужно было сегодня и сейчас, на остальное времени не хватило. Так мы все делаем по жизни. Так же учится и токарь, и слесарь: в основном за станком по ходу под присмотром опытного коллеги. Но отличие хорошего студента от хорошего токаря в том, что студент может изучить любой сложный предмет, не имеющий прямого отношения к его профессии, систематически применяя навыки образования, которые ему дали в ВУЗе. Хороший студент должен суметь прорваться через сложный трактат, написанный корявым языком, сам придумать и организовать себе практические занятия для освоения материала, и в результате получить систематические знания в новой для себя области. Лабы нужны не только для того, чтобы изучить предмет, а еще и для того, чтобы понять, какими методами закрепляются на практике знания. А с этим вообще беда: люди приходят ко мне и говорят «Я прочитал Котлера, теперь я знаю, как заниматься маркетингом». Я задаю пару вопросов, и человек начинает путаться и говорить глупости, а уши краснеют. На очевидный вопрос: «неужели нельзя было после прочтения главы просто взять какой-нибудь живой кейз и проанализировать, ведь их даже искать не надо, с утра до вечера вокруг нас творится чей-то маркетинг» человек пожимает плечами и отводит глаза.
Вот отучился я в результате в одном очень хорошем ВУЗе… и до сих пор мечтаю научиться программировать. Честно говоря, боюсь, что уже поздно.

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

Но зато я хорошо научился гуглить за эти пять лет…
Вот отучился я в результате в одном очень хорошем ВУЗе… и до сих пор мечтаю научиться программировать.
Выберите интересную вам задачу, симпатичный вам язык программирования и начинайте писать, попутно восполняя пробелы в знаниях. Иного способа научиться не существует.
Честно говоря, боюсь, что уже поздно.
Кто хочет — ищет возможности. Кто не хочет — ищет причины.
У меня друг в 31 год учить программирование начал с нуля. Сейчас ему 33 и он уже работает по этой специальности.
После поступления ожидал встретить преподавателя из статьи — получилось же обратное. edX и курсера выручили.
У меня большинство преподавателей по программированию были очень толковые и работали не ради денег. Как правило, у таких была другая работа, а то и не одна. С большим интересом хватал я знания и искренне не понимал и не понимаю студентов, которым было «лишь бы сдать», они не разбирались просто ни в чем. Практически никто из них не самостоятельно не сделал ни одной лабораторки(мы не писали по ним отчетов, не рисовали блок-схем, только код). Увы, таких было большинство. А знаете что теперь? Я вылетел из-за ВНИМАНИЕ теории вероятностей. Простой предмет, который сейчас использую каждый день. В общем, меня отчислили, а куча балбесов получат дипломы. Теперь я работаю программистом, но на душе кошки скребут. И где ваше образование теперь?
Прошло всего пол года…
Да, студенты узнают своих преподавателей даже много лет спустя. Спасибо за этот бесценный опыт, он сыграл свою роль! Кстати, один из членов нашей команды не поленился опубликовать результаты и описание данных проектов в сети: CMC LAB, RCS (Robot competition system).

Sign up to leave a comment.

Articles

Change theme settings