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