Введение в концепции программирования. Лекция 1

И. Л. Мусабиров, П. В. Окопный,
при участии канд. пед. наук, доц. Н. Г. Дмошинской

23 ноября 2013: Doctor Who 50th Anniversary

План лекции

  • О курсе. Содержание и организационные моменты
  • Программирование. Зачем нам это нужно?
  • Problem solving. Какое отношение это имеет к программированию?
  • Problem solving. Основные понятия
  • Problem solving. Алгоритм решения проблем
  • Problem solving. Примеры и тонкости

О курсе

  • Организация
  • Домашние работы
  • Оценки
  • “Формулы зачёта”

Организация

Две части:

  • Во 2 модуле — 3 лекции + зачёт
  • В 3 и 4 модулях — семестровый курс (лекция + практика в неделю)

Для того, чтобы попасть на 2ю часть курса, нужно получить оценку не ниже 7 за 1й курс.

Домашние работы

  • Индивидуальные варианты (по номеру студенческого билета)

  • (доступны только на сайте курса)

  • Решения принимаются только в электронном виде на почту intropro2013@nosoc.io.

  • Дедлайны: 03.12 и 16.12, 23:59 (без опозданий)

Консультации: 30.11 и 14.12 с 12.20 до 13.40 в 410 аудитории. Запись на консультации по почте (с предварительными вопросами)

Оценки

  • Задания по лекции (1-3): до 7 баллов
  • + Задания по домашнему чтению:
    • Обязательное (часть A): до 8-10 баллов
    • Дополнительное (часть B): extra credits

"Формулы зачёта"

  • 8 и больше балов за оба домашних задания
  • 6-7 баллов + одна extra credits часть по любому домашнему чтению
  • 6-7 баллов по ДЗ + 6+ по опциональному заданию (Open data/Open Government)
  • 4+ по д/з и зачётная работа

Официальная дата зачёта: 28 декабря 2013 года.

Программирование. Зачем?

  1. Digital Trace > Big Data > Data Science
    • Сдвиг парадигмы
    • Где здесь место социолога?
  2. Reproducible Research | Data/Science Products
    • Доверие + перенос опыта: воспроизводимые исследования
    • “Активное знание”: интерактивные приложения/сервисы
    • Data/Science Products
    • Где здесь место социолога? (ещё один ответ)
  3. Что нам для этого нужно?

1. Digital Trace > Big Data > Data Science

Парадигмальный сдвиг:

От моделирования фрагментарных кусков действительности на основе теории к обнаружению и объяснению скрытых нетривиальных паттернов в данных.*

1. Digital Trace > Big Data > Data Science (2)

Где здесь место социолога?

2. Reproducible Research | Data/Science Products (3)

  • Воспроизводимые исследования: доверие и перенос опыта/клонирование (географическое, отраслевое и тд.)
  • Программа/интерактивная модель/сервис: активное знание

2. Reproducible Research | Data/Science Products (4)

http://www.syndiosocial.com/ (Chairman: Ношир Контрактор)

2. Reproducible Research | Data/Science Products (5)

Syndio Social provides tools and services that accelerate the adoption of new tools and behaviors within large organizations. We arm our clients with information on employee influence and adoption readiness, two key factors that make or break ‘must-not-fail’ initiatives. By applying social network science, we ensure that our clients have the best possible chances of their initiative succeeding while saving time and money.

http://www.syndiosocial.com/

  • Факторы: employee influence + adoption readiness
  • Инструменты: SNA

2. Reproducible Research | Data/Science Products (6)

Где здесь место социолога? (ещё один ответ)

Не задавать вопрос “Где могут работать социологи?”, а иметь на него конструктивный ответ.

3. Что нам для этого нужно?

Умение встраивания в технологическую цепочку (понимание интерфейсов) и цепочку добавления ценности (понимание бизнес-целей)

  • Навыки программирования
  • Навыки анализа данных
  • Особый тип мышления (computational thinking) и подход к решению проблем (problem solving)

Problem solving. Зачем?

  • Люди и рациональность: Cognitive biases
    • Две системы
    • Jumping to conclusions
    • The Linda Problem

Люди и рациональность: Cognitive biases

Дэниэл Канеман
(Daniel Kahneman)

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

Cognitive biases: Jumping to conclusions

  • Итак, “просто” принимать (хорошие) решения у нас получается плохо
  • Объяснять их машине — ещё хуже

Пример
Давайте найдём наибольшее число: 172, 134, 13

Cognitive biases: Substitution (The Linda Problem)

the Linda problem: Девушка Линда: одинока, разведена, умна и коммуникабельна. Будучи студентом была глубоко озабочена проблемами дискриминации и социальной справедливости.

Более вероятно что Линда:

  • банковский кассир
  • феминистка-банковский кассир?

Система 1 подменяет более сложную задачу менее сложной (substitution)

Problem solving. Зачем?

Две системы восприятия:

  • Система 1 — быстрые, автоматические, подсознательные, стереотипные решения. Отвечает за сопоставление новой информации с существующими паттернами.
  • Система 2 — медленные, трудозатратные, логические, осознанные решения
Решения кажутся очевидными и простыми, на деле:
  • Когнитивные искажения:
    • перескакиваем сразу к выводам,
    • заменяем сложные решения простыми,
  • Проблемы с рациональностью решений,
  • Проблемы с переводом для компьютера

Всё не так просто, нам нужен особый подход к решению проблем

Problem solving. Основные понятия

  • Problem: “проблема” и “задача”
  • Проблема, проблемная ситуация
  • База знаний. Предположения. Критерии.

Problem: "проблема" и "задача"

Problem (Oxford Dictionary):

1 a matter or situation regarded as unwelcome or harmful and needing to be dealt with and overcome; a thing that is difficult to achieve

2 an inquiry starting from given conditions to investigate or demonstrate a fact, result, or law.

  • (2) — Problem = Задача
  • (1) — Problem = Проблема

  • Problem solving = ?

  • Problem solving = Решение задач / Решение проблем

Проблема, проблемная ситуация

Problem: a matter or situation regarded as unwelcome or harmful and needing to be dealt with and overcome. (Oxford English Dictionary)

  • Объективный аспект (situation)+ Субъективный аспект (regarded — by whom?)

Проблема — субъективное отрицательное отношение субъекта к реальности. (Тарасенко, 2010)

  • Описывает проблемы любого происхождения
  • Указывает, что проблем не существует “в реальности” (без субъекта)

База знаний. Предположения. Критерии

База знаний (Knowledge Base) — в наших целях, набор знаний, доступных субъекту, для которого мы решаем проблему

Субъект = Исполнитель?

Учтём, что эта субективность распадается на две части:

  • знания, доступные исполнителю алгоритма (машине, человеку, …)
  • субъективность (приоритеты, предпочтения, знания, критерии) стейкхолдера (заинтересованного лица)

База знаний. Предположения. Критерии (2)

Предположение (допущение) (Assumption) — фиксируемый нами (исходя из наших представлений о ситуации) один из вариантов неопределнности.

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

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

Problem solving. Основные понятия

  • Problem: “проблема” и “задача”
  • Проблема: “субъективное отрицательное отношение субъекта к реальности” (объективный + субъективный аспект)
  • База знаний — определяет набор знаний исполнителя (и предпочтения стейкхолдера)
  • Предположение — фиксируемый нами (исходя из наших представлений о ситуации) один из вариантов неопределнности. Указываем сделанные предположения явно!

Problem solving. Алгоритм решения проблем

  • Предварительные замечания
  • Алгоритм решения проблем
  • Проблема или задача?
  • Шаги алгоритма

Алгоритм решения проблем. Предварительные замечания

(Sprankle, M. Problem Solving and Programming Concepts)

  • Не единственный алгоритм (см (Тарасенко 2010), (Extended prelude to programming), etc).
  • Каждый шаг заслуживает отдельного алгоритма,
  • Содержит много неявных допущений
  • Недостаточно строгий для реальной работы, но неплохой для начала.

Алгоритм решения проблем

  1. Identify the problem.
  2. Understand the problem.
  3. Identify alternative ways to solve the problem.
  4. Select the best way to solve the problem from your list.
  5. List instructions that enable you to solve the problem with your selected solution.
  6. Evaluate the solution.
  1. Выявите проблему (задачу?)
  2. Поймите проблему
  3. Выявите альтернативные решения
  4. Выберите лучшее(*) решение из списка альтернатив
  5. Составьте инструкцию по реализации лучшего решения
  6. Оцените решение

Проблема или задача?

1. Выявите проблему (задачу?)

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

Для нас в курсе problem solving = решение задач, но иногда мы будем говорить и про проблемы

1. Выявите задачу

Какую задачу Вы пытаетесь решить?

Неверное определение задачи приводит к тому, что наше решение будет хорошим (субъективность!), но бесполезным.

Пример: Больной зуб. Приём обезболивающего решает краткосрочную задачу (пересидеть лекцию), но не решает долгосрочной (зуб остаётся больным)

Пример задачи: Как утром добраться до университета? (Ответы “рано”, “быстро” и “просто” не являются решениями)

2. Поймите задачу

Решение любой задачи требует наличия знаний о предметной области. (Базы знаний)

База знаний: Карта и знания о системе городского транспорта.

База знаний и допущения:

  • Опеределяют требования к исполнителю (и формулировке алгоритма решения)
  • Ограничивают область допустимых решений

3. Определите альтернативные решения

Если задача решаема(!), необходимо выявить альтернативные решения.

Как добраться до университета:

  • Автобус или троллейбус
  • Маршрутка
  • Трамвай
  • Такси
  • Пешком
  • Как-то ещё?

4. Выберите лучшее(*) решение из списка альтернатив

Лучшее — с какой точки зрения?

Определите критерии выбора (От чего они зависят?).

Где применяются ограничения и как проявляются? (Бюджет, время, ресурсы)

Как приехать в университет:

  • Быстрее?
  • Дешевле?
  • Наименее неприятным способом?

“Точки субективности”

5. Составьте инструкцию по реализации лучшего решения

Составьте “рецепт” лучшего решения (“алгоритм”)

  1. Выйти из дома за N минут до нужного времени.
  2. Пройти 100 метров, повернуть направо. Пройти 500 метров. Зайти в здание станции метрополитена.
  3. Если нет проездного — купить жетон.
  4. и так далее..

6. Оцените решение

Правильное ли это решение? Как это можно продемонстрировать? Как судить об этом?

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

Выбранный способ поездки действительно лучший? Как его можно улучшить?

Решение задачи — итеративный процесс проб разных решений и внесения изменений их с целью улучшения.

Problem solving. Алгоритм решения проблем

  1. Выявите задачу
  2. Поймите задачу
  3. Выявите альтернативные решения
  4. Выберите лучшее(*) решение из списка альтернатив
  5. Составьте инструкцию по реализации лучшего решения
  6. Оцените решение

Решение задачи — итеративный процесс проб разных решений и внесения изменений с целью их улучшения.

Problem solving. Примеры и тонкости

  • “Заточить карандаш”: пример 1
  • “Перевести текст”: пример 2. Субъективность критериев
  • “Купить книгу в интернет-магазине”: пример 3. Итеративное улучшение

"Заточить карандаш": Задание

3–5 мин.:

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

"Заточить карандаш" (2)

  • шаг 1
    • Задача: Иметь острый карандаш
    • Проблема: Заинтересованное лицо не устраивает острота карандаша, есть тест заточенности.
    • Может реальная проблема — ему нечем писать? Или рисовать? (Как это выяснить: Задавать вопрос “Почему?”)
  • шаг 2
    • Допущение: наличие точилки
    • База знаний исполнителя вкючает пользование точилкой

"Заточить карандаш" (3)

  • шаг 3 Альтернативные решения:
    • заточить тупой карандаш,
    • взять запасной (а он есть?),
    • купить новый,
    • писать ручкой
  • шаг 4. Выбор решения:
    • Критерий: время + стоимость -> Решение: Заточить карандаш
    • Альтернативы: IELTS (время дорого, купить нельзя). Решение?
  • шаг 5. Инструкции:
    1. Взять карандаш и точилку.
    2. Заточить карандаш.
    3. Выбросить опилки.

"Заточить карандаш" (4)

  • шаг 6
    • Оценка: Можно ли оптимизировать по критериям (сделать ещё проще и дешевле)?
    • Тестирование: решена ли проблема? (А какая она была?)

"Перевести текст": пример 2. Субъективность критериев

Задача: Сделать перевод текста на английский

  • Делаем для зачёта по английскому и достаточно наскрести на “уд.”?
  • Перевод для статьи в рецензируемом журнале с жесткой политикой?

Выбор критерия определяет выбор решения

Выбор критерия зависит от субъективных предпочтений Заинтересованного лица (стейкхолдера)

"Купить книгу в интернет-магазине": Итеративное улучшение

Задача: Купить книгу в Amazone.

"Купить книгу в интернет-магазине": Задание

Задача: Купить книгу в Amazone.

5–7 минут

  • Варианты формулировки проблемы?
  • Кто стейкхолдер (персона)?
  • Какие могут быть критерии и ограничения?

"Купить книгу в интернет-магазине" (2)

В чём может быть проблема (Зачем нам покупать книгу?)

  • Нет литературы по теме?
  • Нечего почитать?
  • Нужно сделать подарок?

"Купить книгу в интернет-магазине" (3)

Изменения допущений и базы знаний, влияние на решение

  • Знаем или не знаем, какую книгу хотим купить? (search patterns)
  • Знаем автора? Выбираем из доступных книжек
  • Знаем тему? Ищем книгу по подборкам

"Купить книгу в интернет-магазине" (4)

Критерии выбора и ограничения

  • Доставка и оплата: вариабельность критериев, ограничения
  • Смена глобальной цели: оптимизирую затраты (kindle + rent?)

Problem solving. Примеры и тонкости

  • База знаний и допущения:
    • Опеределяют требования к исполнителю (и формулировке алгоритма решения)
    • Ограничивают область допустимых решений
  • Выбор критерия зависит от субъективных предпочтений Заинтересованного лица (стейкхолдера)
  • Выбор критерия определяет выбор конкретного решения
  • Решение задачи — итеративный процесс проб вариантов решений и внесения изменений с целью их улучшения
  • Детальность и формулировка алгоритма решения зависит от исполнителя

Литература

  • Базовая литература
  • Проблемы и задачи. Анализ требований. Проектирование
  • Data/Science Products

Базовая литература

  • См. сайт курса!
  • S.J.E. Taylor. Introduction to programming. University of London International Programmes Course Guide (Preview). Chapter 1: General problem-solving
  • Sprankle, M. Problem Solving and Programming Concepts. Pearson/Prentice Hall (Издание 7 или более позднее). Глава 1
  • Stewart Venit and Elizabeth Drake. Extended Prelude to Programming. Глава 0
  • Stewart Venit and Elizabeth Drake. Prelude to Programming: Concepts and Design (5th Edition ISBN-13: 978-0132167390) Глава 0

Проблемы и задачи. Анализ требований. Проектирование

Будем мало говорить про проблемы, но это важно:

  • http://www.wikihow.com/Define-a-Problem
  • Расселл Л. Акофф, Джейсон Магидсон, Герберт Дж. Эддисон, Идеализированное проектирование. Как предотвратить завтрашний кризис сегодня. Создание будущего организации. (2007)
  • Dean Leffingwell. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. (2011)
  • Тарасенко Ф. П. Введение в системный анализ. Концептуальный подход. (2010)
  • http://en.wikipedia.org/wiki/Problem_solving

Data/Science Products

Спасибо за внимание!

  • Лекцию читал: Илья Леонидович Мусабиров
  • Лекция подготовлена: И. Л. Мусабиров, П. В. Окопный,
    при участии канд. пед. наук. доц Н. Г. Дмошинской
  • Сайт курса: http://courses.nosoc.io
  • E-mail курса: intrpro2013@nosoc.io

NOSoc.io