Última actualización: 08/06/2021


Curso Académico: 2021/2022

Programación
(13868)
Titulación: Grado en Ingeniería Informática (218)


Coordinador/a: GARCIA OLAYA, ANGEL

Departamento asignado a la asignatura: Departamento de Informática

Tipo: Formación Básica
Créditos: 6.0 ECTS

Curso:
Cuatrimestre:

Rama de Conocimiento: Ingeniería y Arquitectura



Requisitos (Asignaturas o materias cuyo conocimiento se presupone)
Ninguna
Objetivos
Objetivos específicos de la asignatura: - Conocimiento de los conceptos básicos de la programación imperativa desde un enfoque orientado a objetos. - Conocimientos básicos de la sintaxis de un lenguaje de programación orientado a objetos. - Conocimientos de buenas prácticas y guías de estilo de programación. - Capacidad para descomponer un problema real según una metodología orientada a objetos para su posterior codificación en un programa. - Conocimiento de estructuras sencillas para el manejo de información. - Capacidad para comprender documentación técnica y reutilizar código y librerías desarrollados por terceras partes. - Conocimientos básicos del concepto de complejidad computacional y de algoritmos de búsqueda y ordenación. Objetivos generales: - Capacidad para la autoorganización y planificación del trabajo individual y del proceso de aprendizaje. - Capacidad para el trabajo en grupo. - Comunicación oral y escrita. - Capacidad de análisis y síntesis. - Capacidad para la toma de decisiones. - Motivación por la calidad.
Competencias y resultados del aprendizaje
Descripción de contenidos: Programa
1. Introducción a la asignatura y a la programación 1.1. Elementos de un programa: datos y algoritmos 1.2. Arquitectura básica de un ordenador 1.3. Codificación de la información en memoria 1.4. Breve introducción histórica a la programación 1.5. Compilación vs. interpretación de programas 1.6. Paradigmas de programación: imperativa, lógica y funcional 2. Diagramas de flujo 3. Introducción al lenguaje Python 3.1. El intérprete Python 3.2. Tipos de datos básicos 3.3. Creación de programas en Python 3.4. Variables y constantes 3.5. Entrada, salida y números aleatorios 3.6. Operadores 3.7. Conversiones entre tipos 3.8. Comentarios 3.9. Depuración de programas: tipos de errores 4. Control de flujo: condicionales y bucles 4.1. Condicionales 4.2. Ámbito de variables y bloques de código 4.3. Bucles 5. Estructuras de datos sencillas 5.1. Listas y tuplas 5.2. Diccionarios 6. Funciones 6.1. Descomposición 6.2. Reutilización de código 6.3. Ocultación de la implementación 6.4. Paso por valor y referencia 6.5. Introducción a la recursividad 7. Introducción a la Programación Orientada a Objetos 7.1. Clases y objetos 7.2. Métodos 7.3. Herencia 7.4. Polimorfismo 8. Algoritmos sobre listas 8.1. Introducción a la complejidad computacional 8.2. Búsqueda 8.3. Ordenación
Actividades formativas, metodología a utilizar y régimen de tutorías
Actividades formativas 1. Clases magistrales (1 ECTS) Orientadas a la enseñanza de las competencias específicas de la asignatura, especialmente las relacionadas con los conocimientos básicos y las técnicas de programación imperativa 2. Clases prácticas (1 ECTS) Orientadas a poner en práctica los conocimientos obtenidos en las clases magistrales 3. Trabajo autónomo (2,5 ECTS) Orientado al aprendizaje individual o en grupo de las competencias específicas de la asignatura. También servirá como base para la adquisición de las competencias genéricas siguientes: Comunicación oral y escrita, Capacidad de análisis y síntesis, Capacidad para la toma de decisiones, Motivación por la calidad y Capacidad para la autoorganización y planificación del trabajo y del proceso de aprendizaje. 4. Tutorías (1 ECTS) Asistencia individualizada (tutorías individuales) o en grupo (tutorías colectivas) a los estudiantes por parte del profesor. 5. Examen final (0,5 ECTS). Desarrollo en un tiempo limitado de un programa orientado a objetos. Permite al estudiante mostrar sus conocimientos de una forma integrada. METODOLOGÍA Las clases se dividirán en sesiones magistrales y sesiones de prácticas en laboratorios informáticos. Las clases presenciales se complementarán con el trabajo autónomo del alumno en casa. - Clases teóricas (grupo magistral): se presentarán los conceptos básicos de programación, utilizando Python como lenguaje para facilitar su explicación. Al final de la clase se podrán plantear preguntas cortas o tipo test sobre la materia explicada en esa sesión. Estas preguntas se pondrán posteriormente a disposición de los alumnos en forma de test de Aula Global para que las respondan las veces que consideren necesario. - Clases prácticas (grupo pequeño): constarán de tres partes. En la primera algunos alumnos, elegidos al azar, explicarán las soluciones a los problemas propuestos la semana anterior. A continuación, el profesor planteará un problema y lo resolverá con la ayuda de los alumnos. Por último, en cada sesión se propondrán una serie de problemas que los alumnos empezarán a resolver durante el resto de la clase de prácticas y que se deben entregar al final de esa semana. Se propondrá una práctica final de la asignatura que los alumnos deberán realizar en grupos de dos y que podrá tener entregas parciales. La práctica final y los ejercicios semanales se desarrollarán en Python. - Trabajo autónomo del alumno: durante la semana los alumnos deberán terminar los ejercicios propuestos en las clases de prácticas y entregarlos a través de Aula Global. Régimen de tutorías De acuerdo a la normativa de la universidad se establecerá un horario preferente de tutorías presenciales para cada profesor de teoría o práctica. Este horario estará disponible en Aula Global. No obstante se anima a los alumnos a contactar con el profesor mediante correo electrónico para establecer tutorías fuera de esos horarios. Se utilizará el correo electrónico para resolver dudas puntuales que no requieren de tutoría presencial. Existe también un foro de la asignatura en Aula Global para que los alumnos puedan exponer dudas genéricas sobre la asignatura, que pueden ser contestadas por el profesor o por sus propios compañeros. Durante la práctica final se establecerán tutorías individuales con cada uno de los grupos.
Sistema de evaluación
  • Peso porcentual del Examen Final 50
  • Peso porcentual del resto de la evaluación 50
Calendario de Evaluación Continua
Bibliografía básica
  • Ana Bell. Get Programming Learn to code with Python. Manning publications. 2018
  • John S. Conery. Explorations in Computing: An Introduction to Computer Science and Python Programming. CRC Press. 2014
Recursos electrónicosRecursos Electrónicos *
(*) El acceso a algunos recursos electrónicos puede estar restringido a los miembros de la comunidad universitaria mediante su validación en campus global. Si esta fuera de la Universidad, establezca una VPN


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.


Dirección web para más información: http://