Kurssilla tarkastellaan ohjelmointikieliä ja paradigmoja teoreettiselta, tekniseltä ja historialliselta kannalta. Aihetta konkretisoidaan tutustumalla eri ohjelmointiparadigmoja edustaviin ohjelmointikieliin. Kurssi luo kokonaiskuvan ohjelmointikielten kehitykseen, minkä jälkeen tarkastellaan lähemmin eri ohjelmointiparadigmoja. Imperatiivisen ohjelmoinnin osalta luodaan kokonaiskuva ohjelmarakenteisiin ja olio-ohjelmoinnin osalta syvennetään ymmärrystä periytymismekanismin ja geneerisyyden toiminnasta. Deklaratiivinen ohjelmoinnin osalta keskitytään erityisesti funktionaaliseen ohjelmointiin ja sen teoreettiseen taustaan (mm. lambda-kalkyyliin) sekä logiikkaohjelmointiin.