Сервисы подготовки к олимпиадам по программированию

Дистанционная подготовка по информатике

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

Олимпиадные курсы Центра педагогического мастерства

Программа дополнительного профессионального образования «Развитие таланта школьников в предметных областях. Организация и проведение этапов всероссийской олимпиады школьников и других интеллектуальных соревнований».

E-Olymp

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

Timus Online Judge

Крупнейший в России архив задач по программированию с автоматической проверяющей системой. Основной источник задач для архива — соревнования Уральского федерального университета, Чемпионаты Урала, Уральские четвертьфиналы ICPC, Петрозаводские сборы по программированию.

Алгоритмическое программирование. Очно-заочный курс Петра Калинина

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

Фоксфорд

Онлайн-школа для учеников 1−11 классов, учителей и родителей. На онлайн-курсах и индивидуальных занятиях с репетитором школьники готовятся к ЕГЭ, ОГЭ, олимпиадам, изучают школьные предметы. Занятия ведут преподаватели МГУ, МФТИ, ВШЭ и других ведущих вузов страны.

Яндекс.Лицей

Яндекс.Лицей — это образовательный проект Яндекса по обучению школьников программированию. Учебная программа рассчитана на два года. На занятиях ребята знакомятся с теорией и осваивают технологии на практике. Обучение в Яндекс.Лицее бесплатное.

С программированием школьники знакомятся на примере Python. Этот язык несложно освоить, к тому же он позволяет решать множество задач. Python — один из самых популярных языков в мире, применение ему находится и в YouTube, и в NASA, и у нас в Яндексе. А ещё он назван в честь «Летающего цирка Монти Пайтона». В общем, отличный вариант для начала.

Общие сведения о языке программирования Си

Язык Си – это универсальный язык программирования высокого уровня, распространённый среди системных программистов.

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

Си используется для разработки прикладных программ, экранных редакторов и операционных систем.

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

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

Си был разработан в 1972 году сотрудником фирмы «Bell Laboratories» Денисом Ритчи, который имел большой опыт в системном программировании – разработки языков программирования, операционных систем, генераторов программ, текстовых процессоров.

Язык Си лучше всего подходит именно для таких задач. После разработки Си Денис Ритчи работал над созданием системы UNIX. Практически любая программа, поставляемая UNIX, включая саму операционную систему, и компилятор языка, написанном на языке Си, в том числе Basic, Fortran.

Язык Си был стандартизован в 1986 году американским национальным институтом.

Первым языком по этому стандарту стал язык Turbo C (Турбо Си) под MS-DOS. Он был разработан фирмой Borland International.

Язык Си компактен, является относительно маленьким языком за счёт того, что в его состав не были включены ввод-вывод и средства для работы со строками.

Достоинства языка Си:

  • Эффективность. По компактности и скорости выполнения программ Си приближается к ассемблеру;
  • Мощность. Си содержит большое число современных управляющих конструкций и способы создания данных;
  • Структурированность. Си поддерживает все основные принципы структурного программирования;
  • Модульность. Строится из отдельных функций (программа). Существует возможность создания многофайловых программ;
  • Мобильность;
  • Лаконичность.

Си это современный язык, который включает в себя те конструкции, которые рекомендуются для теоретического и практического программирования.

Результат работы – это надёжная и читаемая программа.

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

Компиляторы и интерпретаторы других языков написаны на Си.

Си поддерживает хороший стиль программирования.

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

По объему оперативной памяти и времени выполнения программы программы приближаются к программам на ассемблере.

Уровни языков программирования

Разные типы процессоров имеют разный набор команд. Если язык программирования ориентирования на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня.

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

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

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

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

10 мифов современного образования

Миф 1. Университет не должен давать профессию — университет должен учить студента учиться

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

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

Приветственная речь пятому курсу факультета ИТ

— Профессор, я иду на красный диплом, но не могу найти работу.
— Задача университета — научить человека учиться.
— Но пять лет назад в день открытых дверей вы говорили о том, как много даст нам ваш вуз.
— Что-то не припомню…

Интересно, если бы эту фразу кричали во время набора абитуриентов, количество желающих учиться осталось бы прежним?

Миф 2. Университет учит учиться

Если действительно задача вуза «научить человека учиться» и вуз занимается ей пять(!) лет, почему же он так плохо справляется со своей главной задачей?

Давайте разберемся…

Кто в вузе выучил хотя бы две методологии самообучения? Никто?

Ну а тайм-менеджмент? Это такая очень полезная штука для работы, учебы, да и всей вашей жизни.

Скорочтение? Mind map? Техники запоминания информации? Не, не слышал.

Интернет, последнее достижение человечества, способен поднять вашу эффективность в 2-5 раз. Назовите любые 10 способов самообучения. Нет, Вконтакте и Фейсбук не считаются.

А как насчет умения пользоваться поисковыми системами? Между прочим, очень важный навык для самообразования. Вы умеете ими пользоваться, точно? Назовите 5 общих поисковых систем и 5 узкоспециализированных по вашей профессии. Их более 2000, если что.

Составление резюме? Уж точно пригодится каждому человеку. И этому в вузе не учили? Ах, да, вуз же не готовит профессионалов. Такое ощущение, что список предметов выбирается по принципу «если это может помочь профессиональной деятельности — исключить»!

Миф 3. Задача университета готовить ученых. Если вы хотите учиться профессии — идите в ПТУ

«Все профессии нужны, все профессии важны».

Миру нужны профессионалы. Но степени знаний и ответственности у разных профессий разные. Есть профессии, которые требуют 3-4 года обучения, а есть такие, на которые нужно учиться 5 или даже 8 лет.

К примеру, хирург, делающий операции на сердце vs терапевт vs медсестра. Практикующий адвокат vs помощник юриста vs секретарь в приемной. Для медсестры достаточно трех лет среднего профессионального образования, а вот хирурга, как и адвоката, придется пять лет учить в вузе.

Задача вуза — делать из абитуриента высококлассного профессионала.

Миф 4. Университет должен учить всему. Само его название говорит об этом

Университет (от лат. universitas — совокупность, общность) — многопрофильное учебное заведение, занимается подготовкой специалистов во многих областях. Т.е. университет не готовит специалиста в 10 областях, а имеет 10 разных факультетов, на каждом из которых готовит специалиста одного узкого направления.

Миф 5. Большинство успешных людей закончило престижные вузы

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

Миф 6. Люди идут в университет, чтобы получать знания

Зачем люди вообще идут учиться в вуз?

Мне очень нравится краткий ответ моего заокеанского друга: «Ради хорошей работы: чтобы оплачивать ипотеку и покупать еду».

По эту сторону океана многие тоже соглашаются с таким утверждением.

Миф 7. Все знания полезны: поучись в вузе — хуже не будет

Это если вы выбираете между «проучился пять лет в вузе» и «провел пять лет в коме». Пять лет — это ведь очень большая цена. Если кто-то предложит вам iPad за вашу почку, вы же не согласитесь? Так почему вы соглашаетесь на «всякие знания о разном» за пять лет вашей жизни?! Пять лет — это чудовищная цена. Вы молоды, активны, амбициозны. Готовы познавать мир и показать ему на что способны.

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

Не лгите себе: вуз — это такое тихое местечко, где можно тянуть лямку и убеждать себя, что ты работаешь над собой, не выходя из зоны комфорта.

Миф 8. Я бы не променял свое студенческое время ни на что

А на стажировку в Apple?

Некоторые лекции гораздо скучнее любой работы. А чтобы общаться со сверстниками и решать интересные задачи, не обязательно пять лет ездить в «специальное место».

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

Миф 9. Средний уровень интеллекта у тех, кто не учился в вузе ниже, чем у выпускников

Корреляция между интеллектом и высшим образованием есть, несомненно. Но что причина, а что следствие — это другой вопрос. Думается мне, что не вуз причина большого ума, а наоборот: чем умнее человек, тем больше шансов, что он поступит в вуз «потому что может, и все так делают» (с).

Миф 10. Преимущество университета в том, что он развивает мозг

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

Работаете уже пять лет и все знаете? Есть Википедия, профессиональные форумы, умные книжки и читалки. Самообразование — это интересно и не сложно.

Миф 11. Кто умеет — идет работать, кто не умеет — учит

В этой статье всего 10 мифов.

Источники: 

Схемные элементы ЭВМ

Преобразование информации в ЭВМ осуществляется элементами (схемами) в двух классах:

  1. Комбинационные классы.
  2. Последовательностные (схемами с памятью).

Состояние выходов комбинационных схем однозначно определяется состояниями входов в данный момент времени.

Состояние выходов в последовательностных схемах определяется не только состоянием входов, но и внутренними состояниями, имевшими место в предыдущие моменты времени.

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

Логический элемент компьютера – это часть электронной схемы, которая реализует элементарную логическую функцию.

Логическими элементами компьютера являются электронные схемы (логическое умножение, сложение и т.п.), а так же триггер.

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

Триггер имеет два устойчивых состояния:

  1. Двоичная единица.
  2. Двоичный ноль.

Для обозначения этой схемы в английском языке используют термин «flip-flop», который обозначает хлопанье или звукоподражательное название электронной схемы, которая указывает на её способность мгновенно переходить из одного состояния в другое.

Классификация элементов и устройств ЭВМ

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

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

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

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

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

Роль и место знаний по дисциплине «Архитектура ЭВМ и вычислительных систем» в сфере профессиональной деятельности

Архитектура ЭВМ – это общее описание структуры и функций ЭВМ. На уровне, достаточном для понимания, принципов работы систем команд ЭВМ.

Архитектура не включает в себя описание деталей физических и технических устройств компьютера.

Основные компоненты архитектуры ЭВМ: процессор, внутренняя основная память, внешняя память, устройство ввода, архитектура вывода.

ЭВМ является важнейшим из факторов информации, который включает в себя:

  • Технические средства (ЭВМ и системы, программные средства).
  • Программный фактор – собственно информация, т. е. сигналы, сообщения, массивы данных, файлы и базы данных.
  • Человеческий труд (человеческий гуманитарный фактор).

Перечисленные факторы соответствуют также историческим этапам развития информатизации.

Можно выделить следующие фазы, на каждой из которой доминируют какой-либо из упомянутых факторов:

  1. Технический период, за который сложились основные представления о структуре универсальных ЭВМ, определились архитектура и типы устройств – с 1946 по 1954 годы (приблизительно).
  2. Программный период – выработалась современная классификация программных средств, их структур и взаимосвязей, сложились языки программирования, были разработаны первые компиляторы и принципы процедурной обработки. С 1954 по 1970 годы.
  3. Информационный период – в центре внимания исследователей и разработчиков оказывается структура данных, языков описания и манипулирования, процедурные подходы по строению систем обработки информации – с 1970 по настоящее время.
  4. Гуманитарный период, связанный с узким вырастанием труда пользователей автоматизированной информационной технологии и повышением роли интерфейсных и навигационных возможностей соответствующих систем (сначала 1990-х годов прошлого века)

Традиционные IT были подчинены производителям информации (информационных систем) и доводили одинаковое содержание (создавали однотипные возможности) до всех адресатов.

Новые IT направлены на индивидуального пользователя, представляя получить возможность нужной именно ему информацию.

Что такое архитектура и что такое вычислительная система

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

Вычислительная система (ВС) – это взаимосвязанная совокупность аппаратных средств вычислительной техники и программного обеспечения, предназначенная для обработки информации.

Иногда под ВС понимают совокупность технических средств ЭВМ, в которую входит не менее двух процессоров, связанных общностью управления и использования общесистемных ресурсов (память, периферийные устройства, программное обеспечение и т.п.).

Информационные технологии. Информационное общество

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

История возникновения и развития ИТ с одной стороны – это история развития средств обработки информации, с другой это история развития человечества. В середине 20-го века началось бурное развитие научно-технического прогресса (НТП). Стремительно развивались технические средства обработки информации. В результате этого сформировалось общество, которое принято называть информационным.

В мире накоплен огромный информационный потенциал: Общая сумма знаний человечества менялось раньше очень медленно, но уже с 1900 г. Она удваивалась каждые 50 лет, к 1950 г. удвоение происходило каждые 10 лет. К 1970 г. – каждые 5 лет, а с 1990 г. – ежегодно.

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

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

Информация – единственный уникальный вид ресурсов, который в развитии человечества не только не истощается, но качественно совершенствуется. Она не требует ни простого, ни расширенного воспроизводства.

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

В процессе развития научно-технической революции возникли новые науки, например, кибернетика и информатика.

Термин технология в советском энциклопедическом словаре означает искусство, мастерство, умение.

Этот термин можно рассматривать в двух аспектах:

  1. Технология – это совокупность наук о способах и методах переработки сырья в готовый продукт.
  2. Технология – это последовательность действий, направленных на получение готового продукта.

Информационные технологии – это процесс сбора, хранения, обработки и передачи информации с использованием современных технических средств и программного обеспечения.

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

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

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

Каждый вычислительный центр в России должен был содержать в своей структуре следующие подразделения:

  1. Службу постановки задач.
  2. Службу математического обеспечения.
  3. Службу технического обеспечения.
  4. Службу информационного обеспечения.
  5. Службу подготовки и контроля данных.
  6. Службу обработки данных на ЭВМ.
  7. Административно-хозяйственную службу.

ИТ создали моду на профессию программиста. Вокруг всего, что было связано с ЭВМ, царила загадочность. Идея создания искусственного интеллекта, возникшая ранее, в эти годы стали привлекательными.

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

Считается, что современный специалист должен обладать информационной культурой. Информационные технологии, которые используются в настоящее время, основаны на применении технических средств с «дружественным» интерфейсом. Технология использования ПО унифирована, что позволяет легко осваивать программные продукты. Скорость получения информации определяет её актуальность. В обществе, где информация служит стратегическим ресурсом, это является определяющим фактором.

Введение в контейнерную виртуализацию Docker

Вы работали с виртуальными машинами? Oracle VM VirtualBox, например? VirtualBox — это гипервизорная виртуализация, т.е. вы под основной ОС запускаете несколько программных эмуляций железа, на которых крутятся произвольные «гостевые» ОС (Linux, Windows, Mac OS, FreeBSD, вообще любые другие).

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

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

Минусы в том, что ты можешь запускать только ОС которые могут работать с одним и тем же ядром (например RedHat и Debian или Ubuntu). К тому же изоляция не такая абсолютная как в гипервизорной виртуализации, т.е. если один хост словил панику ядра — лежат все.

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

Предполагаю, что многие хостинги работают с контейнерной виртуализацией. И когда вы оплачиваете хостинг, то вас выдают какой-то сервак из облака и есть вероятность что вам как раз дают такой контейнер который шарит ядро ОС с другими контейнерами.

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

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

В общем, интересная штука, которая может быть полезна многим.