and probabilistic programming. Various models of programming languages and type systems are discussed. Students learn to apply programming methodology