Технологии обратного проектирования
Цели и задачи
- Цель по SMART: к концу урока учащиеся объяснят принцип обратного проектирования, выделят этапы восстановления алгоритма по результату и применят этот способ при анализе двух фрагментов программного кода.
- Сформировать представление об обратном проектировании как о способе восстановления структуры, алгоритма и требований цифрового объекта по его готовому результату.
- Научить выделять входные данные, преобразования и выходные данные при анализе готовой программы или цифрового продукта.
- Развивать умение строить гипотезы, проверять их с помощью запуска программы, таблицы трассировки и обсуждения в паре.
- Показать связь обратного проектирования с программированием, тестированием, инженерией и профессиональным самоопределением; снизить тревожность перед заданиями ОГЭ за счёт пошагового алгоритма анализа.
Планируемые результаты
Личностные
- Осознавать ценность внимательного анализа готового цифрового продукта перед его изменением или улучшением.
- Проявлять интерес к профессиям программиста, тестировщика, аналитика и инженера.
- Понимать, что сложную задачу можно разделить на последовательность проверяемых шагов.
- Сохранять уверенность при работе с незнакомым кодом и воспринимать ошибку как источник информации.
- Ответственно соблюдать правила использования чужого программного кода и цифровых результатов.
Метапредметные
- Выделять существенную информацию в условии, коде, интерфейсе и результате работы программы.
- Планировать анализ по схеме «результат — гипотеза — проверка — вывод».
- Сравнивать предполагаемый и фактический результат, находить причину расхождения.
- Работать в паре, распределять роли аналитика и проверяющего, аргументировать вывод.
- Использовать цифровой инструмент для запуска программы и фиксации результатов наблюдения.
Предметные
- Знать понятие обратного проектирования и его основные этапы.
- Уметь восстанавливать предполагаемый алгоритм по входным данным и результату выполнения программы.
- Уметь строить простую таблицу трассировки значений переменных.
- Уметь находить логическую ошибку в короткой программе и предлагать исправление.
- Владеть алгоритмом анализа, применимым к заданиям на чтение и интерпретацию программного кода в формате ОГЭ.
Универсальные учебные действия (УУД)
Личностные УУД
- Осмысливают практическую значимость анализа программ для учебной и будущей профессиональной деятельности.
- Формируют готовность доводить проверку гипотезы до обоснованного вывода.
- Оценивают собственную готовность к решению незнакомых задач ОГЭ по информатике.
- Соблюдают этические нормы при изучении и изменении чужого программного продукта.
Регулятивные УУД
- Формулируют цель анализа программы и составляют последовательность действий.
- Фиксируют затруднение, выдвигают гипотезу и проверяют её запуском программы.
- Сверяют полученный результат с условием и корректируют рассуждение.
- Оценивают работу по критериям: точность, доказательность, полнота алгоритма.
Познавательные УУД
- Устанавливают связи между входными данными, командами программы и результатом.
- Моделируют выполнение алгоритма с помощью таблицы трассировки.
- Анализируют последовательность команд, условия и изменения переменных.
- Извлекают информацию из кода и преобразуют её в словесное описание алгоритма.
- Сравнивают несколько гипотез и выбирают подтверждённую результатом проверки.
Коммуникативные УУД
- Распределяют роли в паре и согласуют порядок совместной работы.
- Задают уточняющие вопросы о назначении команд и значениях переменных.
- Аргументируют ответ ссылкой на конкретную строку кода или результат запуска.
- Корректно принимают замечания партнёра и совместно формулируют итоговый вывод.
Подготовка учителя к уроку
- Подготовить презентацию с проблемным примером: готовый результат программы, входные данные и скрытый алгоритм.
- Распечатать карточки для пар: по одной карточке базового уровня и одной карточке повышенного уровня на пару.
- Подготовить два коротких фрагмента кода на используемом в классе языке программирования, допускающих запуск без дополнительной настройки.
- Создать на компьютерах или в браузере два файла с программами и заранее проверить их запуск.
- Вывести на доску схему «Результат → гипотеза об алгоритме → трассировка → проверка → вывод».
- Распечатать лист самооценки по одному на каждого ученика и мини-билет на выход по одному на каждого ученика.
- Подготовить проектор, компьютер учителя, компьютеры учащихся или мобильные устройства с доступом к среде программирования.
- Разместить на слайде памятку для ОГЭ: «прочитать условие — выписать данные — выполнить команды по порядку — проверить ответ».
Ход урока
Этап 1. Организационный момент и мотивация (4 мин)
Цель этапа: включить учащихся в проблемную ситуацию и показать практическую ценность обратного проектирования.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель приветствует класс и показывает на экране готовый результат: программа получила числа 4 и 7, а вывела 28. «Ребята, перед нами результат работы программы, но сам алгоритм пока неизвестен. Какие действия могли привести к числу 28? Умножение, сложение, несколько шагов? Сегодня мы попробуем восстановить замысел автора не угадыванием, а проверяемым способом». | Рассматривают результат, индивидуально записывают две гипотезы: «4 · 7» и «4 + 7, затем другое действие». Формулируют, что одного результата иногда недостаточно для однозначного ответа. |
2 мин | Учитель связывает задачу с практикой и ОГЭ: «Похожая логика используется, когда вы читаете незнакомую программу в задании ОГЭ. Не нужно пугаться кода. Мы будем двигаться по шагам и проверять каждое предположение. Обсудите с соседом, где такой анализ может пригодиться программисту или тестировщику». | В парах называют ситуации: поиск ошибки, изменение старой программы, проверка чужого алгоритма, восстановление работы устройства. Две пары озвучивают ответы. |
Завершение этапа: учитель подводит итог: «Мы увидели, что готовый результат не раскрывает алгоритм полностью. Значит, нам нужен способ рассуждать от результата к структуре программы. Сначала проверим, какие знания помогут нам это сделать».
Этап 2. Актуализация знаний и выявление затруднения (6 мин)
Цель этапа: актуализировать понятия алгоритма, переменной, условия и трассировки, зафиксировать затруднение.
Время | Действие учителя | Действие учеников |
|---|---|---|
3 мин | Учитель проводит приём «Блиц-проверка»: «Что называют алгоритмом? Что хранит переменная? В каком порядке обычно выполняются команды? Как проверить значение переменной после каждой строки?». На доске фиксирует ключевые слова: «команды», «данные», «порядок», «результат». | Отвечают: «Алгоритм — последовательность действий», «переменная хранит значение», «команды выполняются по порядку». Вспоминают таблицу трассировки и называют её назначение. |
3 мин | Учитель раздаёт парам карточку: «Даны команды: a = 3; b = 5; c = a + b; c = c * 2. Какой результат получится? Как восстановить ход вычислений, если виден только результат 16?». «Попробуйте решить, но отметьте, на каком шаге появляется затруднение». | Заполняют краткую таблицу: номер команды, значение a, значение b, значение c. Получают 16 и обсуждают, что при одном результате нельзя уверенно восстановить все промежуточные действия без дополнительных данных. |
Завершение этапа: учитель подводит итог: «Мы умеем выполнять алгоритм слева направо, но сегодня нам нужно рассуждать в обратную сторону: от результата к возможным действиям. Чтобы не превратить это в догадку, сформулируем точную цель и порядок проверки».
Этап 3. Постановка проблемы и целеполагание (4 мин)
Цель этапа: совместно сформулировать учебную задачу и алгоритм предстоящего исследования.
Посмотрите план целиком
Зарегистрируйтесь — и откройте план урока по этой теме полностью: цели, ход урока и рефлексия по ФГОС.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель задаёт проблемный вопрос: «Как по готовому цифровому результату понять, какие данные и команды к нему привели? Что нужно сделать, чтобы отличить правильную гипотезу от случайной?». Учитель принимает ответы без оценки и записывает на доске слова «наблюдать», «предположить», «проверить». | Формулируют проблему: «Нужно восстановить возможный алгоритм по результату и проверить его». Предлагают использовать исходные данные, код, запуск и таблицу промежуточных значений. |
2 мин | Учитель предлагает «Снежный ком»: сначала каждый записывает один шаг работы, затем объединяется в парах. «Соберите общий порядок действий из пяти шагов. Он станет нашей памяткой и поможет на заданиях ОГЭ». | Индивидуально предлагают шаги, затем в парах упорядочивают их. Формулируют алгоритм: «изучить результат; определить входные данные; выдвинуть гипотезу; проследить команды; проверить и сделать вывод». |
Завершение этапа: учитель подводит итог: «Цель определена: мы научимся восстанавливать логику цифрового объекта по его результату. Теперь проверим этот способ на короткой программе и сами откроем основные признаки обратного проектирования».
Этап 4. Открытие нового знания и работа с ИКТ (10 мин)
Цель этапа: открыть понятие обратного проектирования и применить его к программному коду с использованием цифровой среды.
Время | Действие учителя | Действие учеников |
|---|---|---|
3 мин | Учитель демонстрирует на экране программу: «x = 6; y = 2; z = x - y; z = z * 3; print(z)». «Сначала не запускаем. Предскажите результат и объясните, какие промежуточные значения появятся. Затем запустим программу и сравним гипотезу с фактом». | Индивидуально предполагают: «после третьей строки z равно 4, после четвёртой — 12». Записывают прогноз в тетрадь. |
4 мин | Учитель запускает программу и показывает таблицу трассировки: «Обратите внимание: мы не ограничились ответом 12. Мы восстановили путь к нему. В обратном проектировании анализируют готовый объект, определяют его входы, предполагают структуру, проверяют работу и фиксируют расхождения». Учитель записывает определение на доске. | Заполняют таблицу трассировки по образцу. Формулируют определение: «Обратное проектирование — анализ готового продукта для восстановления его структуры, алгоритма или принципа работы». |
3 мин | Учитель раздаёт парам карточку с программой: «n = 8; k = 3; r = n + k; r = r // 2; print(r)». «Сначала выполните анализ на бумаге, затем проверьте запуском. Если результат отличается, найдите строку, где появилась ошибка». Учитель консультирует пары, обращая внимание на целочисленное деление. | В парах распределяют роли: аналитик записывает значения, проверяющий запускает программу. Получают: r = 11, затем r = 5. Сверяют бумажный прогноз с экраном и исправляют возможные ошибки. |
Запись в тетрадях
Учащиеся записывают: «Обратное проектирование — анализ готового цифрового продукта для восстановления его структуры, алгоритма или принципа работы. Этапы: результат и входные данные; гипотеза; трассировка; запуск и проверка; вывод. Важно: результат проверки должен подтверждать гипотезу».
Завершение этапа: учитель подводит итог: «Мы открыли, что обратное проектирование — это не механическое угадывание, а последовательная проверка гипотезы. Сейчас применим памятку к учебной задаче, где потребуется не только получить результат, но и объяснить ход рассуждения».
Этап 5. Первичное закрепление в парах (7 мин)
Цель этапа: закрепить алгоритм обратного проектирования при анализе программы и научиться аргументировать ответ.
Время | Действие учителя | Действие учеников |
|---|---|---|
4 мин | Учитель раздаёт карточки: «Программа получает a = 5 и b = 4. Затем выполняются команды: c = a * b; c = c - 6; print(c). Восстановите все промежуточные значения, назовите результат и объясните, какую ошибку допустит человек, если сразу вычтет 6 из одного исходного числа». Учитель напоминает: «Каждое утверждение подтверждаем строкой программы». | В парах строят таблицу: после первой команды c = 20, после второй c = 14. Записывают ответ «14» и объясняют: «Сначала вычисляется произведение, затем из результата вычитается 6». Один ученик объясняет, второй задаёт уточняющий вопрос. |
3 мин | Учитель проводит взаимопроверку «Две звезды и пожелание»: «Сравните решение с соседней парой. Запишите две сильные стороны и одно пожелание: например, указать промежуточное значение или точнее объяснить порядок команд». | Сверяют таблицы, отмечают два достоинства и одно улучшение. Исправляют запись, если пропущена команда или перепутан порядок действий. |
Эталон решения
1) Исходные данные: $a=5$, $b=4$. 2) Выполняем первую команду: $c=a\cdot b=5\cdot4=20$. 3) Выполняем вторую команду: $c=20-6=14$. 4) Вывод: программа выводит $14$. Ошибка возникает, если не учитывать последовательность команд или считать, что переменная $c$ каждый раз получает значение заново без использования предыдущего результата.
Завершение этапа: учитель подводит итог: «Пары показали, что точный ответ складывается из промежуточных шагов. Мы научились не только назвать результат, но и доказать его. Теперь каждый самостоятельно проверит, насколько уверенно умеет использовать этот алгоритм».
Этап 6. Самостоятельная работа с самопроверкой (9 мин)
Цель этапа: индивидуально применить алгоритм анализа и выполнить задание, близкое по логике к формату ОГЭ.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель раздаёт карточки трёх уровней и поясняет критерии: «Базовый уровень выполняют все. В нём нужно построить трассировку. Если справились уверенно, переходите к повышенному: найдите ошибочную строку и предложите исправление. Работайте самостоятельно, вопросы сначала отмечайте знаком вопроса». | Выбирают уровень с учётом собственной готовности, записывают фамилию и начинают индивидуальное решение. |
5 мин | Учитель предлагает базовую программу: «p = 10; q = 4; r = p - q; r = r * 2; print(r)». Для повышенного уровня добавляет: «В программе вместо умножения на 2 записано сложение с 2. Объясните, почему результат изменится». Через пять минут учитель выводит эталон на экран. | Индивидуально заполняют трассировку: $r=6$, затем $r=12$, ответ — 12. Для повышенного уровня объясняют, что при ошибочной команде получится 8, а исправление — заменить операцию сложения на умножение. |
2 мин | Учитель организует самопроверку: «Проверьте три позиции: все ли команды записаны по порядку, изменяется ли значение переменной, совпадает ли итог с выводом программы. Поставьте себе отметку по критериям и отметьте цветом место затруднения». | Сверяют решение с эталоном, исправляют ошибки, ставят самооценку. Поднимают зелёную карточку при готовности объяснить решение, жёлтую — при частичном затруднении. |
Завершение этапа: учитель подводит итог: «Самостоятельная работа показала, что главный инструмент анализа — не память на команды, а последовательная фиксация промежуточных значений. Осталось обобщить способ и проверить, что каждый сможет применить его в новой ситуации».
Этап 7. Рефлексия и домашнее задание (5 мин)
Цель этапа: осознать способ действия, выявить затруднения и определить дальнейшую практику.
Время | Действие учителя | Действие учеников |
|---|---|---|
2 мин | Учитель раздаёт «Билет на выход»: «Запишите одним предложением, что такое обратное проектирование, перечислите его этапы и укажите одну типичную ошибку при трассировке. Это не контрольная оценка, а сигнал, что нужно повторить». | Индивидуально заполняют билет: определение, пять этапов и пример ошибки — нарушение порядка команд или пропуск изменения переменной. |
2 мин | Учитель проводит рефлексию «Светофор»: «Зелёный — могу самостоятельно восстановить алгоритм; жёлтый — понимаю способ, но ошибаюсь в вычислениях; красный — нужна помощь с самой последовательностью действий. Поднимите карточку и назовите один следующий шаг». | Поднимают карточки, формулируют: «повторю таблицу трассировки», «потренирую порядок выполнения команд», «проверю условные операторы». |
1 мин | Учитель сообщает домашнее задание и напоминает: «Выполняйте базовый уровень обязательно, а повышенный выбирайте как тренировку. Ошибка в домашней работе — повод разобрать шаг, а не причина отказаться от задачи». | Записывают домашнее задание, задают уточняющие вопросы, сдают билеты на выход. |
Завершение этапа: учитель подводит итог: «Сегодня мы научились идти от результата к алгоритму, проверять гипотезу запуском и фиксировать промежуточные значения. Этот способ поможет и при чтении незнакомого кода, и при подготовке к ОГЭ. На следующем уроке применим его к программам с условиями и повторениями».
Критерии оценивания практической работы
- «5» — правильно выполнена самостоятельная карточка, записаны все промежуточные значения, объяснён порядок команд и корректно найдено исправление для повышенного задания.
- «4» — получен верный итоговый результат, но допущена одна неточность в таблице трассировки или объяснении, не повлиявшая на общий вывод.
- «3» — верно определена часть промежуточных значений и итог при наличии подсказки, но пропущена команда либо не обоснована проверка результата.
Рефлексия
Вопрос для ученика | Цель вопроса |
|---|---|
Что такое обратное проектирование своими словами? | Проверка осознания основного понятия, а не механического запоминания формулировки. |
Какие пять шагов помогают восстановить алгоритм по результату? | Выявление понимания последовательности действия. |
На какой строке программы возникло затруднение и как вы его проверили? | Выявление точек затруднения в трассировке и самоконтроле. |
Какой тип задания ОГЭ теперь сможете решать увереннее? | Связь нового способа с учебной мотивацией и профессиональной перспективой. |
Завершающее слово учителя
«Сегодня мы увидели, что незнакомый код можно исследовать спокойно и последовательно. Мы двигались от результата к гипотезе, выполняли трассировку и проверяли вывод запуском программы. Самая частая ошибка — пропустить промежуточное изменение переменной или нарушить порядок команд. На следующем уроке мы усложним анализ и рассмотрим условия и циклы, но будем использовать тот же надёжный алгоритм проверки».
Домашнее задание
Уровень | Что задать | Зачем |
|---|---|---|
Базовый (обязательный) | Решить 3 короткие задачи на трассировку линейных программ с двумя-тремя переменными и арифметическими операциями; для каждой записать промежуточные значения и итоговый вывод. | Закрепляет последовательное выполнение команд; при проверке смотреть на порядок действий и изменение значений переменных. |
Средний (повышающий) | Проанализировать 2 фрагмента кода с одной логической ошибкой: определить фактический результат, объяснить расхождение с ожидаемым и предложить исправление. | Формирует умение находить причину ошибки и аргументировать исправление по конкретной строке. |
Продвинутый (дополнительный) | Составить собственную небольшую программу из 5–7 команд, получить для неё пример результата и написать к ней обратное описание: входные данные, этапы алгоритма, таблица трассировки и возможная ошибка. | Развивает создание и анализ цифрового продукта; при проверке смотреть на полноту алгоритма, проверяемость результата и ясность объяснения. |
Контрольные вопросы перед выходом: «Что анализируют при обратном проектировании? Зачем нужна таблица трассировки? Почему одного итогового результата иногда недостаточно? Как проверить, что восстановленный алгоритм верен?»