Курсът запознава студентите с основите на функционалното програмиране. Изучават се основните конструкции на езиците за функционално програмиране и структурата на функционалните програми. Особено внимание се отделя на някои специфични въпроси като функции от по-висок ред, модели на оценяване, работа с безкрайни потоци и др. Представят се основните принципи на реализацията на езиците за функционално програмиране. Разглеждат се някои характерни приложения на тези езици.

Изложението се базира на функционалните езици Scheme и Haskell.
Курсът изучава основните концепции, свързани със структурите от данни; описанието им; създаването на абстрактни типове данни, определящи типове на структури от данни; класифицирането на структурите. Разглежда описанието и реализацията на различни представяния на структурите от данни: стек, опашка, свързан списък с една и две връзки, цикличен свързан списък, дърво, двоично дърво, двоично наредено дърво, балансирано двоично наредено дърво, граф. Всяка от тези структури се реализира чрез примерен шаблон на клас. В курса е включена и структурата от данни файл. Не малко внимание е отделено на приложения на тези структури.
Изложението се базира на обектно-ориентирания подход.
Курсът е въведение в класическата и съвременната теория на изчислимостта. Основните теми са теорията на автоматите и формалните езици, изчислимост с машини на Тюринг, Тезис на Чърч – Тюринг, неразрешимост, сложност , класовете P и NP, NP – пълни проблеми. Подходът е математически, но от гледна точка на компютърната наука. Целта на курса е да се разгледат основните идеи, модели и резултати, свързани с теоретичните основи на програмирането.
Курсът е предназначен за студенти II курс от специалност информатика. Дава приложение на темите, разгледани в курса Дискретни структури. Дава основата за курсовете: Дизайн и анализ на алгоритми, Изчислимост и сложност и Семантики на езиците за програмиране.