Saltar al contingut Menu
  • Home
  • Information
  • Contact
  • Map

Programming Languages (LP)

Credits Dept. Type Requirements
7.5 (6.0 ECTS) CS
  • Elective for DIE
PRED - Prerequisite for DIE


Person in charge:  (-)

General goals

The aims of this subject are the following:
-  For students to absorb the concepts needed in order to analyse a programming language, according to the underlying model (different classes or paradigms), its fundamental components (types system, execution model, data and process abstraction), its appropriateness for the type of application, its scope, and its development methodology.
-  For students to gain an understanding of the basic theory underlying programming languages and their formal definition, especially the foundations of the functional paradigm.
-  For students to acquire basic programming experience in functional languages such as Miranda or Haskell.

Specific goals


(no available informacion)


(no available informacion)


(no available informacion)


Estimated time (hours):

T P L Alt Ext. L Stu A. time
Theory Problems Laboratory Other activities External Laboratory Study Additional time

1. Classes of languages
T      P      L      Alt    Ext. L Stu    A. time Total 
3,0 2,0 0 0 0 3,0 0 8,0
Historic development of Programming Languages. Characterisation of the main programming paradigms.

The execution model in each case. Desirable characteristics of a programming language. Design criteria.

2. Functional languages
T      P      L      Alt    Ext. L Stu    A. time Total 
6,0 13,0 14,0 0 14,0 19,0 0 66,0
Components of a functional programming system. Evolution of the paradigm. Characteristics of current functional languages:

Intensive use of the higher order. "Currying" (Schönfinkel-Frege technique). Equation definition by patterns. Algebraic types and abstract types.

Polymorphism. Deduction of types. Lazy evaluation. Higher order programming techniques in a functional language with lazy evaluation (Miranda or Haskell). Programming with infinite objects. Network solutions for streams. Comprehension-based list definition (generator/filter scheme).

  • Laboratory
    Questions relating to the exercises and practical assignments implemented in a programming language (Miranda or Haskell) are treated as lab exercises. Part of this activity will be carried out in the classroom and part using the computer terminals.

  • Additional laboratory activities:
    Additional hours spent on coding and finishing off exercises and practical assignments.

3. Fundamentals
T      P      L      Alt    Ext. L Stu    A. time Total 
5,0 5,0 0 0 0 15,0 0 25,0
Lambda Calculus. Reduction strategies. Normal and applied order. The problem posed by recursive definitions.

Introduction to Domain Theory. Fixed Point Theorem. Introduction to type theory. Type-based inference systems.

4. Formal definition of Programming Languages
T      P      L      Alt    Ext. L Stu    A. time Total 
5,0 5,0 0 0 0 15,0 0 25,0
Sintactic elements. Concrete and abstract syntax. The various semantic approaches and their application. The denotational approach.

Semantic definition of a minimalist imperative language. The semantic equivalence of programmes. Semantics of other classes of languages.

5. Fundamental components of programming languages
T      P      L      Alt    Ext. L Stu    A. time Total 
9,0 3,0 0 0 0 7,0 0 19,0
- The type system. Evolution of the concept of type. Type definition mechanisms. Algebraic types. Genericity and polymorphism.

Parametric polymorphism and inclusion polymorphism. Sub-types and sub-classes. Forms of inheritance. Hierarchies. Type checking - static typing and dynamic typing.

Type interference

- Sequence control. At the expression level. In instructions. Between programme units. Procedures. Co-routines.

Concurrent processes. Exception management tools. Sequence control of paradigms.

- Data control. Associations between identifiers and objects. Overload. Aliasing.

Static and dynamic resolution of links. Scope and visibility. Data sharing. Parameter-passing methods.

Total per kind T      P      L      Alt    Ext. L Stu    A. time Total 
28,0 28,0 14,0 0 14,0 59,0 0 143,0
Avaluation additional hours 7,0
Total work hours for student 150,0

Docent Methodolgy

There will be theory classes and problems (4 hours a week, on average), and lab classes (1 hour a week, on average).

Lab classes will be spent on exercises dealt with in the classes problem sessions, and a practical piece of work tackled by students who will ideally work in groups of three.

Evaluation Methodgy

There will be two exams and a compulsory practical session, carrying 15% of total marks.

Students attaining a grade of 4 or above will be exempted from the corresponding part of the final exam.

In this case, the final grade will be calculated as the weighted average of the three grades,

in which the part exam will make up 40% of the final grade, and the final exam 45%.

If the grade for the part exam is less than 4, the final exam will include both parts of the course and will carry a weight of 85%.

Basic Bibliography

  • Carlo Ghezzi, Mehdi Jazayeri Programming language concepts, John Wiley and Sons, 1998.
  • Allen B. Tucker, Robert Noonan Lenguajes de programación : principios y paradigmas, McGraw-Hill, 2003.
  • Richard Bird Introducción a la programación funcional con Haskell, Prentice Hall, 2000.
  • Blas Carlos Ruiz Jiménez ... [et al.] Razonando con Haskell : un curso sobre programación funcional, Thomson-Paraninfo, 2004.
  • CLERICI, Silvia Apuntes sobre Programación Funcional, CPET -UPC, .

Complementary Bibliography

  • Terrence W. Pratt, Marvin V. Zelkowitz Programming languages : design and implementation, Prentice-Hall, 2001.
  • Benjamin C. Pierce Types and programming languages, MIT Press, 2002.
  • Lloyd Allison A Practical introduction to denotational semantics, Cambridge University Press, 1986.
  • Kenneth Slonneger, Barry L. Kurtz Formal syntax and semantics of programming languages : a laboratory based approach, Addison-Wesley Pub. Co., 1995.

Web links

(no available informacion)

Previous capacities

Students must have passed the Prap course.


logo FIB © Barcelona school of informatics - Contact - RSS
This website uses cookies to offer you the best experience and service. If you continue browsing, it is understood that you accept our cookies policy.
Classic version Mobile version