Kurz navazuje na základy programování ALG119000 a pracuje teoretickými aspekty programování, seznámení se s různými algoritmy a jejich složitostí.
Úvodní programovací kurzy, i ten u nás na katedře, zpravidla pracují s Pythonem a tedy zachycují tzv. procedurální programování a případně objektově orientované. Avšak existuje velká škála programovacích paradigmat, neboli přístupů jak programovat, a také mnoho programovacích jazyků, které se více či méně k těmto paradigmatům hodí. Cílem předmětu je rozbor těchto paradigmat a základů jednotlivých jazyků, které jsou pro daná paradigmata vhodná. Látka v kurzu pokryje přinejmenším tři paradigmata: objektově orientované, logické a funkcionální programování, avšak neomezí se jen na ně.