1. - Presentació - (4 hores)
1.1. Què és un Llenguatge de Programació
1.2. Possibles Classificacions
1.2.1. Paradigmes
1.2.2. Imperatiu
1.2.3. Funcional
1.2.4. Lògic
1.2.5. Altres
1.3. Història i evolució
1.4. Definició del Llenguatge
1.4.1. Lèxic
1.4.2. Sintàctic
1.4.3. Semàntic
1.5. Traducció per a l'execució
1.5.1. Compilació
1.5.2. Interpretació
2. - Paradigma Funcional - (12 hores)
2.1. Introducció
2.2. Model de Còmput: lambda-càlcul simple no tipat
2.2.1. lambda-termes
2.2.2. substitució
2.2.3. lambda-teoria
2.3. lambda-definibilitat
2.4. lambda-càlcul tipat
2.5. inferència de tipus
2.6. Lisp, ML, Haskell
2.7. Propietats de programes funcionals
3. - Paradigma Lògic - (12 hores)
3.1. Introducció
3.2. Model de Còmput: lògica de primer ordre
3.2.1. Fórmules lògiques
3.2.2. Unificació
3.2.3. Resolució, SLD-resolució
3.3. Prolog
3.4. Resolució de restriccions
3.5. Propietats de programes lògics
4. - Paradigma Imperatiu - (12 hores)
4.1. Introducció
4.2. Model de Còmput: Màquines de Turing/Arquitectura Von Newman
4.3. Estat
4.4. Expressions i instruccions
4.4.1. Tipus d'expressions, notacions
4.4.2. Assignació i control de flux
4.4.3. Abstracció de control
4.4.4. Accions i Funcions
4.4.5. Pas de paràmetres
4.5. Abstracció de dades
4.6. TAD
4.7. OOP
4.8. C, JAVA, ...
4.9. Propietats de programes imperatius
5. Programació Orientada a Objectes
5.1. Tipatge, dispatching, herència,...
5.2. Problemes amb el tipatge
6. - Semàntica – (5 hores)