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