
Programación Avanzada
Código: 100126 Créditos ECTS: 6| Titulación | Tipo | Curso |
|---|---|---|
| Matemáticas | OT | 4 |
Contacto
- Nombre:
- Vicente 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 y contextualización
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.
Competencias
- 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.
- Desarrollar un pensamiento y un razonamiento crítico y saber comunicarlo de manera efectiva, tanto en las lenguas propias como en una tercera lengua.
- Distinguir, ante un problema o situación, lo que es sustancial de lo que es puramente ocasional o circunstancial.
- Generar propuestas innovadoras y competitivas en la investigación y en la actividad profesional.
- 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 hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
- Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
- 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.
- Reconocer la presencia de las Matemáticas en otras disciplinas.
- Trabajar en equipo.
- Utilizar aplicaciones informáticas de análisis estadístico, cálculo numérico y simbólico, visualización gráfica, optimización u otras para experimentar en Matemáticas y resolver problemas.
- Utilizar eficazmente bibliografía y recursos electrónicos para obtener información.
Resultados de aprendizaje
- 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.
- Conocer las distintas actividades implicadas en las fases del ciclo de vida de productos software y sus aplicaciones.
- 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.
- Desarrollar un pensamiento y un razonamiento crítico y saber comunicarlo de manera efectiva, tanto en las lenguas propias como en una tercera lengua.
- 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.
- Generar propuestas innovadoras y competitivas en la investigación y en la actividad profesional.
- Poder realizar la implementación total o parcial del producto software y poder diseñar los métodos de verificación y validació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 hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
- Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
- 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.
- Saber analizar, diseñar e implementar sistemas basados en computadores en general, utilizando técnicas y métodos que aseguren su eficacia y eficiencia.
- Saber aportar soluciones científicamente válidas y tecnológicamente actuales.
- Tener conocimientos de hardware y sistemas de comunicaciones.
- Trabajar en equipo.
- Utilizar eficazmente bibliografía y recursos electrónicos para obtener información.
Contenido
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úsquedade soluciones mediante árboles: |
|||
|
2.2.1. Amplitud prioritaria y profundidad prioritaria. 2.2.2. Backtraking. |
|||
Segunda parte
| 3.Programación orientada a objetos (Python y Java) | ||
|
3.1. Conceptos generales y características. 3.2. Clases y objetos 3.3. Análisis ydiseño orientado a objetos. |
||
| 4. Python y Java | ||
|
4.1. Características del lenguage. 4.2 Clases, bucles, funciones y estructuras del lenguage |
||
*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 |
|---|---|---|---|
| Tipo: Dirigidas | |||
| Clases teóricas, de problemas y prácticas | 45 | 1,8 | 7 |
| Tipo: Autónomas | |||
| Estudio personal y desarrollo de prácticas | 97 | 3,88 | 7 |
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.
Nota: se reservarán 15 minutos de una clase dentro del calendario establecido por el centro o por la titulación para que el alumnado rellene las encuestas de evaluación de la actuación del profesorado y de evaluación de la asignatura o módulo.
Evaluación
Actividades de evaluación continuada
| Título | Peso | Horas | ECTS | Resultados de aprendizaje |
|---|---|---|---|---|
| Entrega de prácticas | 66% | 0 | 0 | 1, 2, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16 |
| Examen | 33% | 4 | 0,16 | 3, 4, 5, 8, 11 |
| Examen de recuperación | 33% | 4 | 0,16 | 3, 4, 5, 8, 11 |
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 30% y el final del 70% 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.
Evaluación única
Programació Avançada no tiene evaluación única.
*La evaluación propuesta puede experimentar alguna modificación en función de las restricciones a la presencialidad que impongan las autoridades sanitarias.
Bibliografía
C
C/C++. Curso de programación. 4ª Edición.
JAVA
- Learning Java : An Introduction to Real-World Programming with Java
- Java Cookbook : Problems and Solutions for Java Developers
- Foundational Java : KeyElements and Practical Programming
PYTHON
- Python 2: http://docs.python.org.ar/tutorial/pdfs/TutorialPython2.pdf
- Python 3: http://docs.python.org.ar/tutorial/pdfs/TutorialPython3.pdf
- Mark Lutz, "Learning Python", Ed. O'Reilly
- Raúl González Duque, "Python para todos", http://mundogeek.net/tutorial-python/
-"Python tutorial", https://www.tutorialspoint.com/python/
Otros libros
- "The C++ Programming Language", B.Stroustrup, 3ªed.,Addison-Wesley, 1997.
- "Programación en C/C++", M.Alfonseca, A.Sierra, Anaya-Multimedia, 1999.
- "El lenguaje de programación Java", K.Arnold, J.Gosling, Addison-Wesley, 1997
- "Programación en JAVA 2", J.Zukowski, Anaya-Multimedia, 1999
- "Descubre Java 1.2", M.Morgan, Prentice Hall, 1999.
- "Java2: The Complete Reference", P.Naughton, H.Schildt, Osborne/McGraw-Hill, 2000
- "Core Java" Volúmenes I y II, C.S.Horstmann, G.Cornell, Sun Microsystems Press.
Software
https://www.codeblocks.org/downloads/binaries/
https://www.eclipse.org/downloads/
https://code.visualstudio.com/download
Grupos e idiomas de la asignatura
La información proporcionada es provisional hasta el 30 de noviembre de 2025. 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
| Nombre | Grupo | Idioma | Semestre | Turno |
|---|---|---|---|---|
| (PLAB) Prácticas de laboratorio | 1 | Catalán | primer cuatrimestre | manaña-mixto |