Базы данных

Санкт-Петербург, осень 2021

Описание

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

  • проектировать схему несложной базы данных
  • писать нетривиальные запросы
  • эффективно использовать базу данных из веб/десктоп приложений

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

Основные модули курса

  1. Основы языка запросов SQL. Небольшой модуль, предназначенный для тех, у кого нулевой опыт. Вы научитесь писать запросы, делающие выборку с агрегациями из одной-двух таблиц.
  2. Проектирование схемы. Как правильно разложить данные по таблицам так, чтобы снизить вероятность утраты данных, денег, доверия, и другого.
  3. Общение с СУБД из приложения. Шаблоны и антишаблоны взаимодействия приложений с СУБД, эффективность приложения, корректность его работы и поддерживаемость его кода.

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

Концепция

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

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

Во время аудиторного занятия у нас будет изучение очередной порции SQL и начало очередной итерации разработки веб приложения по описанным ниже правилам.

Правила итерации разработки веб-приложения

  1. У нас будет несколько проектов, из которых в результате должны будут получиться веб-приложения.
  2. На каждой итерации над проектом работают 4 человека. Два из них условно называются сеньорами, два джунами.
  3. Сеньорами будут студенты, которые уже работали в качестве джунов над данным проектом в прошлый раз. Джунами будут студенты, которые в прошлой итерации работали в качестве сеньоров над другим проектом.
    1. Следствие: роль каждого конкретного студента будет меняться каждую неделю. Неделю назад был джуном -- сегодня будешь сеньором, и наоборот.
    2. Второе следствие: проект каждого конкретного студента будет меняться каждые две недели. Сначала ты на проекте джун, потом сеньор, потом ты джун в другом проекте.
  4. Джуны будут выбираться по возможности случайным образом в начале аудиторного занятия.
  5. У каждого проекта будет беклог задач, который будет пополнять преподаватель. У каждой задачи будет некоторая стоимость.
  6. Во время итерации задача джунов -- выбрать себе задачу из беклога и закодировать её.
    1. Аудиторное время даётся для того, чтобы джуны начали работу, спрашивали сеньоров насчет того, что тут вообще происходит, почему приняты те или иные решения, где тесты, почему вот эта вот штука не работает, и так далее
    2. Сутки после аудиторного занятия даётся на то, чтобы работа над задачей была сделана и был прислан пул-реквест в GitHub. В результате в каждом проекте должно получиться два новых пул-реквеста.
    3. Далее сеньорам даётся двое суток на то, чтобы сделать code review обоих пул-реквестов, и ещё сутки на то, чтобы джуны на code review отреагировали и внесли в код изменения.
  7. Во время итерации задача сеньоров -- делать code review, писать тесты и код, генерирующий тестовые данные.

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

Оценки

За курс будет ставиться оценка, которая складывается из баллов за контрольные работы и аудиторную работу во втором и третьем модулях. В первом модуле аудиторная работа не оценивается. Формула:

5 * (
  0.6 * (сумма баллов за контрольные / максимум баллов за контрольные) +
  0.4 * (сумма баллов за аудиторные занятия / максимум баллов за проект)
)

Полученное множество вещественных чисел в интервале [0, 5] будет прокластеризовано методом k-means на 4 или 5 кластеров, соответствующих целочисленным оценкам.

Контактная информация

Преподаватели