|
|
|
|
| |
| |
| |
|
Методика работы Школы программистов необычна для средней школы и заимствует некоторые подходы университетского образования. Ученики МШП посещают несколько обязательных и факультативных курсов. Каждый школьник имеет возможность сам формировать индивидуальную программу обучения - выбирая и посещая те курсы, которые соотносятся с его интересами и возможностями. Обязательные курсы составлены методическим советом Школы программистов таким образом, чтобы они образовывали непрерывный цикл трехгодичного обучения программированию. Обязательные курсы закладывают основы правильного алгоритмического мышления будущего программиста, вырабатывают парадигму рограммирования и являются базисом для обучения любым языкам и системам программирования. Школьники глубоко изучают алгоритмический язык Pascal, а также основы построения и анализа нетривиальных алгоритмов. Кроме того, в число обязательных курсов входят некоторые разделы математики, выходящие за рамки школьной программы, но, тем не менее, необходимые для успешного освоения программирования. Это, в первую очередь, дискретная математика и ее разделы: теория множеств, математическая логика, теория чисел, комбинаторика, теория графов, а также элементы линейной алгебры, аналитической геометрии, теории игр и криптографии. Обязательные курсы составляют учебную нагрузку, равную, как правило, четырем академическим часам в неделю. Программа первого семестра (октябрь - январь) общая для всех групп и включает только следующие обязательные курсы:
| Программа обучения в Мытищинской Школе программистов, 1 год обучения, 1 семестр
| | № | Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Алгоритмическое программирование на языке Pascal
| 2
|
| 2.
| Введение в алгоритмы
| 1
|
| 3.
| Дискретная математика
| 1
|
В конце января, по окончанию первого семестра для всех школьников проходит
Закрытая Олимпиада Школы Программистов - основная форма контроля достигнутых результатов.
Приведем несколько, на наш взгляд, наиболее удачных задач, предлагавшихся на прошлых олимпиадах
для первого года обучения:
-
Практика показала, что следующая задача является одной из лучших на тему ветвление.
На наш взгляд, с дидактической точки зрения, трудно найти задачу лучше этой, которая бы
ввела школьника в проблематику "олимпиадного программирования". Для решения не требуется
никаких специальных знаний и сложного программирования, однако при всей кажущейся простоте
задачи, на ней могут "сесть в лужу" даже самые сильные школьники. Мало у кого проходит самый
сложный тест к задаче - 134 (ответ должен быть1 0 0)
-
(Московская городская олимпиада по программированию, 1988 год) [3]
Пара носков стоит 1.05 руб., связка (12 пар) стоит 10.25 руб., а коробка (12 связок) стоит
114 руб. Составьте программу, которая по числу n пар носков, которые хочет купить покупатель,
вычисляет числа n1, n2, n3 коробок, связок и пар носков, которые ему следует (выгоднее всего)
купить. Пример входных данных: 11. Пример выходных данных: 0 1 0 (вместо 11 пар носков следует
покупать связку - это обойдется дешевле).
В задаче "Волшебная последовательность" есть над чем поломать голову, однако решается она
гениально просто - достаточно одного цикла FOR. Лучшей олимпиадной задачи для начинающих на
тему "циклы" трудно придумать. Главное здесь - догадаться до идеи, как строить последовательность
(Ответ: N-2 единиц, 2 и N)
-
(I Всероссийская Командная Олимпиада по программированию)
Недавно Петя научился считать. Он тут же заметил, что число 2 обладает замечательным свойством 2+2=2x2 .
Его старший брат Ваня тут же объяснил ему, что дело не в двойке. "Дело в том, что последовательность
2, 2 - волшебная," - сказал Пете Ваня. - "Волшебная последовательность - это такая последовательность
натуральных чисел, что сумма ее членов равна их произведению. Например, последовательность 1, 2, 3 - тоже волшебная."
Петя тут же сложил 1, 2 и 3, потом перемножил их и обрадовался.
Теперь Петя хочет найти более длинные волшебные последовательности. Помогите ему!
В олимпиаде для первого семестра традиционно предлагается много задач
целочисленной арифметики, в решениях которых запрещено использование логических выражений
и условных операторов. Главное здесь - при ограниченных ресурсах (фактически div и mod), выписать
формулы для решения задачи, которые должны, ко всему прочему, работать при любых входных
данных, включая граничные случаи. Задача "Часы" - одна из самых сложных задач, она предлагалась
на I Закрытой Олимпиаде Школы программистов. Об этой задаче в Школе программистов ходят легенды -
вывод формулы, которая решает последние два пункта задачи и работает при любых входных данных,
на разборе задач занял около часа!
По результатам олимпиады учащиеся разделяются на группы трех уровней, обучение в которых
далее осуществляется по различным программам.
| Программа обучения в Мытищинской Школе программистов, 1 год обучения, 2 семестр
|
| №
| Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Алгоритмическое программирование на языке Pascal
| 2
|
| 2.
| Комбинаторика для программистов
| 1
|
| 3.
|
- Построение нетривиальных алгоритмов и программ (группы 1 уровня)
- Алгоритмы и алгоритмические языки (группы 2 уровня)
- Развивающие задачи (группы 3 уровня)
| 1
|
| 4.
| Спецкурсы по выбору
| до 2 часов
|
Начиная со второго года обучения, доля основных курсов начинает уменьшаться,
а доля спецкурсов - постепенно увеличивается.
| Программа обучения в Мытищинской Школе программистов, 2 год обучения, 3 семестр
|
| №
| Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Структурное программирование на языке Pascal
| 2
|
| 2.
| Начала линейной алгебры и аналитической геометрии (группы 1 уровня)
| 1
|
| 3.
| Построение нетривиальных алгоритмов и программ (группы 1 уровня)
| 1
|
| 4.
| Спецкурсы по выбору
| до 4 часов
|
| Программа обучения в Мытищинской Школе программистов, 2 год обучения, 4 семестр
|
| №
| Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Структурное программирование на языке Pascal
| 2
|
| 2.
| Спец. главы дискретной математики (группы 1 уровня)
| 1
|
| 3.
| Построение нетривиальных алгоритмов и программ (группы 1 уровня)
| 1
|
| 4.
| Спецкурсы по выбору
| до 4 часов
|
На третьем году обучения у школьников остается только один обязательный курс -
основной курс "Программирование на языке Pascal", всю остальную программу обучения школьники
формируют сами.
| Программа обучения в Мытищинской Школе программистов, 3 год обучения, 5 семестр
|
| №
| Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Эвристическое программирование на языке Pascal
| 2
|
| 2.
| Спецкурсы по выбору
| до 6 часов
|
| Программа обучения в Мытищинской Школе программистов, 3 год обучения, 6 семестр
|
| №
| Курс
| Учебная нагрузка (в неделю)
|
| 1.
| Объектно-ориентированное программирование на языке Object Pascal
| 2
|
| 2.
| Спецкурсы по выбору
| до 6 часов
|
|
|
|