Большинство курсов на Степике на самые обычные (часто популярные и востребованные) темы. Программирование и прочая айтишная кухня, школьные предметы и подготовка к экзаменам, иностранные языки, рисование и все в таком духе. Но встречаются курсы и на другие темы. Нестандартные, я бы сказал. Я сам такие люблю делать. Но сегодня я расскажу о некоторых таких курсах, которые были созданы другими людьми приблизительно за последние полгода.
Это не какие-то особо качественные или супер интересные курсы. Но вполне достойные середнячки. Здесь есть что почитать и есть что порешать.
Тест Беннета это что-то вроде теста на IQ только на проверку способностей к техническому и пространственному мышлению. Сказать что-то более конкретное по тесту сложно, так как адекватной информации о нем самом, равно как и об ее авторе, в сети найти не так уж просто. Тем не менее, сами задания интересные, есть над чем подумать. Их 70 штук, так что какое-то время можно потратить с интересом и пользой.
То что Stepik загадочный мы уже не так давно выяснили, но он еще и «пасхалистый».
Иногда, обычно на новый год (или на свое десятилетие) команда Степика преподносит приятные и интересные сюрпризы. Немногие могут помнить пряничнего человечка, с которого все и началось (вроде бы) где-то перед новым 22 годом (надо поднимать архивы). Его, кстати, я тоже нашел и, возможно, как-нибудь покажу, если оно все еще работает.
У Степика есть символ — собачка такса Так:
По одной из версий (подтверждено!), месяц или два назад команда сайта исправляла редкую (но ранее регулярную) ошибку, связанную с неправильным отображением заработанных учащимися баллов за решенные задачи. И добавила анимацию бегущей собачки (символа Степика — таксы Так) при загрузке количества заработанных баллов. Но вот появляется она крайне редко. Сегодня мне повезло на нее попасть и даже сделать скрин:
Но я пошел дальше. И теперь могу ее «призывать» в любой момент. Смотрим на видео, как это происходит:
Пасхалка на Stepik (такса Так)
Я не оставляю код, который использовал в видео. Желающие повторить, при должном упорстве, смогут набрать этот код сами. А кто сказал, что должно быть легко?
За долгие годы существования Степика на нем было создано огромное количество разных курсов. Хороших, плохих, интересных и не очень, бесплатных и платных, смешных и грустных, странных и необычных. Вот на последних хотелось остановится чуть подробнее. Сразу стоит отметить, что это мой сугубо субъективный взгляд, так что не судите строго. И, надеюсь, это будет не последняя подборка.
Гладить котят надо уметь. Нет, речь не о гладильной доске и утюге. Поэтому, если вы не умеете, то можете освоить искусство глажки котят. Нас обещают научить различным «лайфхакам» для общения с котами и продвинутым методикам их глажения. Это смешной курс о вполне серьезных вещах, так что присоединяйтесь. Котейки…
При учебе на Степике и при создании на нем курсов может возникать множество вопросов. Не всегда ответы на них легко найти. Или ссылки, где есть такие ответы. Поэтому решил перебрать имеющиеся у меня материалы, слегка их упорядочить и выложить в одном месте, чтобы было куда направлять интересующихся (как я это люблю делать).
Первое с чего всегда стоит начинать, это все-таки Help от самого Степика:
версии языков программирования (чтобы не спрашивали раз за разом, а какая версия языка используется) на платформе и детали их технической реализации — https://stepik.org/lesson/59057/step/14
Отдельно упомяну курс от Степика для авторов курсов — Создание курса на Stepik. В чем-то перекликается с Help’ом, но есть и то, чего там нет. Полезный курс, особенно для начинающих авторов.
То, о чем обычно не вспоминают, пока не возникают проблемы (лучше, чтобы они и не возникали):
пользовательское соглашение — https://welcome.stepik.org/ru/terms. Полезно и для простых пользователей и для авторов курсов. Что можно, чего нельзя, за что могут забанить и все в таком духе. Не забывайте, что незнание этого соглашения вас никак не убережет от возможных последствий
агентский договор — https://welcome.stepik.org/contract-of-agency. Это для авторов платных курсов. Вы знаете, как я их «люблю», но душа юриста не дает мне пройти мимо и не дать ссылку
Ну и куда же без связи с командой Степика. Если вы столкнулись с проблемой, которую не можете решить, обращайтесь к ним. Для этого можно:
Еще из интересного. На Степике есть рейтинг учащихся и авторов курсов. Дам ссылки, потому что если вы не в топе, но найти эти ссылки не так уж и просто:
Там отображается всего 20 первых мест. Но у меня на сайте вы можете посмотреть первые сто мест в обоих рейтингах: Топ-100 по знаниям и Топ-100 по репутации
Еще дам ссылки на дискорды для неформального общения на темы обучения на Степике:
Степик уникальный сайт по многим причинам. Стабильная нестабильность его работы уже стала притчей во языцех, а многие баги фичи восхищают изобретательностью и неожиданностью.
Однако при всех этих, известных широким массам, особенностях работы, Степик иногда бывает очень загадочным. Хотя, это черта вряд ли является уникальной именно для указанной платформы. Но, как постоянным пользователям именно Степика, нам интересны загадочные ситуации связанные именно с ним.
За годы их можно было бы вспомнить много. Наверное. Но так сложилось, что недавно я столкнулся с тремя необычными ситуациями, или загадочным поведением Степика, о которых сейчас и поведаю.
Итак, ситуация первая. На Степике есть рейтинг знаний и репутации. Рейтинг знаний это об учащихся, кто больше решил задач на платформе. А рейтинг репутации это о преподавателях, которые создают курсы, а учащиеся решают задачи на этих курсах и лайкают уроки. И пишут отзывы.
Сегодня, после бурного обсуждения курсов по Python на Степике в телеграм канале для преподавателей, я отправился на сайт. Там нашел пару курсов по Python и решил детальнее посмотреть на один из них. В конце концов, ежедневную порцию решения задач и получения новых знаний никто не отменял.
Решая простые задачи я увидел то, что так «люблю» на таких курсах. Это возможность решать задачи не только на основном языке программирования, по которому и создан курс. Обычно это указывает либо на то, что автор курса недостаточно хорошо разбирается в настройках таких задач на Степике и не знает, что можно прописать возможность решения задач только на одном языке, либо просто плевать хотел что там будет творится на курсе.
В данной случае автор о настройках знал. В большинстве задач выбора языка программирования для решения не было. Только Python, для обучения которого и создан курс. Но в некоторых задачах автор, судя по всему, забыл выставить соответствующие настройки.
В таких случаях я люблю решать задачи на чем-то относительно экзотическом и оставлять такие решения в форуме решений. Нет, не для того чтобы повыделываться. С надеждой, что автор обратит внимание и что-то с этим сделает (нет, обычно никто ничего не делает). Да и забавно. К тому же, может быть кто-то из новичков увидит, что на Степике есть возможность выбора языков программирования для решения задач.
На этот раз я решил выбрать для экспериментов язык программирования Julia. Мне вспомнилось, что его синтаксис местами похож на Python (помнил о таком я благодаря работе над курсом Языки программирования — великие и не очень). Да и надоело уже использовать для этого PHP или Ruby, которые обычно использую как относительно экзотические (на Степике, по крайней мере) и которые я при этом более-менее знаю.
Вот так я и окунулся в Julia:
Решил несколько задач, познакомился с возможностями языка по вводу/выводу. А потом вспомнил, что именно так я начал свой путь в изучении Go.
Для айтишника, да и не только, умение быстро набирать на клавиатуре важно. По сути это один из базовых навыков, потому что набирать придется много, так или иначе. И чем быстрее скорость набора и меньше совершенных при этом ошибок — тем выше будет эффективность (или не будет, если не будет других соответствующих навыков). Поэтому многие считают важным знать и уметь набирать с помощью слепого десятипальцевого метода печати. Но что делать, если человек уже умеет быстро набирать, но клацая по клавишам двумя (тремя, четырьмя и т. д.) пальцами и периодически опуская взгляд на клавиатуру? Стоит ли переучиваться или и так сойдет? Какие могут появиться в итоге преимущества и с каким проблемами можно столкнуться? Я провел двухмесячный эксперимент на себе и хочу описать его результаты.
Если человек много времени проводит у клавиатуры и ему часто приходится набирать текст (по работе, в чатах, на форумах или где‑либо еще), то полезным навыком будет умение набирать быстро и, желательно, без ошибок.
И тут есть два основных пути.
Первый — очень простой. Просто берем и набираем. Со временем, если набирать придется действительно много, скорость будет расти, количество ошибок падать и в результате получим так называемый «зрячий» метод набора двумя (тут возможны варианты) пальцами. Вариант не самый плохой. Например, я таким способом мог набирать в среднем со скоростью 250–300 знаков в минуту, чего вполне хватало выражать свои мысли в тексте без замедления из‑за недостаточной скорости набора. Но мой вариант не совсем экспериментально чистый и позже я объясню, почему это так.
Второй путь — это так называемый «слепой» десятипальцевый метод печати (да, вполне могут быть слепые, но не десятипальцевые). Или обычно просто — слепой метод печати. Освоить его сложнее, придется целенаправленно его изучать, но зато потом появятся некоторые преимущества и на длинной дистанции этот вариант явно предпочтительнее. И чем больше дистанция и чем больше текста приходится набирать, тем преимущества кажутся привлекательнее.
Тут важно уточнить. Описанное выше справедливо для ситуации, когда человек только садиться за клавиатуру, только начинается работать за ней и набирать. Однако может случиться так, что человек уже долгое время набирает как придется («зрячим» сколькотопальцевым методом). При этом он может набирать с хорошей, или даже достаточной для него, скоростью. И тут в какой‑то момент возникает вопрос, а стоит ли переучиваться на «слепой» десятипальцевый метод? Именно о такой ситуации на своем примере я и постараюсь в деталях рассказать.
Иногда, решая задачи на программирование на Степике, учащиеся сталкиваются с интересной проблемой, которая очень неочевидна и как бы не видна. Но она есть и заставляет периодически шевелить мозгами в попытках понять, а что же пошло не так? В данной статье я постараюсь объяснить, что же именно пошло не так.
Представим себе задачу. Нужно что-то сделать и затем вывести на экран какой-то текст. Человек пишет код решения. Ему кажется, что все правильно. Он отправляет решение на проверку и неожиданно видит следующее:
Возникает закономерный вопрос: «В чем же проблема?» Действительно, кажется, будто текст, который должен быть выведен и тот, который вывело решение учащегося одинаковы.
Тот, кто читал мою статью Строки в программировании — невнимательность и кодировки, или просто в теме, может сказать, что все очевидно — где-то попал кириллический символ в строку с латиницей. Визуально нам кажется, что строки одинаковы, но для компьютера кириллические и латинские символы являются разными. Даже если выглядят идентично.
И этот человек окажется не прав. По крайней мере в этом случае. Сравниваем текст правильного вывода и вывода учащегося, используя специальные инструменты и видим, что тексты полностью идентичны:
В этот момент может начаться паника. Как же так, в чем же проблема и что делать?
Спокойствие, главное спокойствие. Тексты действительно отличаются. Просто из-за особенностей работы буфера обмена браузера некоторые символы в процессе копирования теряются (не спрашивайте меня как это работает, я не в курсе). В нашем случае это невидимый символ неразрывного пробела. Чтобы убедиться, что он там действительно есть, копируем из логов ошибки задачи наши строки под «Your code output:», например, в Word. Там включаем отображение всех символов и видим следующую картину:
Видите мааааленький кружочек, который я выделил желтым на скриншоте? Вот это и есть наш неразрывный пробел, который каким-то образом попал в строку и ломает проверку нашего отправленного решения. Так как для компьютера тексты РАЗНЫЕ. В правильном ответе обычные пробелы. А в отправленном нами затесался ненужный символ — неразрывного пробела.
Достаточно его убрать, заменив обычным пробелом и решение пройдет проверку и будет засчитано.
Обычно такая ошибка проявляется при решении задач с использованием языка программирования PHP. Почему так — я не знаю. Но, имейте ввиду.
Удивительно рядом. Иногда оно еще и невидимо. Но мы то выведем такие ошибки и неточности на чистую воду. Так что учитесь, решайте задачи и будьте внимательны. Как видите, существует множество мелочей, которые хотя и кажутся незначительными, но могут здорово потрепать наши нервы в попытках выяснить, а что же пошло не так?
Начиналось все это совсем с другого текста. Но его я в итоге решил вынести в отдельную заметку, чтобы не путать смешное и серьезное. Поэтому смешное оставим на потом, а сегодня немного о серьезном.
А здесь должен был быть еще длинный текст о том, как я пришел в преподавание, сколько лет и что преподаю, но его я тоже решил вынести в отдельную простынь.
Поэтому здесь будет лишь краткое вступление.
Вступление
Кто-то знает, а кто-то нет, что я работаю преподавателем уже около 20 лет. Но в институте я преподаю право. Что слабо соотносится с тем, о чем пойдет речь ниже. Однако с 2019 года я создаю и поддерживаю различные курсы на Степике, в том числе, с осени 2020 года и курсы по программированию. За прошедшие годы накопилось много интересного опыта, собралось много наблюдений, было исправлено множество часто однообразных ошибок учащихся. На что-то можно было указать прямо в теории курсов, на что-то я писал развернутые комментарии под тем или иным шагом. Но многое остается у меня в голове и в тех решениях, которые никто не видит. Я долго шел к тому, чтобы попробовать все это проанализировать и как-то преобразовать во что-то полезное. Например, в заметки на этом сайте. Хочется верить, что эта заметка окажется первой ласточкой и дальше будет больше и интереснее.
С и C — это разные буквы для компьютера
Итак, начнем с ошибки, которую часто совершают начинающие обучаться программированию при работе со строками. Это ошибка связанная с путаницей между кириллицей и латиницей.
Учащиеся очень часто путают буквы кириллицы и латиницы. Человеку кажется, что они одинаковы и видит он их тоже одинаково. Но компьютер буквы (символы) воспринимает совсем иначе. И для него они могут отличаться.
Например, у нас есть два слова:
cop сор
Визуально вам может показаться, что это одно и тоже слово. Однако для компьютера эти слова состоят из совершенно разных символов — верхнее написано на латинице, а нижнее на кириллице. А вот как их «видит» компьютер:
Чаще всего ошибаются, когда первым символом в строке идет буква с. Человек начал набирать на английском, увидел на каком-то символе, что ошибся с раскладкой и убирает явно английские, но буква c ему кажется вполне русской и ее он оставляет. Однако, периодически бывают случаи, когда люди умудряются вставить латинский символ в середину кириллической строки. Это мне объяснить уже сложнее, но вот как-то получается. Так что будьте внимательны и не путайте символы кириллицы и латиницы. Или, если вам кажется, что правильный вывод в задаче со строками и вывод вашего решения совпадают — проверьте, не перепутали ли вы символы разных раскладок.
Если же вы уже прошли этап «перепутать с и c», то можете взглянуть на статью Абсолютный минимум об Unicode на 2023 год, чтобы понять, насколько глубока кроличья нора строк и кодировок. Беременным и людям со слабым сердцем по ссылке лучше не переходить и не пытаться во все это вникать) Я предупредил.
А вы знали, что на Степике кроме общего рейтинга знаний/репутации есть еще отдельные рейтинги учащихся для каждого курса? С оговорками, но тем не менее. Если не знали — сейчас узнаете (хотя ценность сего знания сомнительна).
Пример такого внутрикурсового рейтинга можно увидеть, например, на курсе «Поколение Python» по ссылке:
В меню курса слева можно увидеть отдельный пункт «Лидерборд».
Если обратиться к официальной справке Степика, то упоминание лидерборда на курсах можно встретить как минимум здесь и здесь (за информацию спасибо Илье — представителю Степика в дискорде).
В справке Степика указано, что
Лидерборд доступен для платных и Enterprise-курсов (только для клиентов, у которых еще действует тариф Enterprise (отменен с мая 2023 г.))
и использовался по запросу для курсов, которые являются олимпиадами или соревнования. Какое к ним имеет отношение «Поколение» я не знаю, не спрашивайте.
Но фишка в том, что сам по себе такой лидерборд существует для каждого курса. Для того, чтобы убедиться в этом, достаточно добавить в адресную строку слово scoreboard к адресу курса. Должно получится что-то вроде такого: https://stepik.org/course/127/scoreboard
И получим вот такую картину:
Мда… списка учащихся нет. Зато есть «Ваше место в рейтинге» и «Ваши баллы». Занятно, вот только практической пользы от этого нет. Место в этом рейтинге зависит от количества набранных баллов на курсе. При этом учащиеся с одинаковым количеством баллов делят одно место. То есть, если на курсе всего 30 баллов, как на примере выше, то выполнив все задания и заработав все эти баллы у вас будет первое место. Впрочем — как и у всех остальных, кто прошел курс и выполнил все задания. А если вы прошли курс не полностью, то будете занимать какое-то место в зависимости от того, сколько набрали баллов и сколько всего учащихся на курсе.
Вот такая вот неожиданная находка, будет считать ее типа «пасхалкой» от Степика. На самом деле выяснять подобные вещи не менее интересно, чем просто учится.