Основная программа

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

Только для студентов СПбПУ

  • Первый
  • Второй
  • Третий
  • Четвертый
  • Углубленное программирование на Java
    11 занятий, 44 академических часа
  • Алгоритмы и структуры данных
    15 занятий, 60 академических часов
  • Фронтенд-разработка
    12 занятий, 48 академических часов

О курсе «Углубленное программирование на Java» (Осень 2021)

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

 

Программа курса
    1. О программе курса. Введение в язык, среда программирования, основные конструкции языка.

    2. Классы и объекты, статические методы и поля. Внутренние в вложенные классы

    3. Объектно-ориентированное программирование

    4. Параметризованные типы. Коллекции. Итераторы

    5. Функциональное программирование. Лямбда-выражения. Stream APIФункциональное программирование. Лямбда-выражения. Stream API

    1. Работа с файлами. Потоки байтов. Блокирующий ввод/вывод. Потоки символов.

    2. Логгирование. Неблокирующий ввод/вывод. Шаблоны проектирования и рефакторинг

    3. Reflection и аннотации. Unit-тестирование.

    4. Потоки, синхронизация, взаимоблокировки. Volatile и основные шаблоны многопоточного программирования

    5. Продвинутые шаблоны многопоточного программирования

    6. Итоговое занятие. Работа с байткодом JVM. Java Agent. RPC в Java

Преподаватели
Александр Галкин
Никита Деревянко
Сергей Есипенко
Контроль знаний

Итоговая оценка

  • Отлично – 85 - 100 баллов
  • Хорошо – 70 - 85 баллов
  • Удовлетворительно – 60-69 баллов
Для получения зачета нужно набрать >= 60 баллов, решив при этом обязательный набор задач. Если вам не хватает баллов, вы можете попросить дополнительное задание. 
Каждое задание оценивается в 10 баллов. При этом каждые задачи внутри задания оцениваются в некоторых тугриках. Тугрики к баллам приводятся линейно

Правила сдачи задач
  1. Задачи сдаются с помощью Pull Request на GitHub
  2. Каждое задание имеет жесткий deadline, после которого задания не применяются (обычно это две недели с момента выдачи задания)
  3. На каждое задание будут выделены дни проверки (от двух до четырех), после которых решение можно исправить без потери баллов
  4. Можно сдавать часть задач из задания 
  5. Каждая сдаваемая задача должна проходить все тесты (если они есть).
  6. Если тесты пройдены или отсутствует, проводится ревью кода на стилистическое оформление, архитектуру, оптимизацию и логику программы

Правила:
  1. Наличие комментариев, объясняющих нетривиальные моменты в решении.
  2. Необходимо придерживаться одного стиля написания кода. Файл с code-style лежит в репозитории с домашним заданием ​​polis-java-codestyle.xml
  3. Код решения должен быть грамотно разбит на функции
  4. Все переменные, классы и функции должны иметь осмысленное имя. Однобуквенные имена разрешаются только для счётчиков цикла, общепринятых обозначений и для переменных, заданных в условии задачи.
  5. Переменные должны объявляться по месту использования.
  6. Для каждой задачи необходимо определить скорость работы по требованию преподавателя
  7. Реализованное решение должно быть максимально эффективным.
  8. Любое дублирование чужого кода штрафуется. Запрещено списывать и давать списывать. 


 Санкции за нарушение антиплагиатных правил:
1. Санкции будут зависеть от тяжести нарушения, умышленное оно или нет, первичное или повторное. Списывание считается доказанным, если два преподавателя из трех в этом уверены. 
2. Аннулирование оценки за задание
3. Снижение оценки за курс до минимальной (неуд);
4. Отчисление с образовательной программы с последующим занесением в черный список студентов и сотрудников.

Результат

умение использовать принципы ООП с учетом специфики Java; умение использовать стандартную библиотеку для работы с функциями ввода/вывода; умение писать unit-test'ы для Java приложений; умение строить UI Java-приложения; умение анализировать код Java-приложения с помощью Reflection API.