Промышленное программирование на языке Java: различия между версиями
Lotrek (обсуждение | вклад) Первое ДЗ |
Lotrek (обсуждение | вклад) Нет описания правки |
||
| Строка 23: | Строка 23: | ||
=== Задание 1 Disk Analyzer === | === Задание 1 Disk Analyzer === | ||
* Консольное приложение | * Консольное приложение | ||
* Принимает на вход папку | * Принимает на вход папку | ||
* Выводит непосредственное (только на первом уровне вложенности в переданную папку) содержимое папки в консоль в виде таблицы: | * Выводит непосредственное (только на первом уровне вложенности в переданную папку) содержимое папки в консоль в виде таблицы: | ||
# Номер | # Номер | ||
| Строка 30: | Строка 30: | ||
# Процент от общего размера | # Процент от общего размера | ||
# Количество вложенных элементов | # Количество вложенных элементов | ||
* Отдельно рисует таблицу — топ самых больших файлов с полным путем | * Отдельно рисует таблицу — топ самых больших файлов с полным путем | ||
* Выводит время работы | * Выводит время работы | ||
* Симлинки не нужно учитывать и не надо выводить | * Симлинки не нужно учитывать и не надо выводить | ||
Срок сдачи: 3.03.2020 | |||
===Домашнее задание 2: Кеш=== | |||
* В итоге мы должны получить интерфейс и его имплементацию, которые уже затем использовать в любом приложении | |||
* Кеш из long в String (из-за десериализации, но можно писать и обобщенно) | |||
* Поддерживает минимум две Eviction Policy (LRU + LFU) | |||
* Может хранить данные на диске | |||
* При создании указывается размер кеша в памяти, предельный размер на диске, папка, в которой кеш хранится и Eviction Policy | |||
* Нельзя создавать по файлу на каждую запись | |||
* Скорость из памяти O(1), скорость чтения с диска тоже, за исключением моментов компактизации диска | |||
* При работе с диском все ключи можно держать в памяти (но не все значения) | |||
* Кеш not thread-safe. | |||
* Можно восстановить с диска | |||
* В интерфейсе только get и put (возвращает старое значение) | |||
* Подсчет размера можно делать приближенно (но учитывать количество записей + длину значений) | |||
Срок сдачи: 24.03.2020 | |||
=== Правила сдачи ДЗ: === | === Правила сдачи ДЗ: === | ||
| Строка 41: | Строка 58: | ||
* Все задачи располагаем в одном репозитории. В корне репозитория находится необходимая обвязка для сборки и запуска, и, по отдельной директории-модулю на каждую задачу (task-XX-taskname). | * Все задачи располагаем в одном репозитории. В корне репозитория находится необходимая обвязка для сборки и запуска, и, по отдельной директории-модулю на каждую задачу (task-XX-taskname). | ||
* Код реализации задач располагаем в пакете ru.hse.cs.java2020.<github-login>.task-XX | * Код реализации задач располагаем в пакете ru.hse.cs.java2020.<github-login>.task-XX | ||
* Задание считается принятым, если вы отправили PR, получили ок у преподавателя по PR и затем защитили очно у преподавателя задание | |||
* Преподаватель может пропустить часть очной защиты по своему усмотрению | |||
* до дедлайна надо успеть не только отправить PR, но и пройти защиту ДЗ | |||
За что снимаются баллы: | За что снимаются баллы: | ||
Версия от 19:34, 26 февраля 2020
О курсе
Курс читается для студентов 3-го и 4-го курса ПМИ ФКН ВШЭ в 3-4 модулях.
Лектор: Лепешкин Игорь
Семинаристы: Косолапов Кирилл, Буланов Артем
Расписание: Лекции по вторникам, 09:00 - 10:20
Семинары 3-ий курс: вторники 10:30 - 11:50
Семинары 4-ый курс понедельники 10:30 - 11:50
Лекции
Лекции лежат на Яндекс.Диске
Домашнее задание
Планируется 2 ДЗ в 3ем модуле и 2 ДЗ в 4ом.
Задание 1 Disk Analyzer
- Консольное приложение
- Принимает на вход папку
- Выводит непосредственное (только на первом уровне вложенности в переданную папку) содержимое папки в консоль в виде таблицы:
- Номер
- Название папки
- Размер папки с содержимым
- Процент от общего размера
- Количество вложенных элементов
- Отдельно рисует таблицу — топ самых больших файлов с полным путем
- Выводит время работы
- Симлинки не нужно учитывать и не надо выводить
Срок сдачи: 3.03.2020
Домашнее задание 2: Кеш
- В итоге мы должны получить интерфейс и его имплементацию, которые уже затем использовать в любом приложении
- Кеш из long в String (из-за десериализации, но можно писать и обобщенно)
- Поддерживает минимум две Eviction Policy (LRU + LFU)
- Может хранить данные на диске
- При создании указывается размер кеша в памяти, предельный размер на диске, папка, в которой кеш хранится и Eviction Policy
- Нельзя создавать по файлу на каждую запись
- Скорость из памяти O(1), скорость чтения с диска тоже, за исключением моментов компактизации диска
- При работе с диском все ключи можно держать в памяти (но не все значения)
- Кеш not thread-safe.
- Можно восстановить с диска
- В интерфейсе только get и put (возвращает старое значение)
- Подсчет размера можно делать приближенно (но учитывать количество записей + длину значений)
Срок сдачи: 24.03.2020
Правила сдачи ДЗ:
- Для запуска сборки, проверок стиля и юнит-тестов используем gradle. Если оно не собирается через грэйдл, оно не собирается.
- Сдачу задач ведем в отдельных приватных клонах репозитория на github.
- Все задачи располагаем в одном репозитории. В корне репозитория находится необходимая обвязка для сборки и запуска, и, по отдельной директории-модулю на каждую задачу (task-XX-taskname).
- Код реализации задач располагаем в пакете ru.hse.cs.java2020.<github-login>.task-XX
- Задание считается принятым, если вы отправили PR, получили ок у преподавателя по PR и затем защитили очно у преподавателя задание
- Преподаватель может пропустить часть очной защиты по своему усмотрению
- до дедлайна надо успеть не только отправить PR, но и пройти защиту ДЗ
За что снимаются баллы:
- опоздание при сдаче задания
- сдача задания, в котором не проходят checkstyle/tests
- плохая структура кода (слишком большие классы, неочевидные зависимости, отсутствие валидаций входных параметров, непонятный нейминг и т.п.)
- отсутствие тестов на базовые сценарии, низкое покрытие тестов (для заданий 4го модуля).
- большое количество багов в задании
Преподаватель может требовать выполнения тех или иных дополнительных условий, не обозначенных в условии задачи.
Правила выставления оценок
В курсе предусмотрено две формы контроля знания:
- Домашние работы
- Письменный экзамен
Итоговая оценка вычисляется по формуле:
Итог 3го курса = Округление(0.15 * ДЗ1 + 0.15 * ДЗ2 + 0.15 * ДЗ3 +0.15 * ДЗ4 + 0.4 * Э)
Итог 4го курса = Округление(0.3 * ДЗ1 + 0.3 * ДЗ2 + 0.4 * Э)
ДЗ1 - ДЗ4 — оценки за домашние задания
Э — оценка за экзамен
Округление арифметическое.
Необходимый инвентарь
Ноутбук с установленными: JDK 11 IntelliJ IDEA Git