Рубрики
Обучение Преподавание

Строки в программировании — невнимательность и кодировки

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

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

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

Вступление

Кто-то знает, а кто-то нет, что я работаю преподавателем уже около 20 лет. Но в институте я преподаю право. Что слабо соотносится с тем, о чем пойдет речь ниже. Однако с 2019 года я создаю и поддерживаю различные курсы на Степике, в том числе, с осени 2020 года и курсы по программированию. За прошедшие годы накопилось много интересного опыта, собралось много наблюдений, было исправлено множество часто однообразных ошибок учащихся. На что-то можно было указать прямо в теории курсов, на что-то я писал развернутые комментарии под тем или иным шагом. Но многое остается у меня в голове и в тех решениях, которые никто не видит. Я долго шел к тому, чтобы попробовать все это проанализировать и как-то преобразовать во что-то полезное. Например, в заметки на этом сайте. Хочется верить, что эта заметка окажется первой ласточкой и дальше будет больше и интереснее.

С и C — это разные буквы для компьютера

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

Учащиеся очень часто путают буквы кириллицы и латиницы. Человеку кажется, что они одинаковы и видит он их тоже одинаково. Но компьютер буквы (символы) воспринимает совсем иначе. И для него они могут отличаться.

Например, у нас есть два слова:

cop
сор

Визуально вам может показаться, что это одно и тоже слово. Однако для компьютера эти слова состоят из совершенно разных символов — верхнее написано на латинице, а нижнее на кириллице. А вот как их «видит» компьютер:

99 111 112
1089 1086 1088

Можете сами проверить.

Чаще всего ошибаются, когда первым символом в строке идет буква с. Человек начал набирать на английском, увидел на каком-то символе, что ошибся с раскладкой и убирает явно английские, но буква c ему кажется вполне русской и ее он оставляет. Однако, периодически бывают случаи, когда люди умудряются вставить латинский символ в середину кириллической строки. Это мне объяснить уже сложнее, но вот как-то получается. Так что будьте внимательны и не путайте символы кириллицы и латиницы. Или, если вам кажется, что правильный вывод в задаче со строками и вывод вашего решения совпадают — проверьте, не перепутали ли вы символы разных раскладок.

Если же вы уже прошли этап «перепутать с и c», то можете взглянуть на статью Абсолютный минимум об Unicode на 2023 год, чтобы понять, насколько глубока кроличья нора строк и кодировок. Беременным и людям со слабым сердцем по ссылке лучше не переходить и не пытаться во все это вникать) Я предупредил.

Рубрики
Обучение Онлайн курсы

Лидерборд на курсах Степика

А вы знали, что на Степике кроме общего рейтинга знаний/репутации есть еще отдельные рейтинги учащихся для каждого курса? С оговорками, но тем не менее. Если не знали — сейчас узнаете (хотя ценность сего знания сомнительна).

Пример такого внутрикурсового рейтинга можно увидеть, например, на курсе «Поколение Python» по ссылке:

В меню курса слева можно увидеть отдельный пункт «Лидерборд».

Если обратиться к официальной справке Степика, то упоминание лидерборда на курсах можно встретить как минимум здесь и здесь (за информацию спасибо Илье — представителю Степика в дискорде).

В справке Степика указано, что

Лидерборд доступен для платных и Enterprise-курсов (только для клиентов, у которых еще действует тариф Enterprise (отменен с мая 2023 г.))

и использовался по запросу для курсов, которые являются олимпиадами или соревнования. Какое к ним имеет отношение «Поколение» я не знаю, не спрашивайте.

Но фишка в том, что сам по себе такой лидерборд существует для каждого курса. Для того, чтобы убедиться в этом, достаточно добавить в адресную строку слово scoreboard к адресу курса. Должно получится что-то вроде такого:
https://stepik.org/course/127/scoreboard

И получим вот такую картину:

Мда… списка учащихся нет. Зато есть «Ваше место в рейтинге» и «Ваши баллы». Занятно, вот только практической пользы от этого нет. Место в этом рейтинге зависит от количества набранных баллов на курсе. При этом учащиеся с одинаковым количеством баллов делят одно место. То есть, если на курсе всего 30 баллов, как на примере выше, то выполнив все задания и заработав все эти баллы у вас будет первое место. Впрочем — как и у всех остальных, кто прошел курс и выполнил все задания. А если вы прошли курс не полностью, то будете занимать какое-то место в зависимости от того, сколько набрали баллов и сколько всего учащихся на курсе.

Вот такая вот неожиданная находка, будет считать ее типа «пасхалкой» от Степика. На самом деле выяснять подобные вещи не менее интересно, чем просто учится.

Рубрики
Обучение Онлайн курсы

Новогодний курс на Степике (декабрь 2023)

Для меня Новый год это особенный праздник. Тихий, уютный, семейный. По большому счету, сейчас это единственный праздник, который для меня еще имеет хоть какое-то значение. Хотя уже совсем не то, которое имел когда-то давно.

Осенью 2020 года, после череды созданных на Степике курсов, у меня появилась мысль о создании особого, новогоднего, курса. Праздничного, доброго и веселого. Который бы дарил хорошее новогоднее настроение. Идей о чем может быть такой курс было много. У меня так всегда — идей много, но проблемы с их дозреванием и превращением в полноценные курсы. По разным причинам. Так и тогда. Появилось несколько заготовок. Один курс был наполовину сделан, когда я передумал и начал делать другой. Наполовину его сделал, но решил радикально сменить концепцию. В итоге переделал и он превратился в курс Крылатые выражения — великие и не очень. Кратко о процессе его создания и о том, что получилось в итоге, я уже писал на сайте — Курс, который взлетел.

Каждый раз в последующие годы я хотел сделать что-то подобное. Так было в декабре 21 года, в декабре 22 года. Но как-то не складывалось. Не хотели созревать идеи и превращаться в полноценные курсы. Оставались только заготовки.

Наконец, наступил декабрь 2023 года. Я снова захотел сделать предновогодний курс. Как обычно у меня успело смениться три идеи. Две из них, я надеюсь, в следующем году превратятся в полноценные курсы, уже не праздничные, а самые обычные. А вот самая первая идея в итоге дозрела и я смог это сделать. Создать еще один предновогодний курс — Языки программирования — великие и не очень.

Рубрики
Обучение Онлайн курсы

Мои курсы о программировании на Степике

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

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

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

В процессе обучения я попал на Степик в начале 2017 года. Очень удобный формат обучения — теория с обилием практики — позволил увлечься и начать активно расти (и не только в программировании). Тогда еще курсы там были преимущественно бесплатные, не то, что сейчас.

Летом 2019 года несколько человек, включая меня, создали курс о программировании на языке Go. А осенью я уже и сам начал пробовать создавать разные развлекательные курсы. Об этом здесь.

И только осенью 2020 года я решил, что достиг той точки, когда уже могу сделать что-то бОльшее. Вспомнилось, как я начинал заниматься написанием учебных материалов для модмейкинга игры TES IV Oblivion, создавая переводы туториалов с английского языка. А незадолго до того я проходил какие-то курсы по программированию на англоязычном сайте Сололерн (я тогда много где их проходил). Подумалось, а почему бы не перевести какой-то из тамошних курсов на русский? Сделать перевод, адаптировать практику под Степик. Курсы изначально были бесплатные, так что мне показалось нормальным взять их в порядке fairuse (это важно в контексте значительно более поздних событий). Тем более, что я тоже не собирался их делать платными.

Таким образом, осенью 2020 были переведены и адаптированы курсы PHP — первое знакомство и Ruby — первое знакомство.

Название в стиле «первое знакомство» я выбрал потому, что курсы на Сололерн достаточно простые и поверхностные. В этом их и плюс и минус. Плюс — их легко проходить. Минус — они все-таки сильно поверхностны. Но для меня это было в самый раз. Я сам хотел познакомиться с этими языками программирования и хотел познакомить с ними других. Поэтому — «первое знакомство».

Позднее, летом 2021 года, я перевел еще и курс по Go, создав Go (Golang) — первое знакомство.

Осенью 2022 года я сделал перевод курса по PHP еще и на украинский язык — PHP — перше знайомство (українською). По многим причинам.

А под самый новый 2023 год я частично запустил уже полностью авторский курс PHP — шпаргалка (cheatsheet), который, из-за определенных обстоятельств, так и оказался до сих пор недоделанным (но он однозначно будет доделан).

Потому что весной 2023 года Степик заблокировал три первых курса «первое знакомство». Подробнее об этой истории можно узнать здесь.

Из плохого — это заставило меня потратить полгода времени совсем не на то, на что планировалось. Из хорошего — я полностью переделываю курсы (остался Ruby, над которым работаю прямо сейчас). И они теперь становятся по настоящему моими. Это дало мне дополнительный опыт и сделало курсы еще лучше. Дало возможность поправить некоторые изначальные промахи, добавить полезный материал и больше практики и задач, учесть пожелания учащихся.

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

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

Мне показалось, что моя история вполне подходит под такой формат. Все-таки почти семь лет я буквально живу Степиком, создал более 20 курсов, помог многим людям — разве это не успех?

К тому же буквально на этой неделе я достиг еще одной вехи на своем пути — я стал первым человеком на Степике, который одновременно есть в обоих топах: и в топ-20 по знаниям и в топ-20 по репутации. Первый говорит о моем стремлении к знаниям. Второй — о том, что мои курсы важны и нужны.

Двигаться вперед, помогать другим — Степик дал мне возможность для этого, а я ею воспользовался. Иногда я могу его покритиковать, однако он уже стал для меня родным. С Днем Рождения, Степик!

Рубрики
IT - разное

Обновление рейтинга на Степике

Не прошло и года. То, чего многие ждали (а кто-то и не ждал) — свершилось. Степик починяет рейтинг. При этом, судя по всему, нас ждут большие изменения. О том, что известно на данный момент и мои мысли на этот счет — далее.

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

Рейтинг знаний

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

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

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

Текущий топ-100 по знаниям можно посмотреть здесь.

Рейтинг репутации

С репутацией ситуация еще более непонятная с одной стороны и уже более определенная — с другой.

Рейтинг полностью пересчитан и уже пересчитаны места. Теперь одновременно в обоих топ-20 Степика есть 2 человека — ваш покорный слуга и Петр Михалевский.

Но есть странность. У многих преподавателей рейтинг был пересчитан кардинально. У некоторых он уменьшился в 10-20 раз. С чем это связано — пока неизвестно и даже нет никаких предположений. Как следствие, возможно, он еще будет пересматриваться. Но это просто предположение.

Текущий топ-100 по репутации можно посмотреть здесь.

Рубрики
Самое разное

Сказ о рейтингах на Cтепике (исторический экскурс)

На Степике есть рейтинги пользователей по знаниям и по репутации. На сайте можно посмотреть топ-20 в одной категории и в другой. При желании можно узнать и топ-100, по знаниям и по репутации. Все бы ничего, но есть одна маленькая проблема. Где-то с конца августа 2022 года рейтинги не обновляются (Степик, верни рейтинги!).

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

Я не буду говорить о том, что топ подразумевает сложность входа в него. Это вроде как лучшие из лучших (на Степике это скорее наиболее задротистые и упертые). Следовательно и попасть в их число должно быть сложно. Л — логика.

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

Итак, представлю наших уникумов.

Рубрики
Самое разное

История создания неофициального сервера Степика в Дискорде

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

Рубрики
Обучение Онлайн курсы

О комментариях и уведомлениях на Степике

Практически каждое мое утро начинается со Степика. Я просматриваю уведомления и решаю какие-нибудь задачи.

Уведомлений может быть от нескольких штук (реже) до полусотни (чаще, хотя обычно что-то среднее — 2-3 десятка). И это не за сутки. Это только за ночь.

Даже просто просмотреть их — это какие-то затраты времени. Часть уведомлений — это лайки уроков/комментариев, часть — это публикация решений. Такие я просто просматриваю и отмечаю прочитанным. Далее идут вопросы связанные с какими-то проблемами с решением задач или более общими вопросами о теории.

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

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

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

Что мне дают ответы на комментарии? Ведь их много и иногда на них приходится тратить довольно много времени. Казалось бы — зачем это мне нужно?

На это есть несколько причин:

1) «мы отвечаем за тех, кого приручили». Уж если я создал курс, то было бы неплохо его поддерживать (по возможности) и помогать учащимся на нем;

2) для меня самого это очень хорошая текущая практика (ага, типа «атомных привычек») и возможность периодически узнавать что-то новое. Ведь мне приходится разгребать много самого разного кода. Да, чаще всего это какие-то банальности, но иногда бывают поистине загадочные и интересные случаи (например, вот такой). А я всегда стараюсь вникать в интересные вопросы, разбираться в них и адекватно отвечать. При этом если это связано с кодом, я всегда его проверяю и перепроверяю. То есть, если я привел в своем ответе фрагмент кода или указал как конкретно работает код — в 99,99% он точно работает именно так.

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

Еще хотелось бы пару слов сказать про удаление комментариев. Обычно я удаляю комментарии трех видов:

1) явные ответы на вопросы и задачи. Такие я удаляю сразу. Если ответ это лишь часть сообщения, стараюсь просто его отредактировать, заменив удаленную часть тремя звездочками, вот так — ***;

2) маты и явные оскорбления. Но такие, слава Богу, бывают крайне редко;

3) вопрос, связанный с заданием, типа — помогите, не знаю как решить или что в таком-то тесте? То есть не имеющий особой смысловой нагрузки для окружающих и если при этом, когда я добрался до комментария, оказалось, что человек задачу уже решил. И забыл этот комментарий за собой удалить.

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

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

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

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

В общем вот так это все работает.

Рубрики
Обучение Онлайн курсы

Курсы по закреплению лексики китайского языка

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

Увлечение востоком

Еще со времен моих занятий единоборствами мне был интересен Восток. Его культура, философия, история.

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

В итоге, в какой-то момент (уже когда занятия единоборствами остались в прошлом) мне захотелось поближе познакомиться с японским языком. Были скачаны и в той или иной мере прочитаны всякие там «Пути бесхвостой птички» и «Кандзявые эссе». Потом я пришел на Степик и там тоже были кое какие курсы по японскому. В то же время я попал и на Дуолинго. И там тоже был японский. И я понемногу наслаждался страдал, копошась и пытаясь что-то учить.

Здесь ярко проявилась главная проблема при изучении чего-то нового. Если ты учишь это что-то без какой-либо цели, без необходимости применять получаемые знания где-то на практике — это все путь в никуда. Сегодня ты учишь, а завтра забываешь. Мозг не дурак, он не хочет помнить то, что считает не важным. То, что ему кажется не нужным. А если ты учишь японский и нигде и никак его не используешь и не применяешь — значит он тебе не нужен и его можно со спокойной совестью забыть.

Рубрики
Обучение Онлайн курсы

Что для меня значит Stepik

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

Пять лет назад я совершенно случайно попал на Степик. Искал я тогда курсы по компьютерной безопасности, а их что тогда, что сейчас — днем с огнем не сыщешь. Но все-таки один нашелся. Как раз на Степике.

Я его быстро прошел. Потом сел за курс по питону, дальше больше. И как-то втянулся.

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

Всю жизнь я учился. Это началось еще с детства, когда в 6 лет, я прошел всю программу первого класса с девочкой из соседней квартиры, которая была на год меня старше. Она пошла в школу, а я еще нет. Но так как мы проводили очень много времени вместе, то и уроки мы делали тоже вместе. Она — потому что надо было, а почему их делал я — увы, не помню. Но в первый класс я пошел уже имея за плечами почти всю программу этого самого первого класса. Гением я от этого не стал, но жажда к знаниям, возможно, уже тогда пустила во мне свои корни.