Ответы пользователя по тегу IT-образование
  • В чём можно делать конспекты?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Попробуйте MyTetra
    Также посмотрите интересную статью автора Самая нужная программа на свете на хабре.
    Ответ написан
    Комментировать
  • Порядок изучения C#?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Неплохая книга Бена Ватсона "С# 4.0 на примерах" - много примеров, как делать конкретные вещи, в том числе, по WPF.

    Программирование зиждется на трёх китах - 1) знание (синтаксис) языка, 2) алгоритмы и 3) архитектура. Причём, последние не связаны с языком. Читайте не только о языке, но и общие знания - паттерны, архитектура, алгоритмы. В большинстве классических книг примеры написаны не на c#, но их чтение сильно развивает как программиста.
    Мартин Р. Чистый код. Создание, анализ и рефакторинг рекомендую прочитать хотя бы до 12 главы, дальше - углубление. Первые главы дают шикарный базис для построения архитектуры - почему писать так, а не иначе. Примеры на Java, но этот язык довольно сильно похож на C#.
    Фаулер М. Рефакторинг. Улучшение существующего кода классическая книга
    Гамма Э и др. Приёмы объектно-ориентированного проектирования суперклассическая книга, так называемая "банда четырёх"
    Скиена С. Алгоритмы. Руководство по разработке книга о алгоритмах, проще, чем известная книга Д. Кнута

    Ну и посмотрите этот список книг.
    Ответ написан
    Комментировать
  • Разработка игр с умом?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Рекомендую начать с чего-нибудь попроще, пусть даже клон. Сделайте клон какого-нибудь платформера или Galaxy (или что больше нравится). Это важно, потому что дальше будет слишком много времени будет уходить на сложные задачи по программированию, с которым у вас пока слабо. Когда вы сделаете вашу первую программу, дальше вам будет гораздо проще. Если вы будете хорошо развиваться, то можно попробовать сделать за 2-4 недели, и только потом идти к вашей игре, которую вы хотите делать. Получив какой-то опыт, вам будет легче понять хорошим советам по архитектуре игры.
    Лично у меня есть несколько человек, с которыми я общаюсь и помогаю с программированием. Напишите в скайп, можно начать общение.
    Ответ написан
    7 комментариев
  • C# Троелсен и Шилд, поворот не туда?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Троелсен пишет профессионалам, тем, кто уже профессиональный разработчик в каком-либо языке, а теперь хочет разобраться с C#. Раз книга направлена на профессионала, то в ней не указываются общие основы программирования - например, нет ничего про паттерны, нет инфы, для чего нужен ООП, какие типы данных выбрать для конкретной задачи, какие типы массивов/списков взять, и т.п. Например, в книге описаны три разных способа работы с потоками. Каждый из типов хорошо описаны, но не указаны, какой из способов лучше использоваться. (хотя, конечно же, автор пытался показать, для чего нужны эти типы и в чем они отличаются, но выбор конкретного типа работы с потоками нужно выбирать разработчику.)
    Например, если разработчик хорошо знает Java. Тогда для него книга Троелсена идеальна. Можно понять, что в языке есть и как этим пользоваться.
    В итоге, эта очень сильная книга, которую легко можно использовать как справочник.
    Поэтому, эту книгу я не рекомендую как учебник программирования. Но когда вы пару-тройку лет поработаете с шарпом, то эта книга даст полное развёрнутое описание языка.

    P.S. Шилдта я не читал, не могу рассказать, на что она направлена.
    Ответ написан
    4 комментария
  • Какова практическая ценность магистратуры в IT?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Немного оппонирую коллег из соседних ответов. Ответы правильные и хорошие, но добавлю свои мысли. Для программиста нужны, по большей части, две вещи - опыт (лучше в сложных и разных проектах) и знания (как классические знания алгоритмов, так и знания редких, но интересных задачах - ИИ, компьютерное зрение, пр.).
    1) Опыт получается самим программистом, в идеале - до вуза. Но! Опыт опыту рознь. 100 сайтов-визиток в год в течение 5 лет - не тот опыт, который развивает. А вот хороший наставник даст интересные задачки, которые очень быстро разовьют и опыт, и знания, и "чуйку". Хороший наставник может быть и на работе, и в вузе. А может и наоборот - хороший наставник может и не обнаружиться ни на работе, ни в вузе.
    2) Знания получать нужно самостоятельно, конечно же. Но опять-таки - в вузе для этого есть время и место, а на работе нужно заниматься текущими вещами, зачастую - рутиной.

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

    Мой ответ будет таким. Если вы сможете найти хорошего наставника в вузе (в магистратуре, в аспирантуре), то идите. Инвестиции в своё образование окупятся с лихвой. Но если в вузе (в магистратуре, в аспирантуре) будут давать всякую фигню - то большого смысла в этом будет немного (смысл будет, но немного).
    Ответ написан
    Комментировать
  • Какую выбрать тему диссертации?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Нужно выбрать научного руководителя, brainick прав. У вас на кафедре есть несколько руководителей, пройдитесь по ним и порасспрашивайте, чем они занимаются (или, вы уже и так знаете, чем каждый занимается).
    Вы сами выбираете направление, которое вы хотите. Но есть ограничение - как раз руководитель.
    Но иногда, если у вас хорошие отношения с кафедралами, если вы уже себя зарекоммендовали, то могут пойти навстречу, и может быть (может быть!) какой-нибудь руководитель согласится взять руководство вашей темой.
    Но возможно, что лучшим решением будет - взять уже известное направление. Ваша кафедра, скорее всего, занимается чем-то конкретным (или несколькими). И вы возьмёте уже известное направление, и возьмёте какую-то часть общей кафедральной работы. Так и вам будет полегче, и результат будет постабильнее.

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

    P.S. Вы планируете ли дальше пойти в аспирантуру? тогда нужно выбирать тему магистерской так, чтобы она стала заделом аспирантской работы.
    Ответ написан
    Комментировать
  • Как обстоят дела с IT в Саратове?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Какое направление IT больше интересует?

    0) Я сам из Саратова. Образование получить можно. СГУ традиционно силён в программировании, но и СГТУ тоже хорошо готовит прогеров. В СГТУ есть факультет APTech. По другим вузам не скажу.
    Есть несколько колледжей, готовящих как программистов, так и спецов по ИБ (правда, с небольшим уклоном на программирование).
    Но при любом уровне преподавания в любом вузе, самым главным было, есть, и будет всегда оставаться одно - стремление изучать и способность самообучаться.

    1) Работа у нас разнообразная, но не очень высокооплачиваемая. Есть несколько приличных веб-студий. Есть компании, работающие "на дядю" (заграничные клиенты) - у них зарплата самая высокая. Есть компании, занимающиеся разработкой железок (телеком, т.п.).
    Плюс, всегда есть возможность фриланса.
    Ответ написан
    1 комментарий
  • Какую выбрать тему для магистерского диплома?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Data mining - очень интересная тема. У России есть довольно большой набор открытых данныхещё), которые так и просятся к анализу. Попробуйте найти интересные варианты с ними.
    Например, мне понравилась история Дата-майнинг помог заработать Пулитцеровскую премию. Также была очень практичной статья Data Mining в онлайн играхвторая), давшая потрясающие результаты. Или вот статья Торговля знает, когда вы ждете ребенка, приведшая к скандалу.
    В общем, Data mining - очень перспективная тема, и в России её ещё основательно не копали, набрать материала и новизны можно будет не только на магистерскую, но и на кандидатскую диссертацию.
    Ответ написан
    1 комментарий
  • Какой велосипед написать на с++ для закрепления изученного?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Сделайте какую-нибудь простую игру, с минимумом действий, но с задействованием всего вашего арсенала с c++, особенно ООП.
    Например, напишите rogue-like игру, типа того, что описана в этом топике.
    Тут у вас будет и работа с графикой, и хранение данных в файлах с конфигами (предметы, монстры, уровни), и игровая механика (перемещение, удары), и искусственный интеллект (поиск пути).
    Графику можно сделать как консольной (в текстовом режиме), так и освоить какую-нибудь графическую библиотеку (Qt, например). А можно написать два разных интерфейса и выбирать - запустить в консоли или в окне.
    Позже можно будет добавить работу с сетью и режим игры вдвоём.
    Этот проект (относительно) не сложный, но даст вам очень много практического опыта. Ведь одно дело писать классы в учебных целях, когда заранее известна конечная иерархия, а другое дело - полностью разработать иерархию, реализовать её, увидеть, что вышло не очень (так часто бывает, нужен опыт), найти способ как провести рефакторинг, обнаружить ценность интерфейсов, переписать классы на использование интерфейсов (или общие абстрактные предки), увидеть, что это гораздо лучше, порадоваться за себя, дать поиграть друзьям, получить багрепорты, исправить все баги, и так далее.
    Ответ написан
    Комментировать
  • Связана ли «Автоматизация технологических процессов и производств» с программированием?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Я учился как раз на такой специальности. Всё-таки в этой специальности изучают железки и автоматизацию.
    Схемотехника, электроника, сопромат, автоматика - если вам это хоть сколько-нибудь интересно, то может быть.
    Именно программирование здесь изучается, но не сильно, основы и применение к промышленности.
    Но, в принципе, если программирование железок интересно, то это будет хорошей специальностью. Тут я имею в виду микроконтроллеры, встраиваемые системы, автоматизированные станки, даже "умный дом" можно отнести сюда.
    Важный момент - количество программирования (и его качество) будет очень сильно зависеть от преподавательского состава кафедры. Сходите на кафедру, пообщайтесь с преподавателями, поговорите со студентами 3-4 курсов, и вы получите ответ на свой вопрос конкретно к этой ситуации, к этой кафедре.
    Ответ написан
    Комментировать
  • Что изучать, на что тратить свободное время, чтобы в будущем стать востребованным программистом с нормальным заработком?

    lexxpavlov
    @lexxpavlov
    Программист, преподаватель
    Ответ на вопрос будет сильно зависеть от того, в каком направлении вы думаете развиваться.
    Будет ли это сетевое программирование? Тогда это си, в основном.
    Может быть, веб-программирование? Тогда тут могут быть php, javascript, python, ruby.
    Захотите разрабатывать программы на десктоп? Вам нужны c# или java.
    На мобильные платформы? тогда java и objective c (плюс swift).
    Или податься в разработку игр? Тогда либо c++, либо с# (для Юнити - наверное, самой популярной платформе).
    Хотите экзотики? Приглядитесь к функциональным языкам - Erlang и Haskell.
    Разработка железа и драйверов для железа? тогда си (без плюсов) и ассемблер.
    Определитесь, что вы хотите, потому что всё объять не получится. Выберите один (или два) направления и добейтесь хорошего уровня в нём. А потом вам будет уже легче двигаться дальше.

    Мой совет - попробуйте изучать C# или Java (они во многом похожи) для софта, или Javascript и php/python для веб-приложений и сайтов.

    Добавлю, что очень правильный совет дал @tsarevfs - помимо языка программирования, хороший программист должен знать несколько инструментов - и в первую очередь, это система контроля версий, например, git. Плюс юнит-тестирование (хотя это можно начать изучать позже, через годик-два). Плюс - нужно хорошо знать свою IDE, в которой работаете; не вздумайте работать в блокнотиках!

    Ещё помимо практики нужно знать теорию - читайте Макконнелла, Фаулера, Мартина, Бека.
    Подпишитесь на хабре на пару десятков хабов и регулярно читайте всё подряд. Через годик ваш уровень понимания статей сильно вырастет.

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

    UPD. Важное дополнение из обсуждения в комментариях (спасибо @Argentum88 @Deerenaros )
    Чтобы стать профессионалом и "востребованным программистом с нормальным заработком", нужно очень хорошо понимать внутреннее устройство тех систем (платформ, фреймворков), на которых идёт работа.
    Для этого нужно заглядывать вглубь. Изучив различные мейнстрим-инструменты, посмотреть на аналогичные менее популярные системы. Изучать исходный код используемых open-source библиотек. Написать свою подобную систему. Для web - написать свою CMS (хотя бы базовую). Для десктоп-программ - попробовать программировать без навороченных библиотек, которые делают рутинную работу за программиста. Для разработчика игр - сделать простую игру на базовом инструментарии платформы, где всё придётся делать своими руками.
    Всё это даст возможность проникнуться, почему всё делается именно так, даст понимание взаимосвязей разных частей программы.
    А потом, осознав это, выбрать один из уже готовых инструментов, и продолжать писать на нём, уже обладая более глубоким его пониманием.
    Ответ написан
    21 комментарий
  • Каким языкам программирования учить в колледже?

    lexxpavlov
    @lexxpavlov Автор вопроса
    Программист, преподаватель
    Не надо привязывать мышление учеников к конкретному языку
    А на чём же эти алгоритмы практически отрабатывать? «Компилировать» блоксхемы? Базовый язык всё-равно нужен.
    Вот если бы я готовил профессионального высококвалифицированного программиста, то я бы давал 3-5 языков под разные задачи, плюс ещё десяток «для общего развития».
    Теория, алгоритмы — это важная основа для будущего программиста.
    Это да. Основная часть моей будущей работы :) Научить строить алгоритмы. Поднимать вопрос «Почему» чаще, чем «Как».
    не понимающих, что такое переменные…
    Встречал, конечно. Принимал у таких экзамены, самому противно было «тройку» ставить.
    Это тоже часть работы. Таких случаев постараюсь не допускать.
    Ответ написан
  • Каким языкам программирования учить в колледже?

    lexxpavlov
    @lexxpavlov Автор вопроса
    Программист, преподаватель
    Попрошу знатоков про C# подробнее написать. Насколько лёгок в освоении/первоначальной настройке?
    Плюсы я точно давать не буду — не потянут большинство, поэтому смысла нет. А вот с шарпом может дело пойти.
    Ответ написан
    6 комментариев