natalia's blog

By natalia, 10 years ago, In Russian

Как-то решила полюбопытствовать, чему учат в школе в Германии. Думаю, вам тоже будет интересно.

Абитур (Abitur) — это экзамен, который сдают немецкие школьники при окончании гимназии для поступления в университет. Вкратце о системе образования в Германии. После окончания 4-летней начальной школы дети в зависимости от их способностей и желания родителей распределяются по трем типам школ: 9-летней общеобразовательной школой (Hauptschule), 10-летней средней школой (Realschule) и 12-летней гимназией (Gymnasium). Сроки обучения указаны в сумме с начальной школой. Поступать в университет можно только после гимназии. В последние два года обучения в гимназии школьники обладают достаточно большой свободой в выборе предметов, которые будут учить и сдавать. Предметы можно изучать на базовом или продвинутом уровне. Поэтому приведенная ниже программа абитура относится только к наиболее способным школьникам (оказавшимся в гимназии, а не в школе другого типа) и при этом планирующим поступать на специальность, связанную с IT.

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

Абитур может проходить в разных гимназиях и в разных землях (Bundesländer) Германии по-разному, хотя многие земли проводят централизованный абитур, особенно по основным предметам. Так что скорее всего программа не является единственной существующей.

Программа абитура

I. Объектно-ориентированное программирование

I1. Концепция объектно-ориентированного программирования

  • классы, объекты, атрибуты, методы, инкапсуляция
  • диаграммы классов (проектирование, имплементация)
  • отношения между классами: ассоциация, наследование
  • абстрактные классы, полиморфизм

I2. Структуры данных

  • Линейные структуры данных
    • Очередь и стек
      • применение стандартных операций
      • реализация стандартных операций
    • Линейные списки
      • применение стандартных операций
    • Алгоритмы поиска и сортировки
      • рекурсия
      • поиск
      • сортировка вставками
      • на продвинутом уровне: QuickSort
  • Деревья
    • Бинарное дерево
      • применение стандартных операций
      • алгоритм обхода
    • Бинарное дерево поиска
      • применение стандартных операций
      • алгоритм обхода
      • на продвинутом уровне: реализация методов insert и search
  • Только на продвинутом уровне: графы
    • матрица смежности, списки смежности
    • применение стандартных операций
    • обход графа в ширину и в глубину
    • поиск кратчайшего пути между вершинами: перебор, алгоритм Дейкстры

I3. Проектирование сетевых приложений

  • сетевые протоколы, TCP/IP
  • клиентские приложения
  • клиент-серверные приложения
  • криптография
    • симметричное шифрование (Цезарь, Виженер)
    • асимметричное шифрование (RSA)
    • обмен ключами (Диффи-Хеллман)

II. Реляционные базы данных

  • моделирование жизненных задач при помощи модели сущность-связь
  • схемы баз данных
  • нормализация: приведение баз данных к первой и третьей нормальным формам
  • реляционная алгебра (выбор, проекция, объединение, разность, декартово произведение, переименование)
  • SQL-запросы к одной или нескольким таблицам
  • аспекты защиты данных

III. Конечные автоматы и формальные языки

  • моделирование жизненных задач при помощи конечных детерминированных автоматов
  • представление конечных детерминированных автоматов графами и таблицами
  • формальные языки: регулярные языки и их грамматики
  • на продвинутом уровне: разработка парсера для одного простого формального языка

Заранее прошу меня простить за качество перевода. Мое знание немецкого языка, да и (чего там греха таить) некоторых пунктов программы далеко от совершенства. Но вроде бы удалось сохранить смысл. Буду рада исправлениям и уточнениям, вот оригинал. Как я поняла из пояснений оттуда, разделы I1 и I2 обязательны, из остальных трех пунктов I3, II и III в школе должны пройти хотя бы два. Наиболее распространенные языки программирования — Delphi и Java.

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

  • Выбирается число 2 ≤ z ≤ 6. Берется некоторая перестановка чисел от 1 до z. Это ключ.

  • Перестановка записывается в верхнюю строчку таблицы, слева направо.

  • Имеется некоторый текст (строчка из латинских букв). Он записывается слева направо под перестановкой. Когда строка таблицы заканчивается — переходим на следующую.

  • Если последняя строчка заполнена не до конца — добавляются символы #.

  • После этого цифры перестановки переставляются в порядке возрастания вместе с соответствующими столбцами.

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

Дан текст aidsttssegrneeghm#i# и ключ 3 1 4 2.

Опишите алгоритм расшифровки текста.

Приведите расшифрованный текст.

Приведите алгоритм перебора всех перестановок из n элементов для заданного числа n ≥ 2.

Напишите программу, которая делает следующее:

  • Читает текст.

  • Выбирает число z, 2 ≤ z ≤ 6, при помощи генератора случайных чисел.

  • Перебирает все перестановки чисел от 1 до z.

  • Выбирает одну перестановку при помощи генератора случайных чисел.

  • Шифрует текст.

  • Выводит зашифрованный текст.

Используйте в программе ваш алгоритм для перебора всех перестановок чисел от 1 до n.

Напишите программу, которая делает следующее:

  • Читает зашифрованный текст и соответствующую перестановку.

  • Дешифрует его.

  • Выводит расшифрованный текст.

Протестируйте программы друг с другом. Опишите тестирование ваших программ.

Опишите методы разработки, которые вы использовали.

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

  • Vote: I like it
  • +52
  • Vote: I do not like it