[Logo] Форум DL
  [DL]  Back to home page 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3, 4, 5, 6, 7
Author Message
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Написал на С++ авторские решения всех задач "Ускоренного курса 2013".
Он содержит 8 тем
- введение в программирование
- одномерный массив
- двумерный массив
- геометрия
- сортировка
- строки
- текстовые задачи
- исследование
Подробнее о содержании и аргументации

Для каждой темы 3 подраздела:
- техминимум (задачи покрывающие и иллюстрирующие необходимый минимум теории)
- олимпиады 1-4 классов
- олимпиады 5-8 классов

Курс линейный
- каждый должен решить каждую задачу.

Для большинства учеников это очень даже подходит.
Но для самых сильных бывает много "лишней" работы.
И в моей практике был уже не один случай,когда человек (6-7 класс) приходит, решает в первый день 30 задач,
и больше не приходит. Возможно, потому что ему показалось всё слишком простым.

Кроме того, некоторые олимпиадные задачи по сложности "выбиваются из общего ряда"
и с большинством учеников мы просто пропускаем их при первой встрече.
Это тоже неудобство
- ученик может в этом месте "надолго застрять"
- приходится объяснять, как это делается.

С другой стороны, есть очень много случаев, когда человек прошёл "Ускоренный курс-2013"
(то есть сдал все задачи из него - многие с помощью учителя или учеников), но не научился.
То есть не может решить даже те задачи, которые сдавал,
не говоря уже о задачах на те же темы,
(то есть, задачи которые не требуют новой теории)
например
- одномерный массив
- двумерный массив
- геометрия
- строки
из олимпиад 9-11 классов или
из олимпиад BY/GO (республиканских и областных олимпиад, готовящихся в Минске).

В связи с вышеизложенным создал новый курс

"Ускоренный курс 2016"

который содержит те же темы, но внутри каждой темы подразделы такие

Техминимум
Контроль (олимпиады 5-8 классов)
Контроль* (вышеупомянутые сложные задачи)
Обучение (олимпиады 1-4 классов)

Предполагается в будущем поддержать на подобных материалах такие

Стратегии обучения

Уже поддерживаются
- Нет «Не знаю» , можно пропускать
- Есть «Не знаю»
- Индивидуальное управление «Не знаю»(нет/есть) для различных пакетов заданий (автовыдач)

Нужны

- Линейная 
    - для каждого человека фиксируется и пополняется список задач, по которым нажималось  «Не знаю» 
    - при выходе из папки в корне  (ВвП, 1мас, 2мас …) 
      предлагаются в случайном порядке все задачи из списка «Не знаю» - для этого человека
      если снова нажимал «Не знаю» - задача остаётся в списке
      переход к следующей теме осуществляется только после очистки списка «Не знаю»

- Ускоренная 
   - в каждой корневой папке  (ВвП, 1мас, 2мас …)  имеются 4 подпапки : Техминимум, Контроль, Контроль*, Обучение
   - в Контроле нет «Не знаю» - не может решить – автоматом отправляется в обучение 
     в любой момент ученик может вернуться в Контроль (не получится решить – обратно в обучение)
     в Обучении действует линейная модель 
     только если оттуда выйдет – в контроле открывается «Не знаю» и включается линейная модель
     если выйдет из контроля – открывается Контроль* с «Не знаю» и линейной моделью (а можно и пропускать эти задачи)

- Дифференцированное обучение
  - каждая задача в «Контроле» связывается [названием?] с группой (?деревом) задач в обучении
  - если не может решить задачу в Контроле, его перенаправляют на решение именно этой  группы (?дерева) задач

- Динамическое построение уровней сложности
   - редактор курса указывает градации сложности (возможно для каждой темы свои, для каждого ученика?) 
   – Контроль * и другие уровни сложности строятся «на лету»

- Диагностика (для входного/выходного/промежуточного контроля учеников)
   - из Контроля каждой (пройденной для промежуточного) темы случайно выбираются 5 (параметр) задач в порядке возрастания сложности 
   - задачи можно пропускать
   - время может быть ограничено


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

С точки зрения развития содержания обучения на С++ далее предполагается следующая работа

1. Краткое описание выбранного подмножества языка С++
попутно сделаю конспекты опорных схем С++-лекций для первокурсников, аналоги соответствующих Паскаль-лекций

Сентябрь
1. Введение в программирование + Отладчик
2. Одномерный массив стандартные алгоритмы
3. Одномерный массив - нестандартные алгоритмы

Октябрь
4. Двумерный массив - стандартные алгоритмы
5. Геометрия
6. Строки - Элементарные алгоритмы
7. Строки - Встроенные функции

Ноябрь
8. Строки - Пользовательские функции и процедуры
9. Сортировка
10. Очередь - конь
11. Очередь - куски

2. Дать в руки "экскаваторы вместо лопат".

То есть, сделать анонсы и примеры применения (ссылки на задачи, идеи и исходники решений)
наиболее полезных функций STL.
Хотя бы так, как это сделано Пашей Голубом для:
set

Вот список того, что было у меня "на слуху"
Преимущества C++ (STL) перед Паскалем
vector
heap
qsort
lower_bound
upper_bound (for binary search)
nth_element
next_permutation
priority_queue
map
set (balanced binary search tree)
multiset
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
From: Vadim Kopichenko
Sent: Sunday, July 03, 2016 7:18 PM
To: Michael Dolinsky
Subject: Re: FW: Confluence: DL Руководство пользователя > CPP

Дополнил http://confluence.newit.gsu.by/display/dldoc/CPP
Можно выложить эту ссылку на форуме
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Краткое описание выбранного подмножества С++
Конспекты опорных схем для первокурсников


Введение в программирование
Одномерный массив
Двумерный массив
Геометрия
Сортировка
Строки to_string
Функции и процедуры
Очередь knight.cpp knight_2.cpp cell.cpp cell_2.cpp

Полезные факты о С++

vector
set
multiset
map
multimap
map & multiset
hash_set, hash_map, хеш-функция +1
priority_que +1 +2
lower_bound
next_permutation
n-th_element

Искать ошибки в программах можно тремя способами
1) Перечитать программу и попытаться "мысленно выполнить её"
2) Вставлять отладочную печать в программу на ideone.com
3) Научиться работать в отладчике CodeBlocks на собственной машине


CodeBlocks-17.12 (157 Мб zip)
CodeBlocks-16.01(+MinGW 5.3.0).zip
Краткая инструкция по установке и использованию
Подробнее
Быстрое погружение в язык C++

Доп.информация на DL
Хорошая дока по STL на английском
Collection of prepared algorithms (C++)
Online compilers
Ловим глупые ошибки вместе с GCC

Введение в программирование на C++ (Stepik)
Roman Strizhenkov

Topics: 5
Messages: 91

My Profile
Здравствуйте Михаил Семенович!

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

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

Topics: 1626
Messages: 39506

My Profile
Не нравится мне такое начало.
У меня такого нет.
Спросил по почте у учительницы, которая ведёт занятия в начальной школе.
Есть ли у неё, и если есть - готова ли поделиться.
Жду ответа.

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

И, в отличие от стандартного обучения, никто не переходит к новой теме
"потому что пришёл её календарный срок по плану"
Только после полного выполнения заданий предыдущей темы.

P.S. Я бы подумал об альтернативах.
Вам нужно только помещение?
Дети, скорей всего, могут работать на собственных ноутбуках.
Я бы поискал место, где не будут требовать планы, а потом ещё и мучать проверками и отчётами.

P.P.S. Если план всё-таки придётся писать - ориентируйтесь в нём ТОЛЬКО на курс "Учимся думать".
По нашему опыту для большинства первоклассников (и по способностям, и по затраченному времени) это предел на первый год.

Ну а если получится больше у кого-то (или даже у всех, всё-таки, Питер не Гомель )
- так и будете заниматься дальше.

Моя книжка по теме (на правах рекламы )

А эта планируется к изданию (она как раз "Учимся думать" и описывает)
Развивающее дифференцированное Internet-обучение дошкольников
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Вот её ответ
From: Оля Савицкая
Sent: Tuesday, July 12, 2016 9:33 AM
To: Michael Dolinsky
Subject: Re: А у тебя такое есть? Можешь поделиться?

У нас в школе образовательная программа факультатива "развивающая информатика", утвержденная мин образования. И только её разрешили использовать, она есть в свободном доступе в интернете, по ней и составляется приблизительный календарный план, разбив план на уроки. У меня в школе должен быть план этот, если не смогут найти, то я тогда заеду посмотрю у себя.
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Она сама нашла и прислала программу по почте (я переложил на DL)
Программа факультатива

Roman Strizhenkov

Topics: 5
Messages: 91

My Profile
Здравствуйте Михаил Семенович!

Спасибо за информацию. На основе данного материала напишу программу.

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

Topics: 5
Messages: 91

My Profile
Здравствуйте Михаил Семенович!

Начал читать Вашу книгу "Развивающее дифференцированное Internet-обучение дошкольников". В конце курса "Учимся думать"(на картинках видно) встречаются уже служебные слова языка Паскаль. Основной курс "Информатика 2015-2016" стройный и последовательный. И наверное должен соблюдаться порядок его изучения. Следующие курсы "Пропедевтика слов", "Учим слова (медленно)" и некоторые другие пока завязаны на Паскаль. Будет ли это меняться? Вопрос в том, что если мы пойдем по этому пути допускаю, что кто-то из ребят к середине учебного года закончит "Учимся думать". Будет ли куда нам идти дальше?

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

Topics: 1626
Messages: 39506

My Profile
В принципе обучение в Ускоренном курсе-2016 уже поддерживает очень многое из того, что было в "Пропедевтике" и "Учим слова медленно" (но, конечно не всё). И даже если больше ничего не сделается, можно переходить из "Учимся думать" непосредственно в УК-2016.

Но мы планируем добавить аналоги для выработки навыка работы с клавиатурой вообще и набора необходимых слов в частности.

Когда это произойдёт, я пока не знаю.
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Написал такое письмо учительнице в начальной школе Оле Савицкой.
Жду ответа.

1) Как ты думаешь - нужны ли какие-то аналоги "Пропедевтики слов" и "Учим слова(медленно)" для слов С++?

- какие именно?

2) Насколько трудоёмко (сколько времени может занять) сделать их средствами Юриного конструктора?

3) Знаешь ли ты (можешь ли посмотреть) как перенастроить на новые слова задания Саши Громыко с клавиатурой-подсказкой?

4) Можешь ли ты придумать какими должны быть пакеты заданий "Пропедевтика слов" и "Учим слова (медленно)" для С++
- можем попросить Андрея, который развивает DS2 для C++ сделать их
у него практически всё есть (сравнение, словарь), только клавиатуры нет.

- наверно это будет одно задание (или кнопка с любого задания)
На обучение набору слов

Или просто добавить в имеющееся обучение к каждой задаче режим/задание, где клавиатура подсвечивается?


5) Как быть с первыми двумя строками (они очень длинные для первоклассников наверно)?

Может попросить Андрея сделать режим (для первоклассников?) в котором они отображаются всё время, но набирать их не нужно?

Он ведь сделал автоотсылку (Ты видела? Пользуешься? Твоё мнение?) и может добавлять их автоматически.

6) Кстати, мне кажется НА ТВОЁ УСМОТРЕНИЕ надо ли всех первоклашек
Переводить на обучение С++. (Чтобы не мучать лишнего тебя и детей)

Мне кажется, достаточно разумным альтернативным решением в СШ 27 в 1-4 классах оставить всё как было (всё-таки у нас фронтальные занятия, "и жук, и жаба" приходят).
А в С++ переходить начиная с 5-го класса.

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

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

Я смотрю сейчас по Морозову Данику и другим ребятам, которые перешли в С++.
Логических проблем у них нет. НО
А) переделать 500+ заданий УК - это много времени требует
Б) простые ошибки вызывают трудности в поиске и много зря потраченного времени

Последний пример Яша Шаповалов (вчера)

5 раз подряд получил ошибку компиляции

Последняя отсылка:

#include <bits/stdc++.h>
using namespace std;
int main()
{
 int a[10],min,n,nom;
 cin >> n;
 for (int i=0; i<n; i++) cin>>a[i];
 min=a[0]; nom=0;
 for (int i=1; i<n; i++)
   if (a[i]<min) {min=a[i]; nom=i;};
 cout << max << " " << nom+1;
}

(в последней строке max вместо min)
Хотя при компиляции это легко выясняется
- почему он её не сделал - непонятно.
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile


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


5) Как быть с первыми двумя строками (они очень длинные для первоклассников наверно)?
 
Подменил шаблон в поставке
CodeBlocks-16.01(+MinGW 4.9).zip

Получается теперь если работа ведётся с нашего архива (или в нашей школе), то не придётся детям
эти первые две длинные строки набирать - они есть и правильно написаны.

Теперь при запуске автоматически открывается такая программа main.cpp

#include <bits/stdc++.h>
using namespace std;

int main()
{
  int s;
  cin  >> s;
  cout << s;
}


То есть наша первая программа
ввести и вывести число

Вместо стандартной

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
Вот ответ Оли Савицкой

From: Оля Савицкая
Sent: Wednesday, July 13, 2016 4:26 PM
To: Michael Dolinsky
Subject: Re: О С++

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

2. Это не долго и не трудно. Вопрос о времени будет стоять тогда, когда будем точно знать, что делать из заданий и сколько.

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

4. Да, хорошо, придумаем.

5.
а) А в чем сложность научить детей печатать эти строки? Ну страшные они с первого взгляда, но ничего сверхъестественного... К тому же я не думаю, что было бы правильно обучать детей с 1го класса С++... Всё же Паскаль больше подходит для введения в программирование.
б) Я не знаю что за автоотсылка, может и пользуюсь, но не знаю что это она)

6. Яша ведь наверное в блокноте печатал без компилятора...

Давайте следующий год попробуем работать в Си только с 5ым классом?Получим немного опыта, попробуем в течении года разработать курсы для малышей в Си, если всё же решимся с ними работать.
А олимпиады на каком языке дети должны будут писать?
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
А это мой ответ Оле Савцикой

Я перенес твоё письмо и свои ответы в форум
А ты читала всю тему сначала?
http://dl.gsu.by/NForum/posts/topicshow/2567.dl?postid=63895#63895

Предлагаю отвечать там, если захочешь.



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

[MD] Питерец хочет работать с первоклассниками. Я хочу ему помочь.
Да и у нас дети разные бывают даже в 5-ых классах.
И я намерен пробовать работать в С++ со всеми новичками, которые придут.
Чтобы получить опыт, нужно реально работать.
Логических проблем там не больше, чем в Паскале.
А всё остальное зависит от нас.
И есть человек, который ПИШЕТ, что просим, он в следующем году последний год учится.
«Завтра» (на следующий год) может оказаться «поздно».



4. Да, хорошо, придумаем.

[MD] Да вот это нужно сделать и желательно срочно.
Чтобы раньше знать, что просить у Андрея.
Сейчас я придумал такую идею.
В каждом задании может появиться кнопка «Клавиатура»
И тогда при её нажатии в девой части задания под условием появится «Клавиатура»,
на которой всё время будет подсвечиваться символ, который сейчас нужно нажимать.

Кроме того, в каждом задании может появиться кнопка «Слова».
На обучение набора всех слов из этого задания
- либо всех подряд от более простых к более сложным
- либо слов по выбору учителя
- либо слов по выбору ученика

И там для каждого слова будет пакет заданий, который ты придумаешь
(и скопируешь нам для образца пакет таких заданий, например, для слова begin)
- чтобы Андрей мог ВИДЕТЬ, что от него требуется

Пример «навскидку» такого пакета (сдвиг вправо означает переход по «Не знаю»)

- перенос символов на клавиатуру с подсветкой (клавиши на клавиатуре)
- перенос символов на клавиатуру без подсветки
.... - перенос символов на клавиатуру с подсветкой
- набор символов с подсветкой
- набор символов без подсветки
.... - набор символов с подсветкой
??? устанавливать временной предел на выполнение задания без подсказок
(реальные замеры сделать и вставить правильные временные переделы)
То есть если слишком медленно набирает – пусть тренируется

5.
а) А в чем сложность научить детей печатать эти строки? Ну страшные они с первого взгляда, но ничего сверхъестественного...

[MD] Просто длинные и если во всех программах одно и тоже, теряется смысл – зачем их набирать?
Но я уже решил эту проблему
http://dl.gsu.by/NForum/posts/topicshow/2567.dl?postid=63961#63961


К тому же я не думаю, что было бы правильно обучать детей с 1го класса С++... Всё же Паскаль больше подходит для введения в программирование.

[MD] Оля давай разделим это вопрос на два.
1) Чему и как учить детей, которых учишь ты, решать, безусловно, тебе.
2) Чему и как учить детей, которых учат другие учителя, должны решать сами эти учителя
(в том числе и я, и Савелий Стриженков из Санкт-Петербурга)
А Савелий НЕ ХОЧЕТ учить на Паскале, хотел бы на Питоне, но поддержки Питона нет пока у нас и поэтому он
из Паскаля и С++ выбрал С++.

Моя задача сделать так, чтобы на DL было удобно учить НА ВСЕХ ЯЗЫКАХ.
С Паскалем будем считать, уже сделано.
В данный момент мы занимаемся поддержкой С++,
стараясь при этом делать как можно больше универсальных механизмов,
которые будут работать для ВСЕХ языков (если написаны авторские решения задач)


б) Я не знаю что за автоотсылка, может и пользуюсь, но не знаю что это она)

[MD] Появилось задание, в котором если ты правильно набрал, решение автоматически отправляется на DL.
а если неправильно – можно его переделывать.
Сейчас Андрей до воскресенья обещал прикрутить ещё две фичи
- подсветку строк с ошибками, если неправильно
- если подсказкой пользовался, то после исправления всех ошибок
отправка не происходит, а предлагается сделать задание повторно с чистого экрана


6. Яша ведь наверное в блокноте печатал без компилятора...

[MD]Наверно, но я ему объяснял про ideone.com

Давайте следующий год попробуем работать в Си только с 5ым классом?Получим немного опыта, попробуем в течении года разработать курсы для малышей в Си, если всё же решимся с ними работать.

[MD] Ты предлагаешь отложить на год решение проблем.
А я предлагаю решать все проблемы СЕЙЧАС, какие мы видим.
И знаешь, задания для Паскаля на обучения словам я и для первокурсников использую ...
так что вопрос не в классе а в уровне готовности работать вообще и с компьютером в частности
Чем больше у нас такой поддержки, тем проще работать с детьми (и студентами) с любой подготовкой


А олимпиады на каком языке дети должны будут писать?

[MD] Те кто учатся на Паскале – пишут на Паскале, те кто учатся на С++ - пишут на С++.
Mihail Dolinskiy

Topics: 1626
Messages: 39506

My Profile
"Спасение утопающих - дело рук самих утопающих"
Савелий - это я к Вам обращаюсь.

Вы имеете уникальную возможность ПОВЛИЯТЬ на то, каким будет обучение, которым Вы будете пользоваться.

Выскажите свои соображения.

Будет гораздо правильнее сначала ПОПРОБОВАТЬ поработать
в "Учим слова" и "Пропедевтика слов"
чтобы решить, какие из заданий Вы хотели бы видеть для С++ и сообщить об этом нам.

Аналогично можно попробовать начать работать в
"Ускоренный курс - 2016"
и также высказать свои предложения.
 
Forum Index ->Учебный процесс ГГУ/СШ 27 ->Обучение программированию "с начала" 1, 2, 3, 4, 5, 6, 7
Time:0,141