
Programación Avanzada
Código: 100126Créditos: 6
| Titulación | Tipo | Curso |
|---|---|---|
| Matemáticas | OP | 4 |
Profesor/a de contacto
- Nombre :
- Vicenç Soler Ruíz
- Correo electrónico :
- vicenc.soler@uab.cat
Idiomas de los grupos
Puede consultar esta información al final del documento.
Prerrequisitos
Conviene haber aprendido los conocimientos en programación básica en C en los primeros cursos del Grado o en otras asignaturas, aunque no es imprescindible.
Objetivos
La asignatura tiene dos partes bien diferenciadas. Un primer objetivo es conseguir un buen dominio de programación en C, de manera que los alumnos sean el capaces de estructurar una aplicación y de programar un algoritmo complejo. Un segundo objetivo es conseguir una formación en programación orientada a objetos (principalmente con Python, peroo también con Java), creación de librerías y que sirva de base para el aprendizaje de cualquier lenguage orientado a objetos.
Las Prácticas se basan en ralizar dos juegos: uno en C y el otro en Java o Python.
El desarrollo de juegos, como base de las prácticas de la asignatura, proporciona la obligatoriedad de utilizar muchos aspectos diferentes de los lenguajes de programación y hace que las prácticas sean más atractivas para el alumno. Todo esto motiva para que el alumno esté más interesado por el desarrollo de la asignatura.
Resultados de aprendizaje
- Utilizar eficazmente bibliografía y recursos electrónicos para obtener información.
- Que los estudiantes hayan demostrado poseer y comprender conocimientos en un área de estudio que parte de la base de la educación secundaria general, y se suele encontrar a un nivel que, si bien se apoya en libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
- Que los estudiantes sepan aplicar sus conocimientos a su trabajo o vocación de una forma profesional y posean las competencias que suelen demostrarse por medio de la elaboración y defensa de argumentos y la resolución de problemas dentro de su área de estudio.
- Desarrollar un pensamiento y un razonamiento crítico y saber comunicarlo de manera efectiva, tanto en las lenguas propias como en una tercera lengua.
- Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
- Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
- Generar propuestas innovadoras y competitivas en la investigación y en la actividad profesional.
- Demostrar de forma activa una elevada preocupación por la calidad en el momento de argumentar o hacer públicas las conclusiones de sus trabajos.
- Trabajar en equipo.
- Poder realizar la implementación total o parcial del producto software y poder diseñar los métodos de verificación y validación.
- Conocer las distintas actividades implicadas en las fases del ciclo de vida de productos software y sus aplicaciones.
- Conocer la arquitectura y las especificaciones de funcionamiento de los productos software, conociendo la naturaleza y las posibilidades que los distintos lenguajes de codificación le proporcionan.
- Saber aportar soluciones científicamente válidas y tecnológicamente actuales.
- Saber analizar, diseñar e implementar sistemas basados en computadores en general, utilizando técnicas y métodos que aseguren su eficacia y eficiencia.
- Dominar las metodologías y herramientas de desarrollo de los sistemas de información, de los sistemas de gestión de bases de datos y de las herramientas para la automatización del desarrollo de los productos software.
- Tener conocimientos de hardware y sistemas de comunicaciones.
Contenidos
Primera parte.
1. Recordatorio de programación estructurada y modular aplicada al C.
1.1. Recordatorio básico
1.1.1. Estructuras y tipos de datos
1.1.2. Estructuras de secuencia, control e iteración
1.1.3. Procedimientos y funciones
1.2. Estructuras dinámicas
1.2.1 Organización de punteros y direcciones de memoria
1.2.2. Estructuras básicas: pilas, listas y colas.
1.2.3. Árboles
1.2.4. Matrices dinámicas
2. Recursividad.
2.1. Fundamentos de la recursividad
2.2. Algoritmos de búsqueda de soluciones mediante árboles:
2.2.1. Amplitud prioritaria y profundidad prioritaria.
2.2.2. Backtraking.
Segunda parte
3.Programación orientada a objetos (Pyton y Java/C++)
3.1. Conceptos generales y características.
3.2. Clases y objetos: herencia, polimorfismo, ...
3.3. Análisis y diseño orientado a objetos.
4. Python y Java/C++
4.1. Características de los lenguajes.
4.2. Clases, bucles, funciones y estructuras de los lenguajes.
*A menos que las restricciones impuestas por las autoridades sanitarias obliguen a una priorización o reducción de estos contenidos.
Actividades formativas y Metodología
| Título | Horas | ECTS | Resultados de aprendizaje |
|---|---|---|---|
| Estudio personal y desarrollo de prácticas | 97 | 3,88 | 10 |
| Clases teóricas, de problemas y prácticas | 45 | 1,8 | 10 |
Clases teóricas, de problemas y prácticas:
Se presentarán los conceptos de la asignatura. Se hará énfasis en la interpretación de los resultados y en la relación entre estos conceptos y sus aplicaciones. Se presentarán ejemplos que permitan a los alumnos abordar de forma autónoma la resolución de problemas y se discutirá la resolución de los problemas propuestos.
La base de la asignatura será absolutamente práctica. Esto implica que las clases se hacen totalmente en ordenador. Los conceptos teóricos serán explicados en cada sesión y serán complementados con ejercicios propuestos por el profesor, que se programarán directamente en el ordenador bajo su supervisión.
Tutorías:
El profesor supervisará y evaluará el trabajo de los estudiantes. Estos plantearán las dudas que les hayan surgido en la resolución de los ejercicios planteados.
En la sesiones de tutoría se resolverán dudas y se discutirá la resolución de los problemas.
Actividades autónomas:
Los ejercicios y prácticas deberán ser resueltos de manera individual. No tiene ningún sentido, en esta asignatura, el formar grupos de prácticas de más de un alumno para resolver las prácticas.
*La metodología docente propuesta puede experimentar alguna modificación en función de las restricciones a la presencialidad que impongan las autoridades sanitarias.
Evaluación
Actividades de evaluación continuada
| Título | Peso | Horas | ECTS | Resultados de aprendizaje |
|---|---|---|---|---|
| Entrega de prácticas | 66% | 0 | 0 | 1, 2, 3, 5, 6, 7, 9, 10, 11, 12, 13, 14, 16 |
| Examen | 33% | 4 | 0,16 | 2, 3, 4, 8, 15 |
| Examen de recuperación | 33% | 4 | 0,16 | 2, 3, 4, 8, 15 |
Módulo de teoría y problemas (peso 33%).
Su evaluación se realizará mediante 2 exámenes: parcial y final.
Para aprobar la asignatura se debe obtener un mínimo de 2.5 puntos en la parte de los exámenes. El examen parcial tiene un peso del 40% y el final del 60% de la nota de los exámenes.
Módulo de prácticas (peso 66%)
Se entregarán 2 prácticas durante el curso. Las dos prácticas de la asignatura contarán cada una un 33% de la nota final.
Exámenes
Las Matrículas de Honor no se concederán a los estudiantes que opten por hacer el examen de recuperación.
Se aplicará la calificación "No evaluable" a los estudiantes que no se presenten a los exámenes.
El examen de recuperación se aplica sólo a los estudiantes que no hayan aprobado la asignatura.
Uso de la IA
En los exámenes no se permite el uso de la IA. El examen debe ser desarrollado individualmente por cada estudiante, sin ninguna ayuda externa y sólo se permitirá llevar el material que especifique el profesorado.
En el desarrollo de las prácticas puede permitirse el uso de la IA en tareas concretas que no representen la parte principal de la práctica. El estudiante tendrá que identificar claramente qué partes han sido generadas con esta tecnología y especificar las herramientas utilizadas. No se permitirá su uso en más de un 10% del código y deberá consultarse al profesorado si se permite utilizar la IA en la parte que se pretende desarrollar. El objetivo es que las prácticas deben ser desarrolladas por los estudiantes de forma individual y la IA puede ayudar en alguna tarea concreta, pero no puede ser la parte principal de la práctica.
Cualquier actividad evaluable que incluya fragmentos generados con IA (sin estar bajo las condiciones anteriores) o copiados de algún estudiante será considerado una falta de honestidad académica y puede acarrear una penalización parcial o total en la nota de la actividad, o sanciones mayores en casos de gravedad.
Evaluación única
Programació Avançada no tiene evaluación única.
Bibliografía
- K. N. King , “C Programming: A Modern Approach”, Ed. WW Norton & Co, 2008
- Raúl González Duque, "Python para todos", http://mundogeek.net/tutorial-python/
- Python tutorial", https://www.tutorialspoint.com/python/
- Mark Lutz, "Learning Python", Ed. O'Reilly, 2013
- "The C++ Programming Language", B.Stroustrup, 3ªed.,Addison-Wesley, 1997.
- P.Naughton, H.Schildt ,"Java2: The Complete Reference", Osborne/McGraw-Hill, 2000
- "Core Java" Volumes I y II, C.S.Horstmann, G.Cornell, Sun Microsystems Press.
Software
https://www.codeblocks.org/downloads/binaries/
https://www.eclipse.org/downloads/
https://www.python.org/downloads/
https://code.visualstudio.com/download
Grupos e idiomas de la asignatura
La información proporcionada es provisional hasta el 30 de noviembre. A partir de esta fecha, podrá consultar el idioma de cada grupo a través de este enlace. Para acceder a la información, será necesario introducir el CÓDIGO de la asignatura
| Tipo de docencia | Grupo | Idioma | Semestre | Turno |
|---|---|---|---|---|
| (PLAB) Prácticas de laboratorio | 1 | Catalán | primer cuatrimestre | manaña-mixto |