Всем привет. Мы, команда BEEGEEK, запускаем курс по основам программирования. В данной статье расскажу, почему создали такой курс, о его содержании и отвечу на часто задаваемые вопросы.

Сразу отмечу, что данный курс не является "идеальным". В нем есть все необходимое для легкого и плавного старта. Жду обратную связь от слушателей, чтобы улучшать наш курс! Итак, поехали!

Проблема


Процесс решения задачи с помощью вычислительной системы состоит из нескольких этапов:

  1. постановка задачи
  2. формализация
  3. алгоритмизация
  4. программирование
  5. тестирование

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

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

Таким образом, люди, начинающие свой путь программиста останавливаются в самом начале, так как не могут перейти от простых упражнений на синтаксис к более профессиональным задачам, требующих целого комплекса умений:

  • Умение читать и понимать уже существующий код. Современный разработчик чаще всего работает в команде или продолжает работу своих предшественников, поэтому должен уметь вычленить из существующего кода замысел автора.
  • Умение представить как будет работать написанный текст программы. Разработка больших профессиональных приложений может приводить к тому, что скомпилировать код и посмотреть его работоспособность представляется не очень часто, поэтому умение мысленно запустить код на выполнение может сохранить большое число человеко-часов.
  • Умение тестировать программу в мысленном режиме, не используя специализированные системы. Именно это умение позволяет еще на этапе написания программы предотвратить многочисленные ошибки. Также, составление трассировочных таблиц помогает выявить ошибку в программе, когда становится ясно, что выходные данные не совпадают с эталонными.
  • Умение строить гипотезы неработоспособности кода программы и проверять гипотезу. При обнаружении ошибки в выходных данных программы часто учащиеся пытаются методом случайных изменений текста программы, подогнать решение под верный вывод. “А что если так попробовать” — такой подход свойствен начинающим программистам, не умеющим анализировать совокупность входных и выходных данных.

Решение проблемы


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

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

Содержание курса


Курс состоит из следующих модулей:

  1. Типы данных. Переменные. В данном модуле научимся вводить и выводить информацию. Познакомимся с понятием «переменная», с помощью которой будем хранить некоторую информацию. Посмотрим какие типы данных существуют, ведь с типом величины связаны три ее свойства: форма внутреннего представления, множество принимаемых значений и множество допустимых операций.
  2. Условный оператор. В данном модуле научимся пропускать или выполнять некоторый блок кода в зависимости от некоторого условия. Рассмотрим короткую и полную запись условного оператора. Разберем оператор "switch-case".
  3. Операторы цикла. Самый большой и важный модуль. В данном модуле разберем цикл со счетчиком for, цикл с предусловием while. Также рассмотрим операторы управления циклом: break, continue. Разберем вложенные циклы, задачи про последовательности, минимаксные задачи, задачи на перебор и задачи на анализ цифр числа.
  4. Строки и символы. В данном модуле узнаем подробнее про символы, а именно как они представлены в компьютере, какие операции можно производить. Также поговорим про строки и как они связаны с символами.
  5. Массивы. Большой модуль с большим количеством практических заданий. В данном модуле познакомимся с массивами. Рассмотрим как их объявлять, заполнять, оперировать с элементами массива. Также познакомимся с многомерными массивами, в частности с двумерным массивом.
  6. Функции. В данном модуле поговорим о том, как структурировать программы. Изучим главный "строительный блок" программирования — функции. Рассмотрим примеры, где уместно написание и использование функции.

Для кого предназначен данный курс?


Курс является вводным и больше всего подойдет слушателям, не имеющим опыта программирования.

На каком языке программирования будет проходить курс?


Курс будет проходить на языке программирования C# (си шарп), однако данный курс не привязывается к одному языку программированию, так как в нем проходят базовые понятия и конструкции, которые включают в себя все современные языки. Решать задачи можно на любом из современных языков программирования.

Где будет проходить курс?


Данный курс будет проходить на образовательной платформе Stepik. Уже сейчас можно записываться на курс.

Что кроме изучения языка программирования будет на курсе?


Кроме изучения языка программирования, затронем базовые алгоритмы поиска, алгоритмы со строками, теорию чисел.

Сколько стоит курс?


Курс будет проходить абсолютно бесплатно!

Записывайтесь на курс! Жду от Вас обратной связи для улучшения курса!

Комментарии (14)


  1. Tortortor
    30.09.2018 14:31
    -1

    сайтом ошиблись?


  1. Detrous
    30.09.2018 14:35

    Таких курсов полно везде, более того, есть и абсолютно бесплатные. ИМХО, но в наше время на курсах по программированию надо учить не только базовым вещам: переменные, массивы и т.п., но и умению мыслить.

    Это достаточно большая проблема сейчас. Многие новички не умею самостоятельно изучить проблему и найти способы её решения. Вместо этого они просто спамят вопросами на stackoverflow или достают знакомых программистов. А это самый важный скилл и без него далеко не уйдешь.


    1. JosefDzeranov Автор
      30.09.2018 14:58

      На нашем курсе также учим мыслить, как составлять алгоритмы, а также их тестировать.


      1. Detrous
        30.09.2018 15:02
        +1

        Вопрос не только в составлении алгоритмов и их тестирования) Я знаю много людей, которые умеют это делать. Но они просто не умеют решать задачи самостоятельно.

        Программирование — не только сухая теория.


        1. JosefDzeranov Автор
          30.09.2018 15:05
          -1

          В курсе много практических задач(250).


          1. Detrous
            30.09.2018 15:11
            +1

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

            Вы позиционируете свой курс для новичков, которые ещё толком даже не понимаю их ли это или нет. Одна из главных задач данного курса должна состоять в том, что бы заинтересовать человека и дать ему набор умений для дальнейшего самостоятельного развития. В описании вашего курса, я вижу очередной стандарт-пакет «Основ программирования» и всё.


      1. third112
        01.10.2018 09:41

        как составлять алгоритмы, а также их тестировать
        ИМХО это недостаточно. Типовые алгоритмы нужно знать. Нпр., классические методы сортировки. Иначе курс нужно назвать «курс по изобретению велосипеда».


  1. akryukov
    30.09.2018 20:24

    Почему вы даете строки перед массивами?
    Я так пробовал, но в итоге начал давать массивы перед строками. В тему про массивы естественным образом вписывается объяснение понятия "индекс элемента", а в теме про строки оно уже активно используется.


    Почему цикл for вы решили давать раньше цикла while?
    Такого эксперимента я даже не ставил. Наблюдения подтверждают, что while менее запутанный чем for, а значит проще в освоении и должен быть раньше. "фором" люди могут начинать пользоваться только когда они вообще освоили идею циклов.


    Зачем вам тема "анализ цифр числа"?
    На коротком по времени курсе она выглядит как бесполезная жесть, которая отвлекает от реальных проблем.


    Ну и самый главный вопрос. Вы заявляли, что проблема новичков в отсутствии умений:


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

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


    1. JosefDzeranov Автор
      01.10.2018 13:13

      «Почему вы даете строки перед массивами?
      Я так пробовал, но в итоге начал давать массивы перед строками. В тему про массивы естественным образом вписывается объяснение понятия „индекс элемента“, а в теме про строки оно уже активно используется.» — не соглашусь! В строках легче понять как массив разбивается на элементы, ведь для нас это привычно, что строка состоит из символов и к ним можно обращаться. Пробовал и наоборот, сначала массивы, а потом строки. По моим наблюдениям(5 лет) легче воспринимается сначала строки.


    1. JosefDzeranov Автор
      01.10.2018 13:14
      -1

      «Зачем вам тема „анализ цифр числа“?
      На коротком по времени курсе она выглядит как бесполезная жесть, которая отвлекает от реальных проблем.» — это всего лишь ваше мнение.


    1. JosefDzeranov Автор
      01.10.2018 13:15

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


      1. akryukov
        01.10.2018 18:52

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

        Вы буквально повторили мои слова, но на вопрос не ответили.


        Если бы вы разбили по умениям, заявленным в параграфе "проблема", то ваш курс хоть как-то бы отличался от типичных курсов по основам программирования.
        Вы заявили, что помогаете решить какие-то проблемы, а список тем никак не совпадает со списком этих самых проблем. Зачем тратить время на углубление в ваш курс?


        1. JosefDzeranov Автор
          02.10.2018 00:01

          Это мое видение курса. Сделайте сами курс по вашему усмотрению и покажите чем же он будет отличаться от других. Говорить одно, а сделать нужный курс другое)


          1. akryukov
            02.10.2018 10:44

            Вы в конце статьи писали, что вам нужна обратная связь. Но при этом на мои вопросы отвечаете "я художник, я так вижу" и предлагаете мне сделать свой курс.


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