Архиватор (проект) — различия между версиями
Материал из Wiki - Факультет компьютерных наук
Sandello (обсуждение | вклад) |
|||
(не показано 6 промежуточных версии 3 участников) | |||
Строка 2: | Строка 2: | ||
|name=Архиватор | |name=Архиватор | ||
|mentor=Филипп Синицин | |mentor=Филипп Синицин | ||
− | |mentor_login= | + | |mentor_login=Phill.Sinitsyn |
|semester=Весна 2015 | |semester=Весна 2015 | ||
|course=1 | |course=1 | ||
|summer= | |summer= | ||
+ | |is_archived=yes | ||
}} | }} | ||
=== Что это за проект? === | === Что это за проект? === | ||
− | Результатом работы должна стать консольная утилита -- архиватор -- программа, сжимающая файлы на диске без потери информации с целью сохранения места. В качестве алгоритма сжатия предлагается взять последовательность из преобразования | + | Результатом работы должна стать консольная утилита -- архиватор -- программа, сжимающая файлы на диске без потери информации с целью сохранения места. В качестве алгоритма сжатия предлагается взять последовательность из преобразования Барроуза-Уилера, Move-To-Front и кодирование Хаффмана. |
=== Чему вы научитесь? === | === Чему вы научитесь? === | ||
− | * Писать надежный и понятный код, | + | * Писать надежный и понятный код, (проверенный тестами и code review) |
* Основам теории кодирования, | * Основам теории кодирования, | ||
* Использованию консольных утилит *nix. | * Использованию консольных утилит *nix. | ||
Строка 36: | Строка 37: | ||
=== Критерии оценки === | === Критерии оценки === | ||
* "удв” : реализованное и протестированное кодирование Хаффмана, | * "удв” : реализованное и протестированное кодирование Хаффмана, | ||
− | * “хор” : преобразование | + | * “хор” : преобразование Барроуза-Уилера + кодирование Хаффмана, оформленное в виде утилиты, которой можно пользоваться, |
* “отл” : BWT + Move-to-Front + Хаффман, в виде утилиты с интерфейсом похожим на что-то распространённое + сравнение с другими аналогичными утилитами по скорости и удобству использования. | * “отл” : BWT + Move-to-Front + Хаффман, в виде утилиты с интерфейсом похожим на что-то распространённое + сравнение с другими аналогичными утилитами по скорости и удобству использования. |
Текущая версия на 10:39, 20 октября 2015
Ментор | Филипп Синицин |
Учебный семестр | Весна 2015 |
Учебный курс | 1-й курс |
Внимание! Данный проект находится в архиве и реализован не будет. |
Что это за проект?
Результатом работы должна стать консольная утилита -- архиватор -- программа, сжимающая файлы на диске без потери информации с целью сохранения места. В качестве алгоритма сжатия предлагается взять последовательность из преобразования Барроуза-Уилера, Move-To-Front и кодирование Хаффмана.
Чему вы научитесь?
- Писать надежный и понятный код, (проверенный тестами и code review)
- Основам теории кодирования,
- Использованию консольных утилит *nix.
Какие начальные требования?
- Программирование на C/C++ (в рамках прослушанного курса),
- Умение работать с *nix.
Какие будут использоваться технологии?
- git, github
- gtest
Темы вводных занятий
- Основы теории кодирования (определение информации, префиксное кодирование, коды Шеннона-Фано, коды Хаффмана),
- Промышленная разработка (системы контроля версий, модульное тестирование, ревью кода, стайл-гайды, профилирование, IDE и текстовые редакторы).
Направления развития
- Улучшение энтропийного кодирования, BWT, MTF, RLE,
- Многопоточная обработка файла,
- Работа с директориями, линками,
- Анализ аналогичных утилит (bzip, 7z, tar, ...)
Критерии оценки
- "удв” : реализованное и протестированное кодирование Хаффмана,
- “хор” : преобразование Барроуза-Уилера + кодирование Хаффмана, оформленное в виде утилиты, которой можно пользоваться,
- “отл” : BWT + Move-to-Front + Хаффман, в виде утилиты с интерфейсом похожим на что-то распространённое + сравнение с другими аналогичными утилитами по скорости и удобству использования.