Ю.Моисеенко Автор статьи – выпускник наших курсов 2003 года. Работает преподавателем с сентября 2004 года. Учится в RTU на 2-ом курсе профессиональной магистратуры на факультете DITF (Datorzinatnes un Informacijas Tehnologijas Fakultate). Работает в фирме Softikom программистом на С.
Основной объект курса - потоки данных, главным образом двоичные и текстовые. Теоретическая часть курса посвящена рассмотрению некоторых подходов к построению алгоритмов, базовых идей и концепций обработки потоков данных. Изучаются различные алгоритмы и их реализация, в процессе построения реализаций в курсе появляется ряд нетривиальных структур данных. Курс включает следующие сюжеты: 1. Работа с битами, специфика работы с битами на C; синхронная и асинхронная обработка битотового потока. 2. Форматы передачи и хранения данных, например, формат передачи данных для электронной почты. 3. Контрольные суммы для обнаружения повреждения или непредумышленного замещения данных при передаче или хранении (некриптографические хеш-функции), в частности, рассматриваются CRC-коды, их реализация и устойчивость. 4. Различные алгоритмы сжатия без потерь (архивации) и их реализация на языке С. Здесь рассматриваются всевозможные подходы, применяемые в современных архиваторах, в частности: статистическое сжатие (например, построение префиксного кода методом Хаффмана), арифметическое сжатие, блочное кодирование (преобразование Барроуза-Уилера и методы, используемые совместно с ним), словарные методы сжатия данных (различные варианты алгоритма Зива-Лемпеля). Для реализации алгоритмов выбран язык программирования C. Эффективность C, характерный для него набор инструкций управления и структур данных обусловили именно такой выбор. Предварительных знаний языка C не требуется. Необходимый предварительный минимум – базовые 5 семестров. В смысле изучения языка C курс представляет альтернативу традиционному спецкурсу "C. Unix". При этом курс построен так, что на протяжении всех частей курсант будет постепенно изучать сам язык С и учиться использовать его. Это означает, что на этот спецкурс могут поступать и те, кто уже знает собственно язык С - у них появляется возможность взглянуть на него с иных позиций, увидеть другой класс характерных применений C и, сравнивая с уже им известными, в конечном счёте более тонко понять, почувствовать язык, глубже освоить (весьма содержательные) структуры данных, применяемые в реализации изучаемых алгоритмов. Спецкурс, можно сказать, является "платформенно-независимым" - курсанты будут разрабатывать программы под Unix, но перенос их на платфому Windows (или какую-либо другую) не составляет никаких трудностей.