Programming Languages
Course given by DCC-UFMG
- Plano de ensino
- Instructor:
- Haniel Barbosa, Office 4323, DCC, hbarbosa@dcc.ufmg.br
- TA:
- Isadora de Oliveira, oliveiraisadora119@gmail.com
Outline
- Programming Languages
- Topic 1: SML introduction
- Topic 2: Syntax and semantics of programming languages
- Topic 3: Implementing programming languages
- Topic 4: Logic programming
- Project
- Bibliography
An overview of programming language concepts in three parts.
The purpose of this course is to study fundamentals concepts in programming languages and major tools and techniques to implement them. This includes a number of programming paradigms, namely: functional, imperative/object-oriented, and logic, as well as general aspects such as syntax specification and informal semantic models; binding and scoping; types and type systems; control structures; data abstraction; procedural abstraction and parameter passing; higher-order functions; and memory management. The course has a strong implementation component, with three languages being covered: SML, Python, and Prolog. No prior familiarity with these languages is assumed in this course. Learning them will have the secondary effect of exposing students to the different programming paradigms.
The different course topics are viewed below.
Topic 1: SML introduction
An introduction to functional programming and the Standard ML (SML) programming language.
Goals
- Getting acquainted with functional programming.
- Learning to write simple programs in SML.
Topic 2: Syntax and semantics of programming languages
PL concepts such as types and polymorphism, higher-order functions, scope and binders, as well as formal notions of syntax and semantics.
Topic 3: Implementing programming languages
An introduction to general concepts in implementing programming languages, viewed from the point of view of the imperative, functional and object-oriented paradigms.
Topic 4: Logic programming
An introduction to logic programming and the Prolog programming language.
Project
In the Project the students will exercise their knowledge on programming language concepts to define an interpreter for an ML-style toy language.
Bibliography
Modern Programming Languages: A Practical Introduction
Adam Webber.Additional reading materials will be made available on the course web site as needed.