UA
   LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN    Año académico       Versión PDF.  Versión PDF para convalidación.
Código9189Descripción
Crdts. Teor.3PROGRAMACION PROCEDIMENTAL.PROGRAMACION FUNCIONAL.PROGRAMACION DECLARATIVA.PROGRAMACION ORIENTADA A OBJETOS.LENGUAJES DE SCRIPT
Crdts. Pract.3
A efectos de intercambios en programas de movilidad, la carga de esta asignatura equivale a 7,5 ECTS.


Departamentos y Áreas
DepartamentosÁreaCrdts. Teor.Crdts. Pract.Dpto. Respon.Respon. Acta
CIENCIA DE LA COMPUTACION E INTELIGENCIA ARTIFICIALCIENCIA DE LA COMPUTACION E INTELIGENCIA ARTIFICIAL33


Estudios en los que se imparte
Ingeniería en Informática - plan 2001


Pre-requisitos
FUNDAMENTOS DE PROGRAMACIÓN I


Incompatibilidades de matrícula por contenidos equivalentes
Esta asignatura es incompatible, por tener contenidos equivalentes, con las asignaturas siguientes:
CódigoAsignatura
9378LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN
9301LENGUAJES Y PARADIGMAS DE PROGRAMACIÓN


Matriculados (2010-11)
Grupo (*)Número
1 25
2 32
3 3
TOTAL 60
(*) 1: GRUPO 1 - CAS
(*) 2: GRUPO 2 - CAS
(*) 3: GRUPO 3 Valenciano - VAL


Ofertada como libre elección (2010-11)
Número máximo de alumnos: Sin límite
Pincha aquí para ver a qué estudios se oferta
Consulta Gráfica de Horario
A efectos de intercambios en programas de movilidad, la carga de esta asignatura equivale aPincha aquí


Horario (2010-11)
ModoGrupo (*)Día inicioDía finDíaHora inicioHora finAula
CLASE TEÓRICA 1 03/02/2011 27/05/2011 M 10:00 11:00 A2/D23
  1 03/02/2011 27/05/2011 X 10:00 11:00 A2/D23
  2 03/02/2011 27/05/2011 M 15:00 16:00 A2/D23
  2 03/02/2011 27/05/2011 X 16:00 17:00 A2/D23
  3 03/02/2011 27/05/2011 M 11:00 12:00 A2/D21
  3 03/02/2011 27/05/2011 X 11:00 12:00 A2/D21
PRÁCTICAS CON ORDENADOR 1 03/02/2011 27/05/2011 L 12:30 14:30 0016P1006
  2 03/02/2011 27/05/2011 M 16:00 18:00 0016P1003
  3 03/02/2011 27/05/2011 X 12:30 14:30 0016P1008
  4 03/02/2011 27/05/2011 X 14:30 16:30 0016P1008
(*) CLASE TEÓRICA
1: GRUPO 1 - CAS
2: GRUPO 2 - CAS
3: GRUPO 3 Valenciano - VAL
(*) PRÁCTICAS CON ORDENADOR
1: GRUPO PRACTICAS LPP - CAS
2: GRUPO PRACTICAS LPP - CAS
3: GRUPO PRACTICAS LPP - CAS
4: GRUPO PRACTICAS LPP - CAS


Grupos de matricula (2010-11)
Grupo (*)CuatrimestreTurnoIdiomaDistribución (letra nif)
1 2do. M CAS desde A hasta M
2 2do. T CAS desde N hasta Z
3 2do. M VAL desde - hasta -
(*) 1: GRUPO 1 - CAS
(*) 2: GRUPO 2 - CAS
(*) 3: GRUPO 3 Valenciano - VAL


Objetivos de las asignatura / competencias (2010-11)
En la asignatura se razona sobre el concepto de programación desde un punto de vista práctico. ¿Qué elementos son comunes a los lenguajes de programación? ¿Qué características tienen? ¿Cuáles son los elementos esenciales y los accesorios? ¿Cómo diseñar un buen lenguaje de programación? Veremos que el elemento central de la programación es la idea de construcción de abstracciones. Un lenguaje de programación proporciona mecanismos de abstracción que nos permiten expresar una solución informática en un lenguaje cercano al dominio que estamos tratando. En el curso utilizaremos los lenguajes de programación Scheme y Scala. Scheme es una variante muy extendida de LISP, lenguaje paradigma de la programación funcional. La utilización de un lenguaje tan sencillo nos permite reflexionar sobre cuáles son los elementos esenciales de los lenguajes de programación y su semántica. Scala es un lenguaje moderno que se ejecuta en la plataforma Java y que se está reconocido como uno de los más importantes lenguajes multi-paradigma, integrando de forma coherente conceptos de programación funcional y programación orientado a objetos.

En el curso trataremos cinco grandes bloques

- Lenguajes de programación: Conceptos generales comunes al diseño y construcción de lenguajes de programación. Algunos contenidos: historia y paradigmas de lenguajes de programación, programación declarativa vs. programación procedural, tipos de datos.
- Programación funcional: Estudio en profundidad del paradigma de programación funcional. Algunos contenidos: modelo computacional de sustitución, forma especial lambda, recursión, programacion funcional en Scheme, abstracción, estructuras de datos recursivas como listas y árboles.
- Programación imperativa: Estudio de las características de la programación imperativa comparada con la programación funcional. Algunos contenidos: modelo de computación basado en entornos, asignación de variables, estado local.
- Programación orientada a objetos: Repaso de los elementos esenciales del paradigma de programación orientada a objeto, poniéndolos en el contexto de lo que aportan al paradigma clásico procedural. Características avanzadas de POO en un lenguaje de reciente diseño como Scala.
- Integración de paradigmas: Lenguajes que integran el paradigma funcional y el procedural. ¿Por qué es interesante integrarlos? Ventajas de la programación funcional para la concurrencia. Scala como un ejemplo de lenguaje de integración de paradigmas.

Competencias

-Conocer y diferenciar las características de los distintos paradigmas de programación (programación funcional, procedural y orientada a objetos) e identificarlas en lenguajes de programación concretos.
-Conocer los elementos que componen los lenguajes de programación (estructuras de control, procedimientos, tipos de datos) y distintas implementaciones de estos elementos en distintos lenguajes.
-Diferenciar entre tiempo de ejecución y tiempo de compilación en distintos ámbitos: detección de errores o definición, creación o ámbito de vida de variables.
-Conocer modelos de computación específicos que expliquen la semántica de los lenguajes de programación. En concreto: modelo de sustitución para la programación funcional y modelo de entornos para explicar el ámbito y los valores de los variables en la programación procedural.
-Utilizar la abstracción y la recursión para diseñar correctamente procedimientos y estructuras de datos (listas y árboles).
-Ser capaz de diseñar, implementar y corregir programas funcionales, en concreto utilizando el lenguaje de programación Scheme.
-Ser capaz de implementar programas sencillos en Scala, en los que se utilicen las características multi-paradigma del lenguaje.
-Comparar el paradigma orientado a objetos con el paradigma procedural clásico, reconociendo las ventajas que aporta en cuanto a abstracción, reutilización y modificación de código.
-Conocer los principios básicos del paradigma de programación lógica


Contenidos teóricos y prácticos (2010-11)

Tema 1: Lenguajes y paradigmas de programación
Tema 2: Características de la Programación Funcional
Tema 3: Recursión
Tema 4: Programación funcional avanzada en Scheme
Tema 5: Construyendo abstracciones en programación funcional
Tema 6: Estructuras de datos recursivas: listas y árboles
Tema 7: Programación imperativa: ámbito de variables y estado local
Tema 8: Tipos de datos
Tema 9: Control del flujo: selección, iteración, y continuaciones
Tema 10: Subrutinas y abstracción del control
Tema 11: Programación Orientada a Objetos
Tema 12: Lenguajes multi-paradigma: Scala
Tema 13: Programación Lógica


Más información
http://www.dccia.ua.es/dccia/inf/asignaturas/LPP
Profesor/a responsable
Gallardo López , Domingo


Metodología docente (2010-11)
Clases teóricas y prácticas
La asignatura se imparte en 30 sesiones teóricas de 50 minutos. Se imparten dos sesiones de teoría a la semana.

En las sesiones teóricas se presentan los conceptos y técnicas de la asignatura, utilizando abundantes ejemplos y demostraciones prácticas (programas en los lenguajes de programación Scheme y Scala).


Tipo de actividades: teóricas y prácticas
Laboratorios
En la asignatura se realizan 15 sesiones prácticas de 2 horas de duración.

A lo largo del cuatrimestre, los estudiantes resuelven 10 hojas de ejercicios utilizando las técnicas explicadas en teoría y usando los lenguajes de programación Scheme y Scala. Cada hoja de ejercicios consta de varios pequeños problemas que deben resolverse e implementarse.

Durante el desarrollo de estas sesiones prácticas el profesor revisa las hojas de ejercicios de la semana anterior y resuelve dudas sobre los ejercicios planteados en esa semana.


Profesores (2010-11)
Grupo Profesor/a
TEORIA COMPARTIDA DE 9189, 9301 Y 93781Gallardo López, Domingo
2Pomares Puig, Cristina
3Gallardo López, Domingo
PRÁCTICAS CON ORDENADOR DE 91891Gallardo López, Domingo
Pomares Puig, Cristina
2Pomares Puig, Cristina
3Pomares Puig, Cristina
4Gallardo López, Domingo
Enlaces relacionados
http://www.dccia.ua.es/dccia/inf/asignaturas/LPP


Bibliografía

A brief history of computing
Autor(es):O`REGAN, Gerard
Edición:Dades no disponibles.
ISBN:978-1848000834
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Coders at Work
Autor(es):SEIBEL, Peter
Edición:Dades no disponibles.
ISBN:978-1430219484
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Concepts of programming languages
Autor(es):SEBESTA, Robert W.
Edición:Dades no disponibles.
ISBN:978-0321493620
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Concepts, techniques, and models of computer programming
Autor(es):Peter Van Roy, Seif Haridi
Edición:Cambridge, Mass : MIT Press, 2004.
ISBN:0-262-22069-5
Recomendado por:POMARES PUIG, Mª CRISTINA
[ Acceso al catálogo de la biblioteca universitaria ]

Essentials of Programming Languages
Autor(es):FRIEDMANN, Daniel
Edición:Cambridge : MIT Press, 2008.
ISBN:978-0262062794
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Lenguajes de programación: diseño e implementación
Autor(es):Pratt, Terrence W. , Marvin V. Zelkowitz
Edición:México [etc.] : Prentice Hall Hispanoamericana, 1998.
ISBN:970-17-0046-5
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ] [ Acceso a las ediciones anteriores ]

Masterminds of Programming: conversations with the creators of major programming languages
Autor(es):BIANCUZZI, Federico ; WARDEN, Shane
Edición:Dades no disponibles.
ISBN: 9780596515171
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Modern programming languages : a practical introduction
Autor(es):WEBBER, Adam Brooks
Edición:Wilsonville : Franklin, Beedle & Associates, 2003.
ISBN:1-887902-76-7
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

PRACTICAL Programming: an introduction to computer science using Python
Autor(es):Campbell, Jennifer (aut.)
Edición:Dades no disponibles.
ISBN: 978-1-934-35627-2
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Programming language concepts and paradigms
Autor(es):David A. Watt ; with contributions by William Findlay, John Hughes
Edición:New York [etc.] : Prentice Hall, cop. 1990.
ISBN:0-13-728866-2
Recomendado por:POMARES PUIG, Mª CRISTINA
[ Acceso al catálogo de la biblioteca universitaria ]

Programming language pragmatics
Autor(es):Scott, Michael Lee
Edición:Amsterdam : Morgan Kaufmann, 2009.
ISBN:978-0-12-633951-2
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso a las ediciones anteriores ] [ Enlace al recurso bibliográfico ]

Programming languages : principles and paradigms
Autor(es):TUCKER, Allen ; NOONAN, Robert
Edición:Boston [etc.] : McGraw-Hill, cop. 2002.
ISBN:0-07-238111-6
Recomendado por:POMARES PUIG, Mª CRISTINA
[ Acceso al catálogo de la biblioteca universitaria ]

Programming Ruby: the pragmatic programmers` guide
Autor(es):THOMAS, Dave ; FOWLER, Chad ; HUNT, Andy
Edición:Dades no disponibles.
ISBN:978-0974514055
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Python programming: an introduction to computer science
Autor(es):ZELLE, John M.
Edición:Dades no disponibles.
ISBN:978-1887902991
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Simply scheme : introducing computer science
Autor(es):Harvey, Brian ; Wright, Matthew
Edición:Cambridge : The MIT Press, 2001.
ISBN:0-262-08281-0
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

Structure and interpretation of computer programs
Autor(es):Abelson, Harold
Edición:Cambridge : MIT Pres, 1996.
Notas:En catálogo: 5ª impr. (2000)
ISBN:0-262-51087-1
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ] [ Enlace al recurso bibliográfico ]

The little Schemer
Autor(es):FRIEDMAN, Daniel P. ; FELLEISEN, Matthias
Edición:Cambridge, Massachusetts : MIT Press, 2001.
ISBN:0-262-56099-2
Recomendado por:POMARES PUIG, Mª CRISTINA
[ Acceso al catálogo de la biblioteca universitaria ]

The reasoner schemer
Autor(es):FRIEDMAN, Daniel P. ; BYRD, William E. ; KYSELYOV, Oleg
Edición:Cambridge : MIT Press, 2005.
ISBN:0-262-56214-6
Recomendado por:POMARES PUIG, Mª CRISTINA (*1)
[ Acceso al catálogo de la biblioteca universitaria ] [ Enlace al recurso bibliográfico ]

The Ruby programming language
Autor(es):FLANAGAN, David ; MATSUMOTO, Yukihiro
Edición:Dades no disponibles.
ISBN:978-0596516178
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]

The seasoned Schemer
Autor(es):FRIEDMAN, Daniel P. ; FELLEISEN, Matthias
Edición:Cambridge, Massachusetts : MIT Press, 2000.
ISBN:0-262-56100-X
Recomendado por:POMARES PUIG, Mª CRISTINA
[ Acceso al catálogo de la biblioteca universitaria ]

Types and programming languages
Autor(es):PIERCE, Benjamin C.
Edición:Cambridge : The MIT Press, 2002.
ISBN:0-262-16209-1
Recomendado por:GALLARDO LOPEZ, DOMINGO (*1)
[ Acceso al catálogo de la biblioteca universitaria ]
(*1) Este profesor ha recomendado el recurso bibliográfico a todos los alumnos de la asignatura.
Fechas de exámenes oficiales (2010-11)
ConvocatoriaGrupo (*)fechaHora inicioHora finAula(s) asignada(s)Observ:
Exámenes extraordinarios de finalización de estudios (diciembre) -1 05/11/2010 -
Periodo ordinario para asignaturas de segundo semestre y anuales -1 30/05/2011 15:00 18:00 A2/A02 -
Periodo extraordinario de julio -1 08/07/2011 11:30 14:30 A2/D11 -
(*) 1: GRUPO 1 - CAS
(*) 2: GRUPO 2 - CAS
(*) 3: GRUPO 3 Valenciano - VAL


Instrumentos y criterios de evaluación (2010-11)
Evaluación continua, examen final
Durante la asignatura el profesor revisa las prácticas entregadas y se realizan dos exámenes parciales en el laboratorio con ordenadores y un examen final en papel.

La nota final se calcula ponderando las entregas de prácticas, exámenes parciales y el examen final:

Entrega de prácticas (10 prácticas): 10%
Examen parcial 1 (Temas 1-6): 30%
Examen parcial 2 (Temas 7-13): 30%
Examen final: 30%