Última actualización: 15/05/2020


Curso Académico: 2019/2020

Programación de Sistemas
(13494)
Grado en Ingeniería de Comunicaciones Móviles y Espaciales (Plan: 442 - Estudio: 217)


Coordinador/a: FERNANDEZ PANADERO, MARIA CARMEN

Departamento asignado a la asignatura: Departamento de Ingeniería Telemática

Tipo: Obligatoria
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:




Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Programación (1er curso, 1er cuatrimestre)
El objetivo de este curso es que el estudiante profundice en técnicas de programación, incluyendo orientación a objetos avanzada (POO), así como algunas de las estructuras de datos y algoritmos de uso habitual. El lenguaje de programación en que se desarrollará el curso es Java, si bien las habilidades fundamentales adquiridas serán de carácter genérico de modo que puedan ser aplicadas a otros lenguajes de uso habitual. Para conseguir este objetivo los alumnos deberán conseguir los siguientes resultados de aprendizaje que se especifican en relación a los resultados de aprendizaje genéricos de la titulación especificados en la orden CIN 352/2009 (PO: 1.2 y 2.7) y en los criterios ABET para la titulación (PO: a) así como las competencias (CB1, CB2, CG3, CG11 y ECRT 7) 1. Diseño y desarrollo de aplicaciones en el lenguaje de programación Java (CIN: 1.2, 2.7, PO: a) a. Conocimientos. Interpretar, explicar y ejemplificar: i. Los mecanismos de la POO ii. El concepto de recursión iii. Los fundamentos de las estructuras de datos más habituales lineales (ej. listas) y no lineales (ej. árboles) iv. Los distintos algoritmos de trabajo sobre estructuras de datos b. Capacidades: i. Programar aplicaciones orientadas a objetos ii. Representar, diseñar e implementar algoritmos recursivos iii. Implementar algoritmos y usar algunas estructuras de datos importantes (listas enlazadas, pilas, colas, árboles) iv. Decidir qué estructuras de datos se adaptan a determinados problemas, y reutilizar o diseñar algoritmos adecuados para resolver problemas concretos c. Actitudes. Actitud crítica respecto a: i. La idoneidad de distintas estructuras de datos y algoritmos para problemas concretos. ii. El uso de la bibliografía y otros recursos de información para temas relacionados con la materia. 2. Utilizar con destreza las herramientas para el desarrollo de aplicaciones a. Ser capaz de crear, compilar y ejecutar un programa en Java b. Interpretar correctamente y eliminar los mensajes de error y advertencia que muestre el compilador
Descripción de contenidos: Programa
El programa de este curso se divide en cinco módulos: 1. Programación basada en objetos 1.1. Concepto de clase y objeto 1.2. Composición de clases 1.3. Constructores 1.4. Ocultación de la información 1.5. Modificadores de acceso 2. Programación orientada a objetos 2.1. Herencia 2.2. Sobreescritura y sobrecarga 2.3. Casting 2.4. Clases abstractas e interfaces 2.5. Herencia múltiple y polimorfismo. 3. Recursión 3.1. Concepto de recursión 3.2. Tipos de recursión (lineal, no lineal, mútua) 3.3. Recursión vs. Iteración. 3.4. Ejemplos de algoritmos recursivos 4. Estructuras de datos, algoritmos y ejemplos de implementación 4.1. Listas enlazadas y doblemente enlazadas 4.2. Pilas 4.3. Colas (simples, dobles con prioridad) 4.4. Árboles (n-arios, binarios, binarios de búsqueda)
Actividades formativas, metodología a utilizar y régimen de tutorías
La metodología docente de esta asignatura está basada en la integración activa del estudiante en la actividad docente y en la aplicación de los principios de la evaluación continua. La asignatura está dividida en unidades, y cada unidad consiste en sesiones magistrales en aula grande y sesiones de prácticas en grupo pequeño. Toda la información y material necesarios para seguir las unidades están disponibles en la página web de la asignatura. Se valorará positivamente la participación del alumno en las actividades en el aula (preguntas, resolución de problemas en grupos, etc). Asimismo, el alumno también tiene disponible con antelación los enunciados de los ejercicios o programas a resolver durante las clases de prácticas, que se realizarán en parejas. Adicionalmente a las clases presenciales, tanto magistrales como de prácticas, se propone al alumno una serie de actividades para realizar en casa. 1. Sesiones magistrales (teoría, ejercicios y preguntas en el aula). En estas sesiones se presentarán los conocimientos que los alumnos deben adquirir para facilitar su desarrollo los alumnos recibirán las notas de clase y tendrán textos básicos de referencia que les permita completar y profundizar en aquellos temas en los cuales estén más interesados (PO: a) 2. Sesiones de laboratorio (resolución de problemas). En estas clases los alumnos analizarán y desarrollarán programas que hacen uso de los distintos conceptos impartidos en la materia (PO: a) 3. Trabajo personal. Auto-estudio para comprender los conceptos teóricos y como aplicarlos (PO: a) 4. Exámenes (PO: a). Ejercicios a resolver por los estudiantes que les permitirán demostrar los conocimientos y habilidades adquiridas a lo largo del curso. a) Pruebas de evaluación parciales b) Examen final 5. Tutorías según normativa vigente.
Sistema de evaluación
  • Peso porcentual del Examen Final 50
  • Peso porcentual del resto de la evaluación 50

Bibliografía básica
  • Mark A. Weiss. Data Structures and Problem Solving Using Java. Addison-Wesley.
  • Michael T. Goodrich and Roberto Tamassia. Data Structures and Algorithms in Java. John Wiley & Sons, Inc..
Bibliografía complementaria
  • Eckel, B.. Piensa en Java. Prentice Hall, 2002.
  • Gómez, G. et al.. Programación en Java. Facultad de Informática, UPM, Madrid 2000.
  • Horstmann, C.S. & Cornell, G.. Core Java 2. Volume 1 - Fundamentals. Prentice Hall, 2002.
  • Sánchez, J.; Huecas, G.; Fernández, B. & Moreno, P.. Java 2. Iniciación y referencia. Osborne McGraw-Hill, 2001.

El programa de la asignatura podría sufrir alguna variación por causa de fuerza mayor debidamente justificada o por eventos académicos comunicados con antelación.