О курсе

Этот документ даёт представление об U-курсе.

Введение

Мы надеемся научить тебя программированию. Не на конкретном языке, а вообще. Ты рассмотришь такие техники управления сложностью программ, как функциональное программирование, абстракции данных и объектно-ориентированное программирование.

При освоении U-курса ты, в основном, будешь использовать язык программирования Python 3. Он популярен и в индустрии, и в академических кругах. Кроме того, отлично подходит для изучения затронутых в этом курсе тем. Python 3 — язык с открытым исходным кодом, разрабатываемый большим и разнообразным сообществом добровольцев. Во второй половине курса ты также познакомишься с языком программирования Scheme и с языком структурированных запросов SQL.

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

Команда курса

Лектор

Илья Апальков, к.т.н., доцент, директор компании «А-Вижн».

Ассистенты

Вячеслав Локтистов, Ксения Ципилева, Андрей Куликов.

Тьютор+

Анастасия Смирницкая, аспирант кафедры общей психологии, сотрудник центра стратегического и проектного управления ЯрГУ.

Тьютор

Елена Медведева, студентка кафедры педагогики и педагогической психологии ЯрГУ.

Предварительные требования

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

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

Формат

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

Лекции

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

Материал лекций будет постоянно требоваться для выполнения лабораторных и практических работ.

Практические и лабораторные занятия

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

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

Онлайн консультации

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

Задания

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

Лабораторные работы

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

Критерием оценки выполнения лабораторной работы выступает правильное решение всех основных задач (задачи помеченные звёздочкой и словами «для самых умных» можно не решать). Для успешного прохождения курса тебе нужно будет выполнить не менее 10 лабораторных работ.

Домашние работы

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

Мы ожидаем, что при выполнении домашней работы ты будешь обсуждать варианты решения задач со своими сокурсниками. Более того, можно получать подсказки в онлайн чате. Однако следует помнить: нельзя смотреть в чужой код и показывать свой. Нарушение этого несложного правила не только лишит тебя шанса разобраться с текущей темой, но и, возможно, помешает кому-то другому усвоить материал. Цель домашних работ не в том, чтобы проверить твоё владение материалом, а в том, чтобы овладеть последним.

Приемлемое выполнение домашнего задания включает:

  • написание кода для каждой задачи;

  • прохождение всех доктестов хотя бы для половины задач;

  • демонстрация попыток решить неподдающуюся задачу, то есть:

    • работа над задачей продолжительное время (много коммитов);

    • исправление неполного решения для увеличения количества положительных доктестов;

    • прохождение подмножества доктестов (для некоторых задач).

Тебе нужно решить задачу и написать код самостоятельно. В случае «ступора» обратись за помощью, не пытайся скопировать чьё-то решение или найти ответ в Интернете. (Кстати, мы тоже умеем (!) им пользоваться и легко вычислим нечестный код.)

Проекты

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

Дедлайны

Все задания имеют жёсткие дедлайны (крайние сроки сдачи). Жёсткость сроков состоит в том, что их нельзя перенести ни при каких обстоятельствах. Болезнь, отсутствие электричества, день рожденья бабушки — ничто не может изменить дедлайн.

Экзамены

Тебя ждут два промежуточных и один финальный экзамен. Все экзамены письменные. Они проходят без компьютера. К каждому экзамену прилагается официальная шпаргалка со всеми необходимыми напоминаниями. Более того, ты тоже можешь принести свою шпаргалку — лист A4 заполненный чем угодно, но (а) рукописно и (б) собственноручно.

Сотрудничество при обучении

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

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

Академическая честность

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

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

Вот неполный список того, что делать нельзя:

  • не копируй чей либо код;

  • не разрешай копировать свой код;

  • не копируй решения из онлайн ресурсов (Stack Overflow, Pastebin, GitHub и другие);

  • не размещай свои решения на публичном ресурсе.

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

Прежде чем копировать чужие ответы, спроси совета/помощи, тогда юлить и обманывать вовсе не придётся.