/mipt-java-2016

Практическая часть курса "Программирование на Java", 2016 год

Primary LanguageJava

Программирование на Java

Build Status

Поток 2016го года. Прогресс потока.

Контакты

Чат курса в Telegram

Домашние задания

  1. Калькулятор - дедлайн 14.10.2016 23:59 MSK
  2. Key-value storage - дедлайн 31.10.2016 23:59 MSK
  3. Оптимизация производительности
  • мягкий дедлайн: 21.11.2016 23:59 MSK (после его наступления можно получить максимум 1 балл)
  • жесткий дедлайн: 28.11.2016 23:59 MSK
  1. REST API калькулятор - черновик!, дедлайна нет

Как оценивается

  • Если на момент дедлайна у преподавателя претензий к коду нет, задача считается принятой, за неё даётся 2 балла.
  • Если на момент дедлайна тесты проходятся успешно, но у преподавателя есть замечания, задача считается сделанной, за неё дается 1 балл.
  • Если на момент дедлайна тесты не проходятся или же pull request вообще не оформлен, задача считается не сделанной, за неё дается 0 баллов.

Материалы

Лекции

  1. Основы
  2. Объекты
  3. Классы
  4. Обобщения и лямбды
  5. Проектирование
  6. Многопоточность

Семинары 596-ой группы

Стараемся придерживаться google-кодстайла.
Проще всего этого можно добиться, скачав настройки для кодстайла. Посмотреть, как их устанавливать, можно здесь.
После этого не забываем использовать кнопку Code/Reformat Code, хотя бы перед коммитом.

Обязательным является прохождение проверки Maven Checkstyle. Она происходит при запуске всех тестов (например, с помощью mvn test или по клавише test во вкладке Maven Projects).

  1. Java vs C++; Работа с исключениям и I/O
    Примеры кода
    Доп семинар Доп. литература: Head First Изучаем Java

  2. Паттерны проектирования
    Доп. литература: Head First Паттерны проектирования

  3. Строки и обёртки над примитивными типами в Java. Антипаттерны
    Доп. литература: Чистый код

  4. Повторное использование кода в Java. Многопоточность в Java

  5. Средства синхронизации в Java
    Примеры кода

  6. Рефлексия и сборка мусора в Java
    Примеры кода
    Хорошая статья про ссылки в Java

  7. Lambdas & Streams
    Примеры кода

Рекомендуемая литература

Документация
Работа с Git

Программа

  • Предпосылки к появлению Java
  • Примитивы
  • java.lang.Object
  • Классы, абстрактные классы, интерфейсы, внутренние классы, анонимные классы
  • Наследование, переопределение методов
  • Модификаторы доступа, инкапсуляция
  • Обобщения (Generics)
  • Лямбда-выражения
  • Пакет java.util.Collections
  • Компоновка программного кода
  • Многослойная архитектура
  • Порождающие шаблоны проектирования
  • Структурные шаблоны проектирования
  • Поведенческие шаблоны проектирования
  • Потоки в JVM
  • Критические секции, synchronized
  • Java Memory Model
  • Паттерны организации многопоточного кода
  • Проблемы многопоточности
  • Сборщик мусора
  • Стратегии сборки мусора
  • Слабые ссылки
  • Пределы нагрузки JVM
  • Оптимизация кода
  • Профайлинг
  • Тюнинг параметров JVM
  • Reflection API
  • Aspect-Oriented Programming
  • Abstract Syntax Tree
  • Фреймворки для компоновки сложных приложений
  • Работа с SQL из Java
  • HTTP в Java
  • Парадигма REST
  • Форматы сериализации
  • Сравнение Java с другими языками
  • Мотивация при выборе языка/фреймворка/сервиса