Архиватор (проект)
Материал из Wiki - Факультет компьютерных наук
Версия от 23:29, 6 ноября 2014; Sandello (обсуждение | вклад)
Ментор | Филипп Синицин |
Учебный семестр | [[:Category:Проектная работа/По семестрам/{{{semester}}}|{{{semester}}}]] |
Учебный курс | {{{course}}}-й курс |
[[Category:Проектная работа/По курсам/{{{course}}}-й курс]]
Что это за проект?
Результатом работы должна стать консольная утилита -- архиватор -- программа, сжимающая файлы на диске без потери информации с целью сохранения места. В качестве алгоритма сжатия предлагается взять последовательность из преобразования Боуэрса-Уиллера, Move-To-Front и кодирование Хаффмана.
Чему вы научитесь?
- Писать надежный и понятный код,
- Основам теории кодирования,
- Использованию консольных утилит *nix.
Какие начальные требования?
- Программирование на C/C++ (в рамках прослушанного курса),
- Умение работать с *nix.
Какие будут использоваться технологии?
- git, github
- gtest
Темы вводных занятий
- Основы теории кодирования (определение информации, префиксное кодирование, коды Шеннона-Фано, коды Хаффмана),
- Промышленная разработка (системы контроля версий, модульное тестирование, ревью кода, стайл-гайды, профилирование, IDE и текстовые редакторы).
Направления развития
- Улучшение энтропийного кодирования, BWT, MTF, RLE,
- Многопоточная обработка файла,
- Работа с директориями, линками,
- Анализ аналогичных утилит (bzip, 7z, tar, ...)
Критерии оценки
- "удв” : реализованное и протестированное кодирование Хаффмана,
- “хор” : преобразование Борроуза-Уиллера + кодирование Хаффмана, оформленное в виде утилиты, которой можно пользоваться,
- “отл” : BWT + Move-to-Front + Хаффман, в виде утилиты с интерфейсом похожим на что-то распространённое + сравнение с другими аналогичными утилитами по скорости и удобству использования.