Практическая часть курса "Программирование на Java", 2016 год
Java
Switch branches/tags
Nothing to show
Clone or download
Latest commit f1399ed Dec 20, 2016
Permalink
Failed to load latest commit information.
homework-base Small fix Dec 10, 2016
homework-g000-lavrentyev Добавил пути к файлам + merge Dec 6, 2016
homework-g594-anukhin replace some files Oct 31, 2016
homework-g594-borodin '/' replaced with File.separator. Added scope string, Student and Stu… Nov 9, 2016
homework-g594-glebov Maven test passed Nov 16, 2016
homework-g594-ishkhanyan Merge remote-tracking branch 'origin/master' Dec 16, 2016
homework-g594-islamov thread safety Dec 17, 2016
homework-g594-kalinichenko Checkstyle Dec 15, 2016
homework-g594-kozlov add test with multiple closing Dec 10, 2016
homework-g594-krokhalev Try Nov 22, 2016
homework-g594-nevstruev Добавил пути к файлам + merge Dec 6, 2016
homework-g594-petrov Travis Nov 28, 2016
homework-g594-plahtinskiy 3 task Nov 28, 2016
homework-g594-pyrkin Add README.md Nov 18, 2016
homework-g594-rubanenko add lock file; Dec 10, 2016
homework-g594-sharuev Correct implementation of Closeable interface (can close closed stora… Nov 27, 2016
homework-g594-shevkunov Ещё раз, проверим теорию. Nov 28, 2016
homework-g594-stepanov Выполнено второе задание Oct 31, 2016
homework-g594-vishnyakova correction Dec 15, 2016
homework-g594-vorobeyv Fixed scope Nov 14, 2016
homework-g595-belyh fixed rebuild Dec 17, 2016
homework-g595-gusarova third chance to return scope Dec 17, 2016
homework-g595-iksanov Fix codestyle Nov 1, 2016
homework-g595-kireev First try Oct 31, 2016
homework-g595-kryloff minor fixes Nov 16, 2016
homework-g595-manucharyan g595.Manucharyan.task3 (#279) Dec 9, 2016
homework-g595-murzin g595.murzin.task2 Oct 26, 2016
homework-g595-nosareva mvn changes Dec 10, 2016
homework-g595-novikov First try Oct 31, 2016
homework-g595-popovkin fix double close Dec 17, 2016
homework-g595-proskurin Codestyle was fixed. Dec 17, 2016
homework-g595-rodin Performance test for 3rd task Nov 10, 2016
homework-g595-romanenko Update repository Dec 10, 2016
homework-g595-shakhray Concurrency error edited. Nov 5, 2016
homework-g595-tkachenko The root of evil is founded and destroyed!!! Nov 29, 2016
homework-g595-topilskiy UPDATE: OptimisedByteStorage: minor fixes Dec 4, 2016
homework-g595-turumtaev многопоточность Dec 11, 2016
homework-g595-ulyanin hash; lock files Dec 17, 2016
homework-g595-yakusheva try to make task correctly Dec 16, 2016
homework-g596-bystrov Minor fixes Oct 31, 2016
homework-g596-egorov /\/\ Oct 31, 2016
homework-g596-fattakhetdinov Добавил try-with-resources Dec 18, 2016
homework-g596-gerasimov Task3.v4.3 (And more) Dec 16, 2016
homework-g596-grebenshchikova Make new changes Oct 31, 2016
homework-g596-hromov Resolved issues Oct 31, 2016
homework-g596-ivanova Small fixes Dec 19, 2016
homework-g596-kozlova Fixed comments Dec 17, 2016
homework-g596-kravets update Oct 31, 2016
homework-g596-kupriyanov 3rd task Dec 19, 2016
homework-g596-lapa Fixed codestyle Oct 17, 2016
homework-g596-litvinov Directory fixes Nov 1, 2016
homework-g596-pockonechny windows crash fix Dec 19, 2016
homework-g596-proskurina problems fixed Nov 1, 2016
homework-g596-stepanova fix comments Nov 8, 2016
homework-g597-bogdanov Добавил пути к файлам + merge Dec 6, 2016
homework-g597-dmitrieva forgot to rewrite offsets during removeGarbage, now fixed Dec 4, 2016
homework-g597-grishutin g597.grishutin.task3 (#282) Dec 7, 2016
homework-g597-kasimova g597.Kasimova.task3 (#296) Dec 8, 2016
homework-g597-kirilenko BugFixes. Dec 9, 2016
homework-g597-kochukov CODESTYLE 3 Dec 19, 2016
homework-g597-komarov added final, changed "merge" method Dec 5, 2016
homework-g597-kozlov g597.kozlov.task3 (#253) Dec 7, 2016
homework-g597-markov task 3 optimization 4 sniper Dec 5, 2016
homework-g597-mashurin 597-Mashurin-task3 (#271) Dec 7, 2016
homework-g597-miller Storage improvements Dec 4, 2016
homework-g597-moiseev try to fix windows problem 2 Nov 30, 2016
homework-g597-nasretdinov w Nov 2, 2016
homework-g597-povarnitsyn kek Oct 18, 2016
homework-g597-shirokova some fixes Dec 5, 2016
homework-g597-sigareva g597.sigareva.task2 (#197) Nov 2, 2016
homework-g597-smirnova codestyyyle Dec 4, 2016
homework-g597-spirin Spirin [group 597] (#286) Dec 7, 2016
homework-g597-vasilyev More finals Dec 4, 2016
homework-g597-zakharkin g597.zakharkin.task3 (#278) Dec 7, 2016
homework-g599a-kazakova Codestyle checking Oct 17, 2016
homework-tests Merge pull request #251 from i-fattakhetdinov/master Dec 18, 2016
seminars/src/ru/mipt/java2016/seminars Материалы седьмого семинара Nov 15, 2016
tasks Добавил пути к файлам + merge Dec 6, 2016
workshop-materials Add second seminar materials Oct 26, 2016
.gitignore Some fixes Nov 15, 2016
.travis.yml .travis.yml tab and tab Oct 16, 2016
.travis_build.sh permission access for travis Oct 17, 2016
README.md Перенаправил часть ссылок на google drive Dec 19, 2016
pom.xml Fixed bugs Nov 21, 2016

README.md

Программирование на 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. Многопоточность
  7. Бонус - головоломки
  8. Сборка и компоновка приложения (из курса Промышленное программирование)
  9. Распределенные системы (из курса Промышленное программирование)
  10. Реляционные базы данных (из курса Промышленное программирование)

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

Документация

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

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

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

  1. Java vs C++; Работа с исключениям и I/O (примеры кода, доп семинар)
  2. Паттерны проектирования (коллекция паттернов)
  3. Строки и обёртки над примитивными типами в Java. Антипаттерны (коллекция антипаттернов)
  4. Повторное использование кода в Java. Многопоточность в Java (видео: Java Memory Model)
  5. Средства синхронизации в Java (примеры кода)
  6. Рефлексия и сборка мусора в Java (примеры кода, хорошая статья про ссылки в Java)
  7. Lambdas & Streams (примеры кода, видео: Get a Taste of Lambdas and Get Addicted to Streams)
  8. Spring Framework Core (примеры кода)
  9. REST & DB (примеры кода)
  10. MVC (примеры: Spring MVC, WebSockets + JS-клиент, игрушечный MVC с Observer)
  11. Повторение пройденного (видео: JVM: краткий курс общей анатомии)
Ещё немного на посмотреть
Работа с 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 с другими языками
  • Мотивация при выборе языка/фреймворка/сервиса