template-browser-not-supported

Máster Universitario en Ingeniería Web (En Extinción)

Estudia

Atrás Atrás

Lenguajes y Plataformas de Programación

Código asignatura
MINGEWEB-2-011
Curso
Segundo
Temporalidad
Primer Semestre
Carácter
Optativa
Créditos
5.5
Itinerarios
  • Investigador
Pertenece al itinerario Bilingüe
No
Actividades
  • Clases Expositivas (16 Horas)
  • Prácticas de Aula/Semina (10 Horas)
  • Prácticas de Laboratorio (15 Horas)
Guía docente

El escenario de desarrollo de aplicaciones Web es uno de los primeros casos prácticos en los que se ha hecho uso de tecnologías avanzadas de lenguajes de programación, en concreto lenguajes dinámicos y frameworks ágiles de desarrollo Web. Esta asignatura está enfocada al conocimiento e investigación de las tendencias en los lenguajes y plataformas de programación, enfatizando aquellas relacionadas con la ingeniería Web. También se requiere que el alumno obtenga la competencia de identificar todos los elementos propios de un trabajo de investigación completo, haciendo una presentación oral de un trabajo de investigación. Adicionalmente, se describen y evalúan las pautas generales en la redacción de un artículo de investigación.

Ésta es una asignatura obligatoria de la especialidad de investigación del Máster en Ingeniería Web, que se imparte el primer semestre del segundo curso. Cuenta con 4,5 créditos ECTS, que suponen un total de 137,5 horas de trabajo: 41 horas presenciales y 96,5 horas no presenciales. Se impartirán 16 horas de clases expositivas, 10 horas de seminarios y 15 horas de prácticas de laboratorio.

Dentro de las competencias a adquirir relacionadas con las tendencias de los lenguajes y plataformas de programación, es una continuación de las asignaturas Programación Orientada a Objetos y Lenguajes, Estándares en la Web y Análisis y Diseño Orientado a Objetos. Sirve como complemento a asignaturas relacionadas con la investigación como Arquitectura de Información en la Web, Diseño y Construcción de MDA y Arquitectura y Desarrollo de Sistemas E-Learning.

Los requisitos para cursar esta asignatura son:

  • Dominio del lenguaje de programación Java
  • Experiencia en la utilización de patrones de diseño
  • Conocimiento de la plataforma .Net y C#
  • Conocimientos básicos de lenguajes dinámicos
  • Conocimientos del diseño e implementación de lenguajes de programación

En relación a las asignaturas propias del Máster en Ingeniería Web, el alumno deberá haber cursado y superado las siguientes asignaturas del mismo:

  • Programación Orientada a Objetos
  • Lenguajes y Estándares en la Web
  • Análisis y Diseño Orientado a Objetos

Al finalizar la asignatura, el alumno deberá poseer las siguientes capacidades, destrezas y competencias:

Competencias Generales:

  • O4: Capacidad para crear modelos matemáticos y desarrollar algoritmos de cálculo y simulación en centros tecnológicos y de ingeniería de empresa, particularmente en tareas de investigación, desarrollo e innovación en todos los ámbitos relacionados con la Ingeniería en Informática.
  • O6: Capacidad para dirigir a nivel general y técnico proyectos de investigación, desarrollo e innovación, en empresas y centros tecnológicos, en el ámbito de la Ingeniería Informática.

Competencias Específicas de la Titulación:

  • IW01: Competencia para la selección de estándares y lenguajes que mejor se adecuen a cada proyecto informático.
  • ESP02: Competencia para la investigación, transferencia y aplicación de nuevos modelos, arquitecturas, metodologías, paradigmas o herramientas relacionados con la web.
  • DG3: Capacidad para la dirección de proyectos de investigación, desarrollo e innovación, en empresas y centros tecnológicos, con garantía de la seguridad para las personas y bienes, la calidad final de los productos y su homologación.
  • TI09: Capacidad para aplicar métodos matemáticos, estadísticos y de inteligencia artificial para modelar, diseñar y desarrollar aplicaciones, servicios, sistemas inteligentes y sistemas basados en el conocimiento.

Resultados de aprendizaje:

ID

Resultado de aprendizaje

Competencias con las que se relaciona

RA126

Adquirir el hábito de lectura y análisis de artículos y trabajos de investigación, identificando cada uno de sus elementos constituyentes.

DG3.

RA127

Formular hipótesis, experimentar, evaluar y discutir los resultados de la medición de ciertas propiedades de un sistema computacional, comparándolo con sistemas relacionados mediante el diseño de una metodología apropiada.

O4, O6.

RA128

Presentar, de forma oral y escrita, los distintos elementos de los que consta un trabajo de investigación completo.

O4, 06.

RA129

Identificar los distintos intereses (concerns) de un sistema software, resolviendo problemas reales mediante el desarrollo de software orientado a aspectos y la reflexión computacional, evaluando sus ventajas e inconvenientes.

IW01, ESP02.

RA130

Identificar, diseñar e implementar los elementos propios la arquitectura de un procesador de lenguaje moderno, así como de una plataforma virtual de ejecución de aplicaciones.

TI09, IW01, ESP02.

Tema 1. Elementos de un trabajo de investigación

  • Introducción
  • Descripción de los elementos
  • Caso práctico
  • Proposición de trabajos

Tema 2. Técnicas avanzadas de implementación de lenguajes

  • Introducción
  • Estructura de un Intérprete
  • Metaprogramación
  • Técnicas de implementación
  • Optimización de plataformas
  • Optimización de lenguajes
  • Optimizaciones híbridas

Tema 3. Desarrollo de software orientado a aspectos

  • Introducción
  • Idea general de la separación de aspectos
  • Lenguajes de POA
  • El lenguaje de POA AspectJ
  • Aplicaciones básicas de AspectJ
  • Ejemplos prácticos

Tema 4. El método científico

  • Introducción al método científico
  • Análisis de datos
  • Metodologías científicas
  • Visualización de datos
  • Tablas
  • Gráficos
  • Representación de mensajes veraces de forma gráfica

Tema 5. Caso Práctico: Ejemplos de Presentación de Trabajos de Investigación.

  • Mejora del Rendimiento de Reflexión Estructural mediante Técnicas de Compilación JIT
  • Separación Dinámica de Aspectos independiente del Lenguaje y Plataforma mediante el uso de Reflexión Computacional

Tema 6. Presentación de Trabajos de Investigación.

  • Presentación oral de trabajos de investigación
  • Corrección, retroalimentación, discusión y debate de posibles mejoras

Tema 7. Redacción de un Artículo de Investigación.

  • Elementos de un artículo de investigación
  • Orden común de los elementos
  • Descripción de los elementos propios de un artículo
  • Diferencia con las presentaciones orales
  • Comprobaciones antes de enviar el artículo
  • Identificación de errores comunes

Tema 8. Indicadores bibliométricos

  • Publicación de resultados
  • Tipos de publicaciones
  • Rankings de publicaciones
  • Rankings de congresos
  • Rankings de revistas
  • Evaluación de investigadores
  • Ciencia abierta

A continuación se detalla una tabla describiendo cómo las distintas competencias están relacionadas con el contenido de la asignatura:

Temas

Competencias a adquirir

Tema 1

O4, ESP02, DG3, RA128

Tema 2

IW01

Tema 3

IW01, RA129

Tema 4

O4, IW01, TI09, RA126, RA128

Tema 5

ESP02, DG3, RA128, RA129

Tema 6

DG3, RA126, RA128.

Tema 7

O6, ESP02, DG3, TI09

Tema 8RA128

El desarrollo de las clases, será de 3 horas con profesor por día. El resto de trabajo será autónomo por parte del alumno, realizando principalmente

  • Lectura de artículos y documentos de investigación
  • Organización y preparación de un trabajo de investigación
  • Presentación del trabajo de investigación de forma oral y escrita a modo de artículo
  • Realización de pequeños trabajos prácticos para facilitar la adquisición de competencias y destrezas

La parte teórica será expuesta mediante método dialogado, teniendo en cuenta la participación del alumno. La parte práctica será llevada a cabo estableciendo una puesta en común del problema, utilizando un aprendizaje por descubrimiento para su resolución. El trabajo principal de la evaluación será expuesto de modo oral y escrito a modo de artículo.

Lo siguiente es un resumen de horas en función del método utilizado:

MODALIDADES

Horas

%

Totales

Presencial

Clases Expositivas

16

11,6%

41

Práctica de aula / Seminarios / Talleres

10

7,3%

Prácticas de laboratorio / campo / aula de informática / aula de idiomas

15

10,9%

Prácticas clínicas hospitalarias

Tutorías grupales

Prácticas Externas

Sesiones de evaluación

No presencial

Trabajo en Grupo

96,5

Trabajo Individual

95,5

70,2%

Total

137,5

100%

137,5

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir actividades de docencia no presencial. En dicho caso, se informará al estudiantado de los cambios efectuados.

Convocatoria ordinaria

En la convocatoria ordinaria se debe asistir al 80% de las clases de la asignatura y se valorará la participación y la realización de los ejercicios propuestos en clase. En caso contrario el estudiante será calificado como No Presentado.

La asignatura requerirá la evaluación de

-      Anotación de un artículo indicando las partes de las que debe constar un trabajo de investigación completo (competencia RA126)

-      La presentación oral de un trabajo de investigación con todas las partes de las que debe constar un trabajo de investigación completo (competencia RA128)

-      El desarrollo de programas utilizado el paradigma de orientación a aspectos que podría ser necesario defender ante un profesor (competencia RA129)

-      La escritura de un artículo de investigación, siguiendo las pautas de calidad y organización indicadas en el curso (competencias RA126, RA127, RA128)

-      Trabajos opcionales adicionales realizados por el alumno (competencias RA128, RA129)

Se realizarán las pruebas indicadas, teniéndose en cuenta la resolución de los trabajos y la calidad de los mismos en el tiempo estimado para ello. En la convocatoria ordinaria, se valorará la participación y asistencia a clase.

La ponderación de los trabajos será: 10% la anotación del artículo, 10% el trabajo de separación de aspectos, 40% la presentación oral del trabajo de investigación y 40% la escritura del artículo. El alumno deberá tener al menos una puntuación de 5 puntos sobre 10 en cada una de estas evaluaciones para poder aprobar. Los trabajos opcionales presentados se utilizarán para aumentar la nota del alumno, siempre que se superen 7 puntos sobre 10, pudiendo subir hasta 2 puntos sobre 10.

En caso de no superarse alguna de las condiciones requeridas para aprobar y haberse presentado a pruebas de evaluación ponderadas por al menos el 50% del peso total, la nota final será de Suspenso. En dicho caso, si además la nota numérica resultante fuese superior a 4 puntos, la nota numérica final de la evaluación será de 4 puntos.

Convocatoria extraordinaria

Se procederá con la misma ponderación que en la convocatoria ordinaria. Para aquéllas de las cuatro partes que el alumno haya superado (5 puntos sobre 10) en la convocatoria ordinaria, éste no deberá realizar la prueba si no lo estima oportuno.

En caso de no superarse alguna de las condiciones requeridas para aprobar y haberse presentado a pruebas de evaluación ponderadas por al menos el 50% del peso total, la nota final será de Suspenso. En dicho caso, si además la nota numérica resultante fuese superior a 4 puntos, la nota numérica final de la evaluación será de 4 puntos.

Evaluación diferenciada

Si al alumno se le acepta este tipo de evaluación, no será necesario asistir al 80% de las clases. El resto de la evaluación se mantiene igual.

De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir métodos de evaluación no presencial en cualquier convocatoria. En dicho caso, se informará al estudiantado de los cambios efectuados.

Todos los contenidos, material y la información adicional se ubicarán en la asignatura del Campus virtual de la Universidad de Oviedo. Además, la siguiente bibliografía será de interés para el seguimiento de la asignatura.

Recursos Bibliográficos

Procesamiento de Lenguajes

  • Modern Compiler Implementation in Java. Andrew W. Appel and Jens Palsberg. Cambridge University Press; 2 edition. 2000.
  • Programming Language Processors in Java: Compilers and Interpreters. David Watt, Deryck Brown. Prentice Hall. 2000.
  • Construcción de Compiladores. Principios y Práctica. Kenneth C. Louden. Thomson. 1997.
  • lex & yacc. Doug Brown, John Levine, Tony Mason. O’Reilly. 1995.
  • Conceptos Básicos de Procesadores de Lenguajes. Juan Manuel Cueva. Servitec. 1998.
  • Análisis Semántico en Procesadores de Lenguaje. Francisco Ortín, J.M. Cueva, M.C. Luengo, A.A. Juan, J.E. Labra, R. Izquierdo. Servitec. 2004.

Máquinas Abstractas y Virtuales

  • Abstract Machines for Programming Language Implementation. S. Diehl, P. Hartel, P. Sestoft. Elsevier Future Generation Computer Systems 16(7). 2000.
  • Intérpretes y Diseño de Lenguajes de Programación. José Emilio Labra, J.M. Cueva, M.C. Luengo, A.A. Juan, J.E. Labra, R. Izquierdo, F. Ortín. Servitec. 2004.
  • The Java Virtual Machine Specification. Tim Lindholm, Frank Yellin. Prentice Hall (2nd Edition). 1999.
  • Mejora del Rendimiento de Reflexión Estructural mediante Técnicas de Compilación JIT. José Manuel Redondo López. Tesis Doctoral. Universidad de Oviedo. 2007.
  • Shared Source CLI Essentials. David Stutz, Ted Neward, Geoff Shilling. O'Reilly. 2003.
  • Smalltalk-80: The Language and its Implementation. Adele Goldberg, David Robson. Longman Higher Education. 1983.

Compilación JIT

  • A Brief Story on Just-In-Time. John Aycock. ACM Computing Surveys, Volume 35 ,  Issue 2. 2003.
  • Continouous Compilation for Software Development and Mobile Computing. Michael P. Plezbert. MsC Thesis. Sever Institute of Washington University. 1996.
  • Efficient Implementation of the Smalltalk-80 System. L. Peter Deutsch, Allan M. Schiffman. 11th Annual Symposium on Principles of Programming Languages. 1984.

Desarrollo de Software Orientado a Aspectos

  • Separation of Concerns. W. Hursch, C. Lopes. College of Computer Science, Northeastern University, Boston. 1997.
  • I want my AOP! Ramnivas Laddad. JavaWorld. 2002.
  • Separación Dinámica de Aspectos independiente del Lenguaje y Plataforma mediante el uso de Reflexión Computacional. Luis Antonio Vinuesa Martínez. Tesis Doctoral. Universidad de Oviedo. 2007.
  • AspectJ in Action: Practical Aspect-Oriented Programming. Ramnivas Laddad. Manning Publications. 2003.

Reflexión Computacional

  • Sistema Computacional de Programación Flexible Diseñado sobre una Máquina Abstracta Reflectiva no Restrictiva. Francisco Ortín. Tesis Doctoral. Universidad de Oviedo. 2001.
  • Meta-Level Architectures and Reflection. Proceedings  of the Second International Conference, Reflection'99 Saint-Malo, 1999. Lecture Notes in Computer Science 1616.
  • Designing an Adaptable Heterogeneous Abstract Machine by means of Reflection. Francisco Ortín Soler, Diego Díez Redondo. Information and Software Technology, Volume 47, Issue 2. 2005.
  • Non-Restrictive Computational Reflection. Francisco Ortín Soler, Juan Manuel Cueva Lovelle. Computer Standards and Interfaces, Volume 25, Issue 3. 2003.

Lenguajes y Plataformas dotadas de Reflexión

  • Learning Python. Mark Lutz, David Ascher. O'Reilly Media, 3rd  Edition. 2007.
  • Programming Ruby: The Pragmatic Programmers' Guide, 2nd Edition. Dave Thomas, Chad Fowler, Andy Hunt. Pragmatic Bookshelf,  2004.
  • Java Reflection in Action. Ira Forman, Nate Forman. Manning Publicaitons Co. 2004.
  • Visual Basic .Net Reflection Handbook. J. Hart, B. Mathew, S.F. Gilani, M.J. Gillespie, A. Olsen. Wrox Press. 2002.

Recursos Software

  • Eclipse
  • JSDK
  • ANTLR, JFlex y BYacc
  • AspectJ
  • Python
  • Ruby
  • Visual Studio