• Теории вероятностей: готовимся к собеседованию и разрешаем «парадоксы»


      Каждый год я участвую примерно в сотне собеседований в образовательных проектах JetBrains: собеседую абитуриентов в Computer Science Center и корпоративную магистратуру ИТМО (кстати, набор на программу идёт прямо сейчас). Все собеседования устроены по одному шаблону: мы просим на месте порешать задачи и задаём базовые вопросы по дисциплинам, которые студенты изучали в университетах. Большинство вопросов, которые мы задаём, довольно простые — нужно дать определение некоторого понятия, сформулировать свойство или теорему. К сожалению, у значительной доли студентов все эти определения выветриваются сразу после экзаменов в университетах. Казалось бы, что тут удивительного? В современном мире любое определение можно за пару секунд нагуглить, если это нужно. Но невозможность восстановить базовое определение свидетельствует о непонимании сути предмета.

      Если непонимание алгебры или математического анализа может мало влиять на вашу жизнь, то непонимание теории вероятностей делает из вас лёгкую мишень для обмана и манипулирования. Суждения о вероятностях различных событий настолько глубоко вошли в нашу повседневную жизнь, что умение правильно рассуждать и отличать правду от невежества или манипуляции является необходимым. В этом небольшом обзоре мы поговорим о базовых понятиях теории вероятностей, научимся правильно формулировать утверждения про простые случайные процессы и разберём несколько парадоксов. Часть материала позаимствована из брошюры А. Шеня «Вероятность: примеры и задачи», которую я очень рекомендую для самостоятельного изучения.
      Читать дальше →
    • Программирование на Python — курс для желающих узнать о нём больше или изучить ещё один язык программирования

      • Tutorial
      "The joy of coding Python should be in seeing short, concise, readable classes that express a lot of action in a small amount of clear code — not in reams of trivial code that bores the reader to death."
      Guido van Rossum

      Python — язык программирования, на котором приятно писать и который приятно читать. Мы предлагаем тринадцать лекций осеннего курса CS центра, чтобы посмотреть вглубь языка и попробовать понять, как пользоваться всеми его возможностями. Лекции читает Сергей Лебедев, разработчик в компании JetBrains и преподаватель в Computer Science Center.

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

      Фотография сделана осенью 2014 года в Страсбурге, за две недели до начала первого прочтения этого курса.
      Открыть лекции курса
    • Онлайн-курс «Введение в теоретическую информатику» от Александра Ханьевича Шеня

        Категорически приглашаем всех желающих на онлайн-курс «Введение в теоретическую информатику» Александра Ханьевича Шеня, подготовленный совместно с Computer Science центром и платформой Stepic. Курс начнётся 24 февраля.



        Александр Ханьевич — автор многих популярных книг по математике и программированию. Многие его книги и брошюры можно бесплатно скачать с сайта издательства МЦНМО: например, «Программирование: теоремы и задачи» (Шень, 2004), «Лекции по математической логике и теории алгоритмов» (Верещагин, Шень, 2012), «Классические и квантовые вычисления» (Китаев, Шень, Вялый, 1999). Под его редакцией вышел перевод первого издания классического учебника «Алгоритмы: построение и анализ» (Кормен, Лейзерсон, Ривеста, 1990), а также недавнего учебника «Алгоритмы» (Дасгупта, Пападимитриу, Вазирани, 2006).

        В общем, у Александра Ханьевича огромный опыт чтения лекций как школьникам, так и студентам и аспирантам. Рассказывает он очень увлекательно и понятно. В онлайн-курсе он даст обзор различных направлений Theoretical Computer Science: криптография, инварианты циклов, вычислимость, переборные задачи, игры, коды, интерактивные доказательства и многое другое (всего в курсе восемнадцать глав!). В курсе будет много задач — как простых (закрепляющих изученный материал), так и более сложных, над которыми придётся поломать голову и тем, кто уже был знаком с теорией.

        Будем рады видеть вас среди слушателей онлайн-курса!
        stepic.org/104
        Читать дальше →
        • +26
        • 15.3k
        • 1
      • Теоретическая информатика в Санкт-Петербурге


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

          В прошлом году в Санкт-Петербургском академическом университете открылся бакалавриат (А), готовящий студентов по информатике с дальнейшей специализацией по теоретической информатике, разработке программного обеспечения или биоинформатике.

          В этом году в Санкт-Петербургском государственном университете открывается бакалавриат (Ч) по математике и теоретической информатике.

          Поскольку я принимал участие в создании обеих этих программ, коллеги настойчиво рекомендуют мне объясниться. (Зовут меня Эдуард Гирш, и я работаю в лаборатории математической логики ПОМИ РАН.)
          Читать дальше →
          • +19
          • 10.8k
          • 1
        • Построение графиков в LaTeX/PGFPlots

          image

          Данная статья посвящена описанию работы с пакетом PGFPlots, разработанного для популярной настольной издательской системы LaTeX. Однако, если вы даже не знакомы с последней, это не повод расстраиваться и бросать чтение этой статьи, ведь, возможно, те замечательные примеры, которые будут далее приведены, и необычайная мощность и удобство PGFPlots вдохновят вас на изучение LaTeX.
          Читать дальше →
        • Обзорные онлайн-курсы по математике

            Часто на собеседованиях в магистратуру СПбАУ или CS центр ребята затрудняются ответить на вопросы об элементарных понятиях как из классической, так и из дискретной математики. А эти знания требуются для освоения курсов алгоритмов, машинного обучения и прочих Computer Science дисциплин. Чтобы облегчить подготовку, Академический университет совместно с Computer Science Center этой весной запускают два онлайн-курса:

            1. Ликбез по дискретной математике. Преподаватель — А.В. Омельченко (СПбАУ РАН).
            2. Введение в математический анализ. Преподаватель — А.И. Храбров (СПбГУ, СПбАУ РАН, CS центр).

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

            Курсы размещены на дружественной платформе Stepic.
            Подробнее о курсах
          • Магистратура Академического университета открывает набор на 2015 год

              Мы рады объявить об открытии набора в магистратуру на 2015-2017 учебные годы.


              Магистратура Академического университета существует с 2008 года. Всё это время мы прикладываем очень много усилий, чтобы поддерживать в нашем университете благоприятную образовательную среду: подбираем качественные и интересные курсы, приглашаем в качестве преподавателей известных ученых и ведущих разработчиков, развиваем партнерские отношения с известными IT-компаниями, создаём удобную для студентов инфраструктуру.
              Читать дальше →
            • Перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures»

              • Tutorial
              imageПривет, Хабр!

              Мы (@ali_aliev и avenat) с удовольствием представляем вашему вниманию перевод интерактивного учебника «Problem Solving with Algorithms and Data Structures» от Брэда Миллера (Brad Miller) и Дэвида Ранума (David Ranum) из Luther College, что в Айове, США.

              О чём?

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

              Авторы рассказывают о таких структурах данных, как стеки, очереди (в том числе с приоритетом), деки, хэш-таблицы, списки, деревья и графы. Последним двум вообще посвящены весьма не маленькие главы. Изложение не просто описательное: для каждой структуры предлагается вариант (а иногда и не один) её реализации на Python. Упор, естественно, делается на объектно-ориентированное программирование: создаётся класс, к нему пишутся методы, некоторые из которых авторы оставляют читателям для самостоятельной доработки. Затем идут примеры использования рассмотренной структуры и описание алгоритмов с её участием.

              Одна из глав учебника посвящена рекурсии, в том числе её графическому представлению (фракталы). Разбирается несколько известных рекурсивных задач, а в конце наглядно демонстрируется, что эта методика, несмотря на её элегантность, отнюдь не «серебряная пуля».

              Не обделены вниманием и классические алгоритмы для сортировки и поиска. И, естественно, для каждого из них анализируются производительность и «подводные камни», а так же даются рекомендации по применению. В последних главах, посвящённых деревьям и графам, даётся много материала об их разновидностях и связанных с ними алгоритмах. Изложение тут становится более сжатым, многие моменты просто описываются с тем, чтобы после прочтения главы читатель реализовал их самостоятельно.
              Читать дальше →
            • Автоматическая оптимизация алгоритмов с помощью быстрого возведения матриц в степень

                Пусть мы хотим вычислить десятимиллионное число Фибоначчи программой на Python. Функция, использующая тривиальный алгоритм, на моём компьютере будет производить вычисления более 25 минут. Но если применить к функции специальный оптимизирующий декоратор, функция вычислит ответ всего за 18 секунд (в 85 раз быстрее):


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

                Эта статья расскажет о том, в каких случаях и каким образом декоратору удаётся делать подобные оптимизации. Также вы сможете сами скачать и протестировать библиотеку cpmoptimize, содержащую данный декоратор.
                Читать дальше →
              • Как мы делали студию для записи онлайн-курсов

                • Tutorial
                Если вкратце, то Stepic – это платформа, где каждый пользователь может создать и разместить свой собственный онлайн-курс. В прошлом году Стэпик использовался в курсе Bioinformatics Algorithms на Coursera как движок для проверки задач на программирование и анализ данных.

                Через какое-то время мы поняли, что стоит посодействовать развитию онлайн-образования и в России. Что для этого надо? Хорошие преподаватели и хорошая студия, где можно записывать видео. Поскольку мы любим программировать, то и начать решили с курсов, так или иначе связанных с программированием, это алгоритмы и структуры данных, операционные системы и язык С++ от преподавателей Computer Science Center.

                А еще через какое-то время мы поняли, что чем больше будет хороших студий для записи, тем лучше же для всех нас и образования в целом. Поэтому мы решили рассказать, показать и выложить в опенсорс все те небольшие наработки, которые на данный момент есть в Stepic по части видео-курсов и их производству.
                Читать дальше о том, как мы оборудовали офис под студию для автоматической записи онлайн-курсов
              • Опыт применения онлайн-курсов в Computer Science Center

                  Computer Science Center (образовательный проект ШАД Яндекса, компании JetBrains и Сomputer Science клуба при ПОМИ РАН) продолжает регистрацию на бесплатные массовые открытые онлайн-курсы (MOOC) по основам программирования.

                  Как мы уже писали, с 15 сентября 2014 года можно будет пройти следующие онлайн-курсы:
                  1. Алгоритмы и структуры данных (А.С. Куликов)
                  2. Введение в архитектуру ЭВМ. Элементы операционных систем (К.В. Кринкин)
                  3. Программирование на языке C++ (А.В. Смаль)

                  В данном посте пойдёт речь о том, как CS центр использовал онлайн-курс по Алгоритмам и структурам данных в качестве одного из этапов приёмной кампании в 2014 году.
                  Читать дальше →
                  • +24
                  • 16.1k
                  • 3
                • Чему нужно учить в магистратуре по Computer Science?

                    Продолжаем рассказывать о нашем опыте построения «самой лучшей магистратуры по Computer Science» =) и интересоваться мнением IT-сообщества. Напомню, что нашей целью было создать магистратуру с сильной программой, в которой не было бы «лишних» курсов. И благодаря сотрудничеству с Академией Современного Программирования и лабораторией математической логики Санкт-Петербургского отделения математического института им. В.А. Стеклова РАН у нас это успешно получилось сделать.

                    В прошлый раз мы написали о том, как создавалась кафедра и о том, чего нам удалось добиться за 5 лет.

                    В этом посте мы обсудим, чему нужно учить в магистратуре по Computer Science.


                    Читать дальше →
                  • Особенности русской разработки

                      image

                      По роду занятий я часто общаюсь с различными русскими и западными командами. Очень частый вопрос — есть ли какая-нибудь специфика в работе наших и как это влияет на разработку?

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

                      Книга замечательная и действительно многое объясняет в нашей истории. Обязательно прочтите, если не читали. Но я не готов ее рекомендовать как непосредственное руководство к действию. Выводы из нее следуют довольно-таки однозначные и не очень лестные для страны в целом. Однако на самом деле все не так плохо. Наша специфика не является абсолютно контрпродуктивной. Она дает и преимущества и недостатки.

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

                      Я буду приводить влияние разных факторов в порядке их важности и силы влияния. Чем выше — тем сложнее это изменить и тем больший эффект это оказывает.
                      Читать дальше →
                    • Мои маленькие хитрости при онлайн-обучении на Coursera

                        Давайте пообщаемся на тему самообучения и прослушивания курсов на таком прекрасном ресурсе, как Coursera. Сегодня я предложу почтеннейшей публике описание своих маленьких хитростей, которые я использую при онлайн-обучении на этом приятной во всех отношениях площадке. Ведь с начала этого года я прослушал 10 курсов, по результатам обучения получил 7 сертификатов (на одном из курсов сертификатов не предлагалось, а 2 курса я не осилил). Думаю, что на основании этого опыта я уже могу кое-что обобщить и предложить некоторые советы.

                        Сразу предупрежу, что здесь не будет и слова, о том, как получать сертификаты без обучения при помощи всяких «стрёмных технологий». Я опишу только то, что я успешно применял в своём личном обучении, что позволило мне не только получить сертификаты с годными словами на них, но и значительно продвинуть собственный уровень знания в некоторых областях. Итак, далее мы более или менее подробно рассмотрим:

                        1. Специальные методы организации времени
                        2. Скачивание и хранение всех материалов в структурированной папке
                        3. Использование интеллект-карт для конспектирования
                        4. Таблица для расчёта итоговой оценки
                        5. Реализация решений на любимом языке программирования
                        6. Рыскание по форумам в поисках наводок на способы решения задач
                        7. Немного об английском языке

                        Если кому интересно, то прошу проследовать…
                        Проследуем...
                      • Обзор предложений Coursera и edX

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

                          Расскажу про четыре курса, прослушанных мной осенью 2012 года, на Coursera и edX. На самом деле, курсов я взял чуть больше, но что-то было в рамках самостоятельного просматривания архива оконченных курсов (Computer Science 101, Introduction to Databases), а что-то прекращено по личным обстоятельствам.
                          Итак, рассмотрим следующие курсы:

                          Coursera
                          1. Fundamentals of Programming
                          2. An Introduction to Interactive Programming in Python
                          3. Information Security and Risk Management in Context

                          edX
                          1. Introduction to Computer Science and Programming

                          Если вас интересуют предложенные курсы, добро пожаловать.
                          Читать дальше →
                        • Лекториум записал почти тысячу лекций за год

                            Дорогой Хабр!



                            У нас для тебя небольшой подарок. Мы тут работали-работали и вот чего сделали.
                            Сняли и опубликовали почти тысячу лекций по IT и математике.

                            UPD2 Помогите, пожалуйста, оперативно решить вопрос насчёт организации торрентов на php.

                            Читать дальше →
                          • Международная конференция Computer Science Symposium in Russia (CSR 2011)


                              С 14 по 18 июня 2011 года в Санкт-Петербурге пройдёт 6-я Международная конференция Computer Science Symposium in Russia (CSR 2011). Темы конференции включают в себя алгоритмы и структуры данных, комбинаторную оптимизацию, теорию сложности вычислений, криптографию, комбинаторику, формальные языки и автоматы и др. Крайний срок подачи статей — 6 декабря 2010 года. Подробности на сайте конференции: http://logic.pdmi.ras.ru/csr2011
                              Ниже приведён список приглашённых докладчиков конференции.
                              Читать дальше →