NAME: Programming Languages and Paradigms (LPP)

(versión española )

DEPARTAMENT: INFORMATION SYSTEMS AND COMPUTATION

Subject type: Mandatory

ECTS credits: 5

Tutor(s): María Alpuente

Year: 3 Semester: B

Aims:

The course provides an overview of the foundations of
programming languages and paradigms. A wide variety of logics
(such as Horn clause logic and equational logic) and formalisms
(such as operational semantics, denotational semantics, fixpoint theory,
and abstract data types) have been been used to help understand various
aspects of modern programming languages. In this course, the instructor
presents a series of lectures to introduce such logics and formalisms with
the aim of using them to study and analyze programming languages in a
wide range of programming paradigms, including functional, logic, visual, and
object features. Students are expected to undertake programming projects which will involve understanding and implementing applications in different programming styles.

We encourage all students with an interest in programming languages, to participate.

Syllabus:

Theory

1. Introduction. History of Programming Languages, Formal Description of PLs, Program equivalence

2. Functional Programming

Program syntax, algebraic datatypes, type inference, evaluation strategies, higher order

Operational Semantics, Denotational Semantics

Lambda Calculus and Term Rewriting

The Programming Language Haskell

3. Logic Programming

Horn Clause Logic: Syntax and Semantics

Logic Programming: Operational Semantics, Declarative Semantics, Fixpoint Semantics

The Programming Language Prolog

Efficient Programming in Prolog

 

Practice

1. Development of guided sessions in the laboratory using Sicstus Prolog/Win Prolog and GHC Haskell/Helium.

Recommended reading:

  • Apt, K.R. From Logic Programming to Prolog, Prentice Hall, 1996
  • Bird, R. Introducción a la Programación Funcional, Prentice Hall, 2000
  • Julián, P.; Alpuente, M. Programación Lógica, Teoría y Práctica. Pearson, 2007.
  • Pratt, T.W.; Zelkowitz, M.V. Lenguajes de programación: diseño e implementación, Prentice-Hall, 1998
  • Scott, M.L. Programming Language Pragmatics, Morgan Kaufmann Publishers, 2000

Recommended prerequisites:

Remarks: Evaluation: Theory (70%) + Laboratory (30%)