Link Search Menu Expand Document

Programming Languages

Course given by DCC-UFMG



Outline

  1. Programming Languages
  2. Topic 1: SML introduction
  3. Topic 2: Syntax and semantics of programming languages
  4. Topic 3: Implementing programming languages
  5. Topic 4: Logic programming
  6. Project
  7. 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

  1. Getting acquainted with functional programming.
  2. 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 course project the students will exercise their knowledge on programming language concepts to define an interpreter for an ML-style toy language.

Bibliography

  1. Modern Programming Languages: A Practical Introduction
    Adam Webber.

  2. Additional reading materials will be made available on the course web site as needed.