Курс — начальное введение в область языков программирования, компиляторов и других языковых инструментов. На нем будут сформулированы некоторые основные понятия и подходы в данной области, такие, как операционная семантика языков программирования, промежуточное представление программ, интерпретация, преобразования программ и т. д., и показано, как эти понятия и подходы решают важные и интересные практические задачи. В процессе выполнения заданий к концу курса вы реализуете полноценный компилятор в машинный код для простого, но вполне функционального языка императивного программирования, содержащего выражения, присваивания, конструкции управления, функции и динамические структуры данных. В качестве основного инструмента в рамках курса использована среда программирования OCaml.