[Logo] Форум DL
  [DL]  На главную страницу 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3, 4, 5, 6, 7
Автор Сообщение
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль
Часть переписки с Олей Савицкой

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

[MD] Да я согласен с тобой. Так нельзя.
Но пока в обучении их как раз приходится набирать.
В то же время обучение можно бросить в любой момент и перейти к набору в среде CodeBlocks, где эти строчки будут вставляться.


Я бы предложила в нескольких первых задачах всё же тренировать.
[MD] В общем, это один из вопросов, который ещё нужно решать.

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


Я просто боюсь, что не успеем сделать и будем мучать началку в Си.
[MD] Оля, я же сразу и ПЕРВЫЙ заявил, кого и как учить ТЕБЕ решаешь ТЫ. И сам же заявил, что начинать с Паскаля имеет свои плюсы для подавляющего большинства (особенно для тех, кто всё равно потом дальше программированием заниматься не будет). Однако я думаю, для продвинутых ребят (Костя Коновал, Саша Иванов … ) может быть и потеря времени (возможно значительного) на переучивание на С++ потом.

Когда у нас не было обучения на С++, у нас и альтернативы не было.
А когда есть альтернатива – грех не попробовать.

Кстати, забегая вперёд.

Набрёл тут на очень интересную статью
eSeeCode: Creating a Computer Language from Teaching Experiences
Joan ALEMANY FLOS, Jacobo VILELLA VILAHUR
eSeeCode.com
Spain


Мой краткий конспект по-английски


Там очень многое мне нравится.
Я ещё предполагаю её подробно по-русски законспектировать, а потом затеять обсуждение, какие идеи (а возможно и код, там open source проект – то есть исходники в свободном доступе)
и как нам интегрировать к себе.


P.s. Инструкцию по установке C::B делаю.
[MD] Ты – золото, но пока ты думала, и я думал.
Возникла идея сделать также и пошаговую видео-инструкцию (смотришь и делаешь по образцу)
– а такое ты умеешь?
Вот примеры
Так (флеш)
http://dl.gsu.by/task.jsp?nid=492065&cid=669
Может с помощью Юриного конструктора?

Но поскольку флеш перестают поддерживать, наверно лучше так (кстати, Юра делал)
http://dl.gsu.by/theory.jsp?id=5743&cid=419
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль


Михаил Долинский :

Набрёл тут на очень интересную статью
eSeeCode: Creating a Computer Language from Teaching Experiences
Joan ALEMANY FLOS, Jacobo VILELLA VILAHUR
SeeCode.com
Spain

Мой краткий конспект по-английски

Там очень многое мне нравится.
Я ещё предполагаю её подробно по-русски законспектировать, а потом затеять обсуждение, какие идеи (а возможно и код, там open source проект – то есть исходники в свободном доступе)
и как нам интегрировать к себе.
 
Не стал конспектировать, сделал полный перевод

eSeeCode: Создавая компьютерный язык из опыта обучения
Вадим Байдаков

Темы: 0
Сообщений: 1

Мой профиль
Михаил Семенович, здравствуйте!
"Ускоренный курс - 2016". Он уже есть?
Направьте, пожалуйста, если не трудно.
Спасибо!
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль
Мысли по ходу чтения этой статьи
(в сравнении с нашим обучением)

1. Низкий пол, высокий потолок
Высокий потолок мы обеспечиваем выбором языка
(было – Паскаль, добавился С++, в планах Python, Java, Kotlin)

Низкий пол
   Для Паскаля у нас была цепочка
    - Учимся думать 
    - Слова (из первой программы: program, var, longint, begin, readln, writeln,end)
        - порядок слов в программе 
        - соответcтвие – русские – английские слова
        - расположение английских букв этих слов на клавиатуре
        - набор английских слов 
    - Число 
        - дополнительные задания на  закрепление навыков ввода первой программы
        - задания на развитие мыслительных операций на базе программ и их фрагментов
        - цепочка заданий нарастающей сложности 

Дополнительный низкий пол
  - Чярис-задания в Конструкторе 
  - Чярис-задания в Паскале

   Для С++ ключевые слова main, int, cin, cout 
                 Спецзнаки { } << >> ; пробел
      Вводить русские аналоги (главная, число, ввести, вывести) 
      Делать задания на развитие мыслительных операций на базе программ и их фрагментов?

 Дополнительный низкий пол (не сделано – надо?)
   - поддержка ЧЯРис в С++

2. Среда компиляции и отладки    

    В Паскале – идеальная (маленькая, простая, мощная)

    В С++ 
       - ideone (простая в обращении, но в Инет, отладка только через отладочную печать) 
       - CodeBlocks 
       -   другие варианты
      
         - поддержка в системе дифференцированного обучения 
              - уже сделано 
                   - набор обучающих заданий    
                   - на основе посимвольного сравнения с авторским решением/обучением 
                     – подсветка ошибочных символов
                     - отображение строк с ошибкой
                     - автоотсылка на DL только корректных программ 
           - надо сделать
              - синтаксическая подсветка
              - встроенная проверка синтаксиса  
         - поддержка на DL (надо сделать)
              - два режима компиляции (с/без включённого контроля ошибок)  
              - получение от DL сообщения об ошибке компиляции 
              - автозапуск на тесте, на котором не прошло решение    
              - тестирование на своих данных 


3. А точно нужны уровни типа (Touch, Drag, Build) ?

Я понимаю, что детям начинать с них проще и интереснее, чем с Code.
Но может надо детей подтягивать до уровня требуемого для обучения
(абстрактное мышление в том числе и прежде всего),
а не снижать уровень обучения?

А есть уверенность, что это нам принесёт пользу, если наши цели таковы:

- В каждом занимающемся ребенке развивать: усидчивость, трудолюбие, упорство, дисциплину, желание учиться, аналитические навыки, самостоятельность, креативность.
- Каждому занимающемуся ребенку дать базовые навыки работы за компьютером.
- Помочь каждому занимающемуся школьнику ПОНЯТЬ, что такое программирование, и хочет ли он связать свое профессиональное будущее с программированием.
- Подготовить каждого, кто потратит соответствующее количество времени, к получению диплома Белорусской республиканской олимпиады по информатике и поступлению в вуз без экзаменов, завоеванию медали международной олимпиады по информатике.

И самая важная из них – последняя
(и она - единственная поддающаяся числовым измерениям)

4. Если всё-таки нужны

то возможны варианты
a) дотягивать ЧЯРис до eSeeCode
б) встроить eSeeCode в DL

в) сориентировать наши уровни Touch, Drag, Build на
работу и визуализацию переменных, строк, одномерных и двумерных массивов.

Для начала хотя бы для программ из раздела «Число»
- арифметические операции и задачи над числами
Блоки /иконки
«Ввод» (имя переменной - параметр) (может быть кнопка добавить имя - для ещё одного входного ...)
«Вывод» (имя переменной - параметр или "текст") - аналогично
"Присваивание" (параметры - имена результата и входных операндов и операции)
a=b+c - сумма (для поддержки большего количества слагаемых может быть кнопка добавить имя - для ещё одного входного ... )
a=b-c - разность
a=b*c - произведение
a=b/c - частное
a=b%c - остаток
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль


Вадим Байдаков:

Михаил Семенович, здравствуйте!
"Ускоренный курс - 2016". Он уже есть?
Направьте, пожалуйста, если не трудно.
Спасибо!
 
Извините, так получилось, что не сразу заметил Ваш вопрос.
Базовое программирование.
Выбираете дерево заданий "Differential Study 2"
Выбираете язык обучения С++

Кликаете по строке
"Ускоренный курс - 2016"
Вадим Байдаков

Темы: 1
Сообщений: 4

Мой профиль
Ещё раз спасибо Михаил Семёнович!
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль
Уточнённые представления о том, когда переходить на С++

Возможны варианты
(решается индивидуально с каждым учеником)

- не переходить на С++
- переходить на С++ после того, как взял диплом на республике
- переходить на С++ после того, как прошёл "Ускоренный курс"
- переходить на С++ при переходе в "Ускоренный курс 2016"
- начинать обучение на С++

UPD 1 апреля 2017:
Статистика использования языков программирования на РОИ с 1997 года
РОИ - Российская олимпиада по информатике


Плюсы перехода на С++
- можно ехать на IOI
- наличие STL (многие сложные алгоритмы не нужно писать - просто вызывать)
- авторские решения (USACO, COCI, Codeforces и др.) пишутся на С++ 
- экономия времени обучения 
  ("на переучивание с Паскаля на С++"
    и чем дальше зайдёшь, тем больше времени на переучивание)
- в начале обучения проще учить слова 
  C++    : main int { cin>> cout<< }
  Pascal : program var longint begin readln writeln end.   
- ??? через несколько лет - можно ехать на республику

Минусы перехода на С++
(по крайней мере пока)
- более сложная работа/отладка в среде
- нет максимального контроля корректности программы во время выполнения
- не такое продвинутое, развёрнутое и мелкоподробное обучение для самых маленьких, как уже есть у нас в Паскале
Pascal vs C++

Сейчас я планирую поступать так:

Для всех новичков 5-ых классов и старше
начинаем на С++ в "Ускоренном курсе 2016"

Для новичков 1-4 кл из чужих школ
начинаем в "Учимся думать".
По результатам прохождения УД принимаем решение, куда дальше.

Для 1-4 классов СШ27
поговорил сегодня с Олей Савицкой.
Там очень много нужно делать, чтобы вывести обучение С++ на уровень Паскаля.
До этой встречи
она боялась в начальной школе начинать на С++, а я нет (я просто "забыл", что мы там успели наворотить).
Теперь, кажется, наоборот.
Но Оле предстоит очень много работы.
Думаю, ей нужно 7 раз отмерить, прежде чем решиться начинать эту работу.
Если всё-таки решится переделывать обучение из Паскаля в С++,
есть смысл попутно всё время взвешивать
"а это задание точно нужно, может начнём без него?"
И ставить по крайней мере сначала, аналоги только тех заданий, без которых точно не обойтись.
Доставить задания всегда можно будет.
Денис Лещевич

Темы: 44
Сообщений: 74

Мой профиль
Михаил Семенович, есть такой сайт
https://codecombat.com/
Обучение языкам в игровой форме, можно пробовать играть без регистрации.
Суть: Дается герой, которому доступны определенные команды, выполняются задания в обстановке (фактически робот в лабиринте), за каждое задание дается поощрение. С ростом сложности заданий добавляются новые команды.

Поддерживаемые языки:
Python
JavaScript
Lua
CoffeeScript
Я в этом году пробовал давать 3-классникам, увлеклись и играли-программировали.
Из минусов, для младших нужно больше промежуточных заданий.

Плюс:
Проект выложен на GitHub по MIT лицензии
https://github.com/codecombat

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

Темы: 1984
Сообщений: 47221

Мой профиль
Спасибо.
Я скопировал ссылку сюда:
Сравнительный анализ подходов к обучению программированию
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль
Обучать программированию со второго класса будут в 14 школах
В школах будут изучать программирование со второго класса
Со второго класса: ПВТ запускает факультативы по программированию в белорусских школах
Garage Kids, или где становятся инженерами
Роман Стриженков

Темы: 5
Сообщений: 121

Мой профиль
Михаил Семёнович!

С Вашей помощью программу для школьного кружка сделал. Директору школы отправил. Будем надеяться все будет хорошо. Если нет рядом еще школа с хорошим молодым директором (на этот раз мужчиной).

По поводу Ваших слов дать предложения. Пока не могу. Нет моего маленького "исследователя" до конца августа. Тут пока все надежды наверное на Олю Савицкую и на Вас. Очень нравится, что она такая смелая и откликается на все новое. Начнем работать предложения появятся.

Роман Стриженков
Роман Стриженков

Темы: 5
Сообщений: 121

Мой профиль
Михаил Семёнович!

Посмотрел немного. Могу в чем-то ошибаться, но на первый взгляд отметил следующее:

1. Если мы занимаемся С++, то желательно убрать со страницы заданий упоминание про Паскаль и как им пользоваться. Это будет сбивать ребят.

2. Далее наш первоклассник приступает к самому первому заданию из Ускоренного курса 2016. Если не ошибаюсь «Вывести введенное число». Как он это будет делать. Откуда возьмутся знания для этого? Кнопки «не знаю» нет. Мне непонятно, что ему делать. Конечно отполировать, как под Паскаль огромная и небыстрая работа. Для начала может продублировать данные задания. Из одного может сделать просто подсказку. Оно могло бы выглядеть, как задание с одновременно находящимся на странице готовым решением и основными правилами, которые требуются знать для решения. Оно без баллов. А второе (дубль) задание было бы просто немного изменено. Данная работа потребовала бы меньше трудозатрат.

3. А перед этим всё-таки желательно поставить тренажер по словам. Пусть он будет небольшой, но он нужен, как этап.

4. Нужен также какой-то раздел про использование Code::Blocks. Может немного заданий по нему сделать? По основным моментам работы с ним. Может быть туда плюсом небольшое видео (?) «Как работать с программой».

5. По поводу упрощения обучения до уровня Скретч (eSeeCode: Touch, Build, Drag и Code), то наверное не стоит. Нужно поднимать уровень, а не опускать. Мы в 5 лет начали программировать на Скретч и первом классе он меня не поймет, если я ему предложу тоже самое. Это будет искусственное оттягивание начала процесса программирования. На это можно пойти только в случае наличия усиленного блока алгоритмической подготовки в возможном курсе. Но все равно это затягивание. Было бы здорово усилить этим «Учимся думать», но не за счет увеличения количества задач и времени прохождения курса, а за счет качества и лучшей подготовки детей. Как я понимаю «Учимся думать» должна подвести уровень развития учащегося к уровню возможности начала обучения программированию. А Скретч (eSeeCode: Touch, Build, Drag и Code) подводят как раз к этому уровню. Нужно определиться какой уровень нам нужен для входа и от этого идти.

6. Идя по «пути блоков» есть предложение пойти по аналогии блокостроительства Скретч, но блоки должны быть реальные части программы. Как Вам? Например, один блок это ввод, второй блок вывод, третий блок переменные, четвертый блок цикл. Вариантов много, но эти блоки отражают реальный код, без намека на псевдокод. Неплохо бы иметь такой раздел после «Учимся думать» в курсе любого языка. Это могло бы решить часть вопросов с выдачей теории.

Роман Стриженков
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль


Савелий Стриженков:

Далее наш первоклассник приступает к самому первому заданию из Ускоренного курса 2016. Если не ошибаюсь «Вывести введенное число». Как он это будет делать. Откуда возьмутся знания для этого? Кнопки «не знаю» нет.
 
Для того, чтобы была "Не знаю", нужно
- выбрать дерево заданий "Differential Study 2" из выпадающего списка деревьев
- а потом выбрать язык С++ вместо Паскаля, который стоит по умолчанию.
Я, кстати, уже писал об этом чуть выше

И лучше работать под Хромом.

Спасибо за ответы. Будем думать и делать.
Роман Стриженков

Темы: 5
Сообщений: 121

Мой профиль
Михаил Семёнович!

Да не посмотрел. "Не знаю" есть)) Очень удобно. И блокостроение у вас есть уже))Менять местами строчки. Реально не думал, что так все хорошо сделано уже под С++.

Роман Стриженков
Михаил Долинский

Темы: 1984
Сообщений: 47221

Мой профиль


Савелий Стриженков:

4. Нужен также какой-то раздел про использование Code::Blocks. Может немного заданий по нему сделать? По основным моментам работы с ним. Может быть туда плюсом небольшое видео (?) «Как работать с программой».
 
По работе в CodeBlocks пока есть только это
CodeBlocks-16.01(+MinGW 4.9).zip
Краткая инструкция по установке и использованию

Сборка ссылок на краткую теорию (справки) по С++

 
Индекс форума ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3, 4, 5, 6, 7
Time:0,065