Metodología de la Programación
- Prácticas de Laboratorio (28 Hours)
- Clases Expositivas (21 Hours)
- Prácticas de Aula/Semina (7 Hours)
- Tutorías Grupales (2 Hours)
Esta asignatura se enmarca dentro de la materia de Programación, y en el módulo de Formación Básica. Se imparte a continuación de la asignatura de Introducción de la Programación del primer semestre.
A esta materia corresponden también las asignaturas de Estructuras de Datos, Tecnologías y Paradigmas de la programación, Algoritmia, Diseño de lenguajes de programación, software de entretenimiento y videojuegos, Software para dispositivos móviles y Software para robots.
La asignatura se imparte durante el segundo semestre del primer curso. Cuenta con 6 créditos ECTS, que suponen un total de 150 horas de trabajo; 60 horas presenciales y 90 horas no presenciales.
Organizativamente, la asignatura tendrá 2 horas de clases expositivas a la semana (hasta un total de 21 horas), una hora de seminario (hasta un total de 7 horas, 2 horas de prácticas de laboratorio (hasta un total de 28 horas) y 2 horas totales de tutorías grupales.
La asignatura aborda de una forma más extensa, el paradigma de programación Orientada a Objetos, la metodología de la programación e incluye una introducción a la programación multihilo.
Haber superado total o parcialmente los objetivos de aprendizaje establecidos en la asignatura de Introducción a la Programación que se imparte durante el primer semestre.
Competencias
Las competencias que debe adquirir el alumno en la asignatura de “Metodología de la Programación” forman parte de las competencias definidas en la titulación. Se especifica en algunos casos un segundo nivel que constituye la parte de la competencia a desarrollar en esta asignatura dentro de una competencia mayor compartida con otras asignaturas.
1- Competencias específicas
Bas.3 | Capacidad para comprender y dominar los conceptos básicos de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería. |
Com.6 | Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos. |
Com.7 | Conocimiento, diseño y utilización de forma eficiente de los tipos y estructuras de datos más adecuados a la resolución de un problema. |
Com.8 | Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados. |
Com.14 | Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real. |
2- Competencias generales
CG3 | Capacidad de abstracción. |
CG4 | Análisis y síntesis |
CG5 | Competencia para el análisis, selección y utilización de herramientas informáticas básicas y de apoyo. |
CG11 | Competencia para el trabajo en equipo. |
CG20 | Creatividad. |
CG22 | Capacidad de planificación y organización. |
CG25 | Razonamiento crítico. |
CG26 | Habilidad para aprender y trabajar de forma autónoma. |
CG28 | Motivación por la calidad. |
3- Resultados de aprendizaje
RA.P-1 | Adquirir los conocimientos básicos sobre el uso y programación de los ordenadores y programas informáticos con aplicación en ingeniería. [CG-5] |
RA.P-3 | Analizar, diseñar, desarrollar, seleccionar, evaluar y mantener aplicaciones y sistemas informáticos, asegurando su fiabilidad y calidad aplicando las teorías, principios, métodos y prácticas de la Ingeniería del Software, eligiendo el paradigma y los lenguajes de programación más adecuados, considerando las limitaciones derivadas del coste, del tiempo, de la existencia de sistemas ya desarrollados y de las propias organizaciones. [Com.8] [CG-3] [CG-4] [CG-11] [CG-20] [CG-26] [CG-28] |
RA.P-4 | Conocer y aplicar procedimientos algorítmicos básicos, tipos y estructuras de datos más adecuados a la resolución de un problema, analizando la idoneidad y complejidad de los mismos. [Bas.3] [Com.6] [Com.7] [CG-3] |
RA.P-5 | Conocer y aplicar los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real. [Com.14] [CG-11] |
RA.P-6 | Capacidad de dar solución a problemas de integración en función de las estrategias. Estándares y tecnologías disponibles. [CG-4] [CG-22] |
RA.P-8 | Conocer las nuevas tecnologías empleadas por los lenguajes de programación, análisis de su tendencia y capacidad de juicio para el análisis de nuevas tecnologías y paradigmas. [CG-25] |
Las competencias anteriores para esta asignatura se desglosan en los siguientes puntos:
Bas.3 Capacidad para comprender y dominar los conceptos básicos de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería.
- Comprender y ser capaz de aplicar estructuras algorítmicas mediante el paradigma de orientación a objetos.
- Aplicar los distintos niveles de abstracción en los que puede expresarse un algoritmo.
Com.6 Conocimiento y aplicación de los procedimientos algorítmicos básicos de las tecnologías informáticas para diseñar soluciones a problemas, analizando la idoneidad y complejidad de los algoritmos propuestos.
- Conocer y aplicar los principales algoritmos de búsqueda.
- Saber aplicar algoritmos de forma adecuada.
Com.7 Conocimiento, diseño y utilización de forma eficiente de los tipos y estructuras de datos más adecuados a la resolución de un problema.
- Conocer el concepto de lista, pila y cola, sus aplicaciones y sus operaciones básicas.
- Entender la necesidad de usar estructuras dinámicas de datos. Asimilar el concepto de estructura dinámica de información y sus aplicaciones.
- Entender el tratamiento de errores en tiempo de ejecución a través del uso de excepciones.
- Entender la necesidad de almacenamiento de la información en medios no volátiles. Conocer el concepto de fichero y sus diferentes tipos. Conocer las operaciones que se pueden realizar sobre ellos y entender su funcionamiento.
- Saber representar los diferentes tipos de información de un problema utilizando las estructuras de datos adecuadas en cada caso.
Com.8 Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma robusta, segura y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados.
- Analizar problemas planteando especificaciones detalladas.
- Conocer y aplicar las diferentes etapas para la creación de una aplicación.
- Adquirir conocimientos para poder construir aplicaciones, independientemente del lenguaje de programación que se utilice.
- Comprender los distintos pasos del análisis y diseño de una aplicación a través de los diferentes diagramas del lenguaje de modelado UML
- Adquirir experiencia en el uso de herramientas para la generación automática de documentación de las aplicaciones desarrolladas.
- Adquirir la capacidad de implementar en un plazo razonable, programas correctos, mediante la aplicación de pruebas unitarias, eficientes y bien documentados.
- Diseñar y realizar pruebas de funcionamiento representativas, que verifiquen la validez de un proyecto (funcional, integridad de los datos, rendimiento de las aplicaciones).
- Ser capaz de manejar depuradores de código.
- Aplicar de manera adecuada el modelo de objetos y comprender las ventajas que ofrece.
- Adquirir buenos hábitos de codificación.
Com.14 Conocimiento y aplicación de los principios fundamentales y técnicas básicas de la programación paralela, concurrente, distribuida y de tiempo real.
- Obtener una visión general sobre la programación concurrente.
- Conocer las ventajas de la programación concurrente.
En base a los objetivos planteados se seleccionan los siguientes contenidos:
1. Revisión del paradigma de Orientación a Objetos.
Fundamentos del paradigma de objetos
Herencia
Polimorfismo
Interfaces
2. Introducción a la Metodología de la programación.
Análisis y diseño
Fundamentos de notación UML
Pautas de diseño, implementación y documentación
3. Estructuras de datos básicas.
Colecciones (listas, pilas, colas)
Algoritmos básicos de búsqueda
4. Tratamiento de errores en tiempo de ejecución
Errores en ejecución
Técnicas básicas para el tratamiento de errores de ejecución
Excepciones
5. Persistencia, serialización, entrada/salida
Sintaxis y clases de E/S
6. Introducción a la programación multihilo.
El desarrollo de las competencias, se muestra en la siguiente tabla:
Temas | Competencias Específicas | Competencias Generales |
Tema 1 | Bas.3, Com.8, Com.6 | CG3 |
Tema 2 | Com.8 | CG3, CG4, CG5, CG25, CG28, CG20 |
Tema 3 | Bas.3, Com.7, Com.6 | CG4, CG11, CG25 |
Tema 4 | Bas.3, Com.7, Com.6 | CG26 |
Tema 5 | Bas.3, Com.7 | CG22 |
Tema 6 | Com.14 | CG4, CG3 |
Las actividades presenciales seguirán cinco modalidades:
- Clases expositivas, en donde se plantearán los fundamentos de la materia que permitan a los estudiantes realizar las prácticas de laboratorio y el trabajo autónomo complementario.
- Prácticas de aula/Seminarios, donde se llevará a cabo un aprendizaje más dinámico y colaborativo.
- Prácticas de laboratorio, donde se realizarán diferentes proyectos en los que se diseñará e implementará su solución. Estos proyectos requerirán del trabajo no presencial de los alumnos.
- Tutorías grupales, se realizará un seguimiento de los alumnos para afianzar los conocimientos adquiridos.
- Sesiones de evaluación, se realizarán exámenes tanto teóricos como prácticos con ordenador, para evaluar los conocimientos adquiridos.
MODALIDADES | Horas | % | Totales | |
Presencial | Clases Expositivas | 21 | 14 | 60 |
Práctica de aula / Seminarios / Talleres | 7 | 4,7 | ||
Prácticas de laboratorio / campo / aula de informática / aula de idiomas | 28 | 18,7 | ||
Prácticas clínicas hospitalarias | ||||
Tutorías grupales | 2 | 1,3 | ||
Prácticas Externas | ||||
Sesiones de evaluación | 2 | 1,3 | ||
No presencial | Trabajo en Grupo | 4 | 2,6 | 90 |
Trabajo Individual | 86 | 57,3 | ||
Total | 150 |
De forma excepcional, si las condiciones sanitarias lo requieren, se podrán incluir actividades de docencia no presencial. En cuyo caso, se informará al estudiantado de los cambios efectuados.
Evaluación continua
Este curso requiere un alto grado de evaluación continua y aprendizaje cooperativo, mediante pruebas y controles en el aula de teoría, en los seminarios y en el laboratorio, las cuales pueden ser tanto individuales como colectivas.
La evaluación contempla los siguientes aspectos:
- Nota de Teoría: controles de aprendizaje de la parte teórica de la asignatura mediante diferentes pruebas (test, cuestionarios, etc.) (25% de la nota final)..
- Nota de Seminario: evaluación continua de un proyecto incremental que se implementará a lo largo del semestre (10% de la nota final).
- Nota prácticas de laboratorio: evaluación periódica de las prácticas realizadas en el laboratorio mediante el desarrollo de varios proyectos. El estudiante realizará y podrá defender un proyecto planteado en los controles prácticos (65% de la nota final).
Para superar este proceso de evaluación continua se requiere:
- Asistencia Mínima. Una asistencia mínima de un 80% en las clases presenciales (teoría, laboratorio y seminarios).
- Puntuación Mínima: Se requiere obtener al menos 3 puntos (sobre 10) en cada en cada uno de los controles de evaluación realizados (de teoría, prácticas y proyecto) y haber entregado todas las tareas no presenciales con una calidad suficiente (trabajo autónomo).
Si cumplen los requisitos anteriores, la nota final se calculará como:
Nota Final = Nota Teoría * 0,25 + Nota Prácticas * 0,65 + Nota Proyecto * 0,10
Si no se cumplen los requisitos,
1.- Si el estudiante ha participado en actividades de evaluación cuyo peso en la calificación total suponga al menos el 50%, la nota final se calculará como:
Nota Final = Mínimo (4, (Nota Teoría * 0,25 + Nota Prácticas * 0,65 + Nota Proyecto * 0,10))
2.- En caso contrario
Nota final = No presentado
Aquellos estudiantes que no hayan aprobado la asignatura por evaluación continua, podrán hacerlo también de la siguiente manera:
Convocatoria ordinaria
A esta convocatoria podrán presentarse aquellos estudiantes que durante TODO el semestre hayan cumplido el requisito de asistencia mínima, hayan completado todos los controles y hayan entregado todos los trabajos requeridos, pero que hayan suspendido por evaluación continua por no alcanzar el aprobado o hayan obtenido una nota inferior a la nota mínima en alguno de los controles realizados.
Los estudiantes deberán realizar un único examen práctico con el ordenador.
La nota final de la asignatura se corresponderá con la nota de este examen.
Convocatorias extraordinarias
Todos los estudiantes deberán realizar un único examen práctico con el ordenador en el laboratorio. La nota final de la asignatura se corresponderá con la nota de este examen
Evaluación diferenciada
Aquellos estudiantes con derecho a evaluación diferenciada, deberán realizar un único examen práctico con el ordenador en el laboratorio. La nota final de la asignatura se corresponderá con la nota de este examen.
Referencias bibliográficas
- Programación Orientada a Objetos con Java usando BlueJ. David J. Barnes and Michael Kölins. Pearson Education, 6ª edición. ISBN: 978-84-8322-791-6
- Piensa en Java 4ª Edicion - Bruce Eckel. Editorial Prentice Hall, 2007. ISBN: 8489660344
- El Lenguaje Unificado de Modelado. Guía del usuario. Grady Booch, Ivar Jacobson, James Rumbaugh.. Addison-Wesley/Diaz de Santos, 1999. ISBN: 84-7829-028-1
- Construcción de software orientado a objetos (2ª edición). Bertrand Meyer. Prentice Hall, 1999. ISBN: 84-8322-040-7
- Efective Java. Third Edition. Joshua Bloch. Pearson Education, 2018, ISBN: 9780134685991
Referencias electrónicas
- The Java Tutorial. Oracle http://download.oracle.com/javase/tutorial/
- Free Electronic Books.Thinking in Java (disponible en la web)
Todos los recursos, bibliografía y documentación complementaria se localizarán en la Página Web de la asignatura, dentro del Campus Virtual de la Universidad de Oviedo.