научится применять словари, стеки, очереди, деки для решения задач обработки данных; научится использовать деревья для организации данных; познакомится с методами описания графов и некоторыми популярными алгоритмами на графах; научится использовать динамическое программирование для решения комбинаторных и оптимизационных задач; познакомится с понятием выигрышных и проигрышных позиций в играх с полной информацией; В результате изучения курса во второй год обучающийся: познакомится с объектно-ориентированным подходом к разработке программ; научится выполнять объектно-ориентированный анализ задачи, выделять свойства и методы объектов; научится использовать инкапсуляцию для защиты данных объектов; познакомится с понятиями «класс» и «абстрактный класс»; познакомится с понятиями «инкапсуляция», «наследование», «полиморфизм»; научится проектировать несложные иерархии классов для прикладных задач; познакомится с принципами разработки событийно-ориентированных программ; научится создавать программы с графическим интерфейсом на языках Python и C#; научится использовать готовые и создавать новые компоненты (виджеты) для сред быстрой разработки программ. 2. Содержание курса внеурочной деятельности Программирование на языке Python. Простейшие программы. Диалоговые программы. Переменные. Консольный ввод и вывод данных. Компьютерная графика. Система координат. Управление пикселями. Графические примитивы: линии, прямоугольники, окружности. Изменение координат. Анимация. Процедуры. Процедуры с параметрами. Рефакторинг. Обработка целых чисел. Арифметические выражения. Деление нацело. Остаток от деления. Обработка вещественных чисел. Особенности представления вещественных чисел в памяти компьютера. Операции с вещественными числами. Случайные и псевдослучайные числа. Генераторы случайных чисел. Ветвления. Условный оператор. Полная и неполная формы условного оператора. Вложенные условные операторы. Логические переменные. Экспертные системы. Сложные условия. Логические операции И, ИЛИ, НЕ. Порядок выполнения операций. Циклы с условием. Алгоритм Евклида. Обработка потока данных. Бесконечные циклы. Циклы по переменной. Шаг изменения переменной цикла. Циклы в компьютерной графике. Узоры. Вложенные циклы. Штриховка. Этапы создания программ. Методы проектирования программ «сверху вниз» и «снизу вверх». Интерфейс и реализация. Документирование программы. Подпрограммы: процедуры и функции. Процедуры. Процедуры с параметрами. Локальные и глобальные переменные. 2 Функции. Логические функции. Рекурсия. Рекурсивные процедуры и функции. Фракталы. Символьные строки. Сравнение строк. Операции со строками. Обращение к символам. Перебор всех символов. Срезы. Удаление и вставка. Встроенные методы. Поиск в символьных строках. Замена символов. Преобразования «строка — число». Символьные строки в функциях. Рекурсивный перебор. Массивы (списки). Массивы в языке Python. Создание массива. Обращение к элементу массива. Перебор элементов массива. Генераторы. Вывод массива. Ввод массива с клавиатуры. Заполнение массива случайными числами. Алгоритмы обработки массивов. Сумма элементов массива. Подсчёт элементов массива, удовлетворяющих условию. Особенности копирования списков в Python. Поиск в массивах. Линейный поиск. Поиск максимального элемента в массиве. Максимальный элемент, удовлетворяющий условию. Использование массивов в прикладных задачах. Матриц. Создание и заполнение матриц. Вывод матрицы на экран. Перебор элементов матрицы. Квадратные матрицы. Сложность алгоритмов. Асимптотическая сложность. 8 класс Программирование на языке Python Сортировка массивов. Метод пузырька (сортировка обменами). Метод выбора. Сортировка слиянием. Быстрая сортировка. Сортировка в языке Python. Двоичный поиск в массиве данных. Двоичный поиск по ответу. Обработка файлов. Типы файлов. Чтение данных. Запись данных. Обработка данных из файла. Целочисленные алгоритмы. Решето Эратосфена. Целочисленный квадратный корень. Словари. Алфавитно-частотный словарь. Перебор элементов словаря. Структуры. Классы. Создание структур. Работа с полями структур. Хранение структур в файлах. Сортировка структур. Стек. Использование списка. Вычисление арифметических выражений. Скобочные выражения. Системный стек. Очередь. Дек. Деревья. Деревья поиска. Обход дерева. Использование связанных структур. Вычисление арифметических выражений. Графы. Описание графа. Жадные алгоритмы. Минимальное остовное дерево. Алгоритм Дейкстры. Алгорим Флойда–Уоршелла. Использование списков смежности. Динамическое программирование. Числа Фибоначчи. Количество программ для исполнителя. Двумерные задачи. Поиск оптимального решения. Игровые модели. Выигрышные и проигрышные позиции. Проблема сложности программ. Процедурный и объектно-ориентированный подходы к написанию программ. Классы и объекты. Объектно-ориентированный анализ. Взаимодействие объектов. Свойства и методы. Классы и объекты в программе. Объявление класса. Поля класса. Конструктор класса. Данные и методы класса. Скрытие внутреннего устройства. Доступ к полям через методы. Свойства (property). Свойство «только для чтения» 3 Иерархия классов. Наследование. Базовый класс. Доступ к полям. Классы-наследники. Полиморфизм. Разработка модулей. Событийно-ориентированное программирование. Программы с графическим интерфейсом. Форма. Свойства формы. Обработчики событий. Использование компонентов (виджетов). Ввод и вывод данных. Обработка ошибок с помощью исключений. Создание компонентов. Добавление свойств и методов. Составные компоненты. Модель и представление. 3. Тематическое планирование 7 класс (68 часов) Номер урока Тема занятия Кол-во часов Форма организации учебных занятий Основные виды уче бной деятельности урок редактирование программ редактирование программ Просмотр учебных фильмов программирование Просмотр учебных фильмов программирование редактирование программ программирование Просмотр учебных фильмов наблюдение за демонстрациями учителя программирование наблюдение за демонстрациями Программирование на языке Python 1. Первые программы 2 2. Диалоговые программы 2 урок 3. Компьютерная графика 4. Процедуры 5. Обработка целых чисел 6. Обработка вещественных чисел 7. Случайные и псевдослучайные числа 8. Ветвления 9. Сложные условия 10. Циклы с условием 11. Циклы с условием: 12. Анимация 2 урок 2 урок 2 урок 2 урок 2 урок 2 урок 2 урок 2 урок 2 практикум 2 урок 4 13. 2 урок 2 урок 2 практикум Циклы по переменной 14. Циклы в компьютерной графике 15. Выполнение проекта 16. Выполнение проекта 2 17. Выполнение проекта 2 18. Проектирование программ 2 19. Процедуры практикум практикум практикум 2 урок 2 урок 20. Рекурсия 21. Функции 2 урок 22. Символьные строки 2 урок 2 урок 23. Обработка символьных строк 24. Строки в функциях 2 урок 25. Массивы 2 урок 2 урок 26. Ввод и вывод массивов 27. Суммирование элементов массива 2 урок Подсчёт элементов массива, удовлетворяющих условию 2 урок 28. 29. Поиск значения в массиве 2 урок 2 урок 30. Поиск максимального элемента в массиве 31. Игра «Стрельба по тарелкам» 2 урок 32. Игра «Стрельба по тарелкам» 2 урок учителя Просмотр учебных фильмов наблюдение за демонстрациями учителя программирование программирование программирование программирование Просмотр учебных фильмов Работа с раздаточным материалом программирование программирование редактирование программ программирование программирование редактирование программ программирование Работа с раздаточным материалом программирование Работа с раздаточным материалом программирование программи5 33. Матрицы 34. Сложность алгоритмов 2 урок 2 урок рование Просмотр учебных фильмов редактирование программ 8 класс (68 часов) Номер урока Тема занятия Кол-во часов Форма организации учебных занятий Основные виды учеб ной деятельности урок редактирование программ программирование Работа с раздаточным материалом программирование программирование программирование программирование Работа с раздаточным материалом программирование программирование программирование Просмотр учебных фильмов программирование программирование наблюдение за демонстрациями Программирование на языке Python 1. Простые алгоритмы сортировки 2 2. Сортировка слиянием 2 3. Быстрая сортировка 2 4. Двоичный поиск 2 5. Обработка файлов 2 6. Обработка файлов: практикум 2 7. Целочисленные алгоритмы 2 урок урок урок урок практикум урок урок 8. Словари 2 9. Структуры 2 10. Структуры: практикум 2 11. Стек, очередь, дек 2 12. Деревья 2 13. Графы 2 14. Графы: практикум 2 урок практикум урок урок урок практикум урок 15. Динамическое программирование 2 6 Номер урока Тема занятия Кол-во часов 16. Динамическое программирование: практикум 2 17. Игровые модели 2 18. Игровые модели: практикум 2 Форма организации учебных занятий практикум практикум семинар 19. Что такое ООП? 2 20. Модель задачи: классы и объекты 2 21. Классы и объекты в программе 2 22. Классы и объекты в программе: практикум 2 23. Скрытие внутреннего устройства 2 24. Иерархия классов 2 25. Классы-наследники (I) 2 26. Классы-наследники (II) 2 27. Доработка игры 2 28. Событийно-ориентированное программирование 2 29. Использование компонентов (виджетов) 2 урок урок практикум урок урок урок урок практикум урок урок урок 30. Использование компонентов (виджетов) 2 31. Создание компонентов 2 32. Модель и представление 2 33. Выполнение проекта 2 34. Выполнение проекта 2 урок урок практикум практикум Основные виды учеб ной деятельности учителя программирование программирование программирование наблюдение за демонстрациями учителя моделирование редактирование программ программирование программирование программирование программирование программирование программирование программирование программирование редактирование программ программирование программирование программирование программирование 7