Créditos ECTS Créditos ECTS: 6
Horas ECTS Criterios/Memorias Trabajo del Alumno/a ECTS: 99 Horas de Tutorías: 3 Clase Expositiva: 24 Clase Interactiva: 24 Total: 150
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Centro Escuela Politécnica Superior de Ingeniería
Convocatoria: Primer semestre
Docencia: Sin docencia (Extinguida)
Matrícula: No matriculable
Presentación
La variedad de plataformas de programación disponibles hoy en día es muy amplia y está en constante evolución. En esta materia se presentan los fundamentos que hay en todos los lenguajes de programación, y en particular en Lenguaje Python y el lenguaje C++, para que el alumnado, partiendo de un problema sencillo, sea capaz de encontrar un algoritmo que lo resuelva. Para alcanzar esto, se mostrará cómo desarrollar programas sencillos y los fundamentos de programación que hay detrás
En primer lugar, el alumno debe conocer conceptos básicos de equipos informáticos, arquitecturas de ordenadores, representación de la información, así como conceptos básicos, comunes a todos los lenguajes de programación y en particular en el lenguaje Python, y una metodología para desarrollar programas de forma sistemática y eficiente basada en la Programación Estructurada y modular.
Además de su componente formativa directa en el ámbito de la programación, la materia tiene una componente instrumental, ya que los conocimientos y habilidades de programación en los lenguajes de programación escogidos (Python y C++) son de aplicación directa en otros cursos.
El planteamiento de esta materia es eminentemente práctico, de manera que el alumnado disponga de una amplia variedad de ejemplos que le permita alcanzar las competencias transversales y específicas de la materia, y en particular se persigue que el alumno sea capaz de:
- La resolución problemas de ingeniería mediante el diseño de programas informáticos
- Aplicar la planificación en el diseño de programas, siguiendo una metodología basada en la programación estructurada y modular.
Para fomentar:
- Pensamiento analítico: capacidad para comprender y especificar un problema, descomponiéndolo en una serie de subproblemas e identificando los elementos que entran en juego en cada uno.
- Pensamiento operativo: dada la especificación de un problema, ser capaz de encontrar una solución con los recursos disponibles
- Pensamiento conceptual: ser capaz de abstraer el conocimiento aprendido para poder utilizarlo en un nuevo ámbito.
La duración de la presente materia es de 48 horas de docencia expositiva e interactiva, dejando la parte de actividades para la resolución de estas por parte del alumnado, fuera del horario académico
Objetivos de la materia
Los objetivos, para el alumnado, perseguidos en esta materia son:
1) Conocer los componentes básicos de un computador, su funcionalidad y las relaciones entre ellos. Comprender los diferentes sistemas de representación de la información existentes en los computadores.
2) Introducirse en los conceptos y técnicas básicos de la programación desde un enfoque general. Resolver problemas de programación básica aplicando adecuadamente los tipos de datos elementales, los tipos de datos estructurados y las estructuras de control. Dominar los principios de la programación procedural.
3) Asimilar el concepto programación modular y saber aplicarlo en la resolución de problemas. Conocer el concepto de recursividad, aplicándolo a problemas sencillos. Comprender el concepto de fichero y saber utilizarlos
4) Desarrollar las destrezas necesarias para la resolución de problemas básicos de cálculo en el ámbito de la ingeniería mediante el uso de las herramientas de programación. Ser capaz de, ante una nueva especificación de un problema, encontrar una solución con los recursos disponibles y abstraer el conocimiento aprendido para poder utilizarlo en un nuevo ámbito
5) Ser capaz de utilizar herramientas de programación para editar, compilar, ejecutar y verificar un programa. Capacidad para aplicar estrategias de depuración, prueba y corrección de programas.
Contenidos
La memoria del título contempla para esta materia los siguientes contenidos:
Estructura y funcionamiento de un computador. Representación y codificación de la información. Introducción a la Programación procedural: tipos de datos elementales, estructuras de control, programación modular, recursividad básica, tipos de datos estructurados. Entrada/Salida. Ficheros. Herramientas básicas de programación. Diseño, verificación y validación de programas. Documentación.
Estos contenidos serán desarrollados de acuerdo con el siguiente temario:
Introducción (4 horas presenciales)
* Conceptos Básicos sobre Ordenadores.
* Representación de la información.
* Programas y lenguajes de programación.
Lenguaje de programación Python. (6 horas presenciales, 8 no presenciales)
* Variables, expresiones, asignación
* Tipos de datos. Variables y asignaciones.
* Funciones predefinidas.
* Módulos e importación de funciones y variables.
* Métodos.
* Entrada/salida.
* Sobre la legibilidad de los programas.
* Gráficos de tortuga.
* Prácticas: Realización de algoritmos y programas básicos
Estructuras de control (8 Horas presenciales, 10 no presenciales)
* Sentencias condicionales.
* Sentencias iterativas.
* Captura y tratamiento de excepciones.
* Algunos ejemplos gráficos.
* Prácticas: Realización de algoritmos y programas con estructuras de control
Funciones (8 Horas presenciales, 10 no presenciales)
* Definición y uso de funciones.
* Documentación del código.
* Variables locales y variables globales.
* El mecanismo de las llamadas a función.
* Módulos. Diseño de programas con funciones. Recursión.
* Algunos ejemplos gráficos.
* Prácticas: Realización de algoritmos y programas modulares
Tipos estructurados en Python (6 horas presenciales, 10 no presenciales)
* Cadenas. Listas. Matrices.
* Tuplas y Conjuntos
* Diccionarios
* Prácticas: Realización de algoritmos y programas con estructuras de datos
Cálculo científico y Técnico en Python. Interfaces Gráficas (4 horas presenciales, 12 no presenciales)
* Cálculo Numérico con Numpy
* Representación Gráfica con Matplotlib.
* Cálculo simbólico con Sympy
* Creación de interfaces gráficas. Tkinter
Ficheros y Gestión de Datos (6 horas presenciales, 7 no presenciales)
* Generalidades sobre ficheros.
* Ficheros de texto.
* Análisis de datos con Pandas
* Bases de Datos.
* Prácticas: Realización de algoritmos y programas con ficheros
Diseño, verificación y validación de programas. Documentación
Lenguaje C++ (6 horas presenciales, 15 no presenciales)
* Estructura de un programa
* Constantes y variables. Tipos
* Estructuras de control: Secuencial, alternativa, repetitiva
* Tipos estructurados
* Funciones
* Punteros
* Ficheros
Bibliografía básica e complementaria
La bibliografía da programación en Python es extraordinariamente amplia. Nos hemos limitado aquí a unos pocos títulos seleccionados por considerarlos de mucha calidad.
Bibliografía Básica:
[1] Andrés Marzal Varó, Isabel Gracia Luengo, Pedro García Sevilla. - Introducción a la programación con Python 3. Universitat Jaume I (Creative Commons)
[2] Hunt, John. “A Beginners Guide to Python 3 Programming.”, Editorial Springer, 2019
[3] McKinney, Wes. “Python for data analysis: Data wrangling with Pandas, NumPy, and Ipython.”, Editorial O'Reilly Media, Inc., Segunda edición, 2017
Bibliografía Complementaria:
[4] Baltasar Garcia Perez-Schofield. - Introducción a la programación con Python (Creative Commons)
[5] Raúl González Duque. - Python para todos (Creative Commons)
[6] Guido Van Rossum. - El tutorial de Python. http://tutorial.python.org.ar/
[7] Eugenia Bahit. - Curso: Python para Principiantes. (Creative Commons)
[8] Franck EBEL - Sébastien ROHAUT. - Algoritmia - Técnicas fundamentales de programación (Ediciones ENI)
[9] Sébastien CHAZALLET. - Python 3: Los fundamentos del lenguaje (Ediciones ENI)
[10] De Miguel, Pedro. "Fundamentos de los computadores." Editorial Thomson Learning Paraninfo, 2004.)
[11] Ramalho, Luciano. "Fluent Python." Editorial O'Reilly, 2015.
Competencias
Generales:
CG2: Capacidad de resolución de problemas en el campo de la ingeniería robótica con creatividad, iniciativa, metodología y razonamiento crítico.
CG3: Capacidad de utilizar herramientas informáticas para el modelado, la simulación y el diseño de aplicaciones de ingeniería.
CG5: Ser capaz de obtener y analizar información sobre circuitos, elementos de máquinas, control automático, sensores y sistemas informáticos, con el fin último de lograr aplicaciones robóticas autónomas y flexibles.
Competencias básicas
CB1: 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 los libros de texto avanzados, incluye también algunos aspectos que implican conocimientos procedentes de la vanguardia de su campo de estudio.
CB2: 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.
CB5: Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.
Competencias transversales
CT1: Capacidad de análisis y síntesis.
CT3: Capacidad de trabajo individual, con actitud autocrítica.
CT4: Capacidad para trabajar en grupo y abarcar situaciones problemáticas de forma colectiva.
CT9: Habilidad en el manejo de tecnologías de la información y de la comunicación (TIC).
CT10: Utilización de información bibliográfica y de Internet.
CT12: Capacidad para resolver problemas mediante la aplicación integrada de sus conocimientos.
Competencias específicas
CE5: Capacidad de analizar, diseñar, representar y programar algoritmos, y manejo de las estructuras de datos adecuadas para la resolución de problemas en el ámbito de la robótica.
Metodología de la enseñanza
La metodología de enseñanza que se persigue dentro de la materia donde se encuadra la presente asignatura es la siguiente:
* Los contenidos de la materia se impartirán de manera indistinta en las clases expositivas y en las clases interactivas. Las unidades teóricas y prácticas se impartirán de manera alternativa a lo largo del semestre con el objeto de afianzar los conceptos impartidos en ellas.
* La realización de todas las actividades propuestas es necesaria, al igual que la asistencia a todas las clases (expositivas e interactivas) para superar la materia.
* Los recursos necesarios para la presente materia son los siguientes:
a) Disponer de un ordenador personal
b) Copias de los apuntes de la materia.
c) Acceso de los alumnos a la bibliografía en la Biblioteca o por Internet.
d) Acceso a la herramienta Ms Visual Studio
e) OpenOffice o LibreOffice para la preparación de la documentación de las prácticas.
f) Acceso el campus virtual de la USC
g) Acceso a Ms Teams
Clases Expositivas e interactivas: Las clases consistirán en la explicación de los apartados del programa con la ayuda de una presentación electrónica. También se realizarán ejercicios en la pizarra, haciendo que el alumnado participe y desarrolle programas interactuando con el profesor para la resolución de estos. Todos los contenidos digitales (los códigos de los programas en Python y en C++, las diapositivas de la presentación en formato PDF, así como las explicaciones de estas en formato video por streaming), serán puestos a disposición del alumnado tanto en el Campus virtual como en el entorno colaborativo Ms Teams.
Las clases presenciales fundamentalmente tendrán lugar en un aula de informática, en la que se proporcionará un ordenador para cada alumno. Cuando la docencia se imparta por medios virtuales, se utilizará la herramienta Ms Teams para llevar a cabo la misma. La metodología de aprendizaje de prácticas consiste fundamentalmente en la resolución por parte del alumno de las actividades propuestas y otros ejercicios de programación, individualmente o por grupos, con la ayuda del profesor.
Actividades: A lo largo del semestre, el alumno deberá resolver problemas de programación adecuados a los contenidos desarrollados hasta el momento. Dichas actividades se corresponden con enunciados de los problemas resueltos en los exámenes de convocatorias anteriores y con problemas propuestos en recursos detallados en la bibliografía.
La resolución y entrega de estas actividades se consideran esenciales para alcanzar un resultado satisfactorio en la presente materia. Estas actividades serán defendidas por los alumnos en sesiones de tutoría a través de la plataforma Ms Teams
Tutorías: Las sesiones de tutorías servirán para resolver las dudas del alumnado en cuanto a los contenidos de la materia, resolución de problemas de teoría y ejercicios de prácticas propuestos en el anexo de actividades. Estas tutorías serán tanto presenciales como virtuales a través de correo electrónico, campus virtual o plataforma Ms Teams, y son fundamentales para alcanzar un aprendizaje efectivo de la materia.
Curso Virtual: Esta materia dispondrá de un curso virtual desenvuelto sobre la plataforma de Campus virtual de la USC, usando además la herramienta colaborativa Ms Teams. En estas se le facilitará al alumnado todo el material necesario en formato digital, además de distintas herramientas de comunicación para el apoyo, tanto de la docencia virtual como de las tutorías, incluyendo videoconferencia, chat, correo electrónico, foros…
La memoria de título plantea que, para los sistemas de evaluación de la asignatura, se seguirá la normativa general de evaluación de la USC y las especificaciones descritas en el apartado 5.1. de la misma. En concreto, y para esta asignatura, se fijan las ponderaciones mínima y máxima de cada apartado, tal y como se refleja en la siguiente tabla
Sistema de evaluación
Actividades Propuestas: entre 20% y 40%
Prueba o pruebas evaluación: entre 50% y 70%
Tutorías: entre 0% y 10%
La asistencia a las clases interactivas y expositivas es obligatoria y se tendrá en cuenta para la evaluación de la materia. Será obligatorio la asistencia al menos al 95% de las sesiones (salvo causas muy justificadas, según normativa de la USC). Las clases prácticas se realizarán a lo largo del curso durante las sesiones de clases interactivas.
Se recomienda encarecidamente utilizar las tutorías, tanto presenciales como virtuales, para la resolución de las dudas al respecto de estos problemas o de cualquier contenido de la materia.
Para superar la materia, el alumno tendrá que realizar todas las actividades que se propongan y superar los exámenes correspondientes.
Para los casos de realización fraudulenta de ejercicios o pruebas será de aplicación lo recogido en la “Normativa de avaliación do rendemento académico dos estudantes e de revisión de cualificacións” de la USC.
Primera oportunidad:
Para superar la materia, el alumno deberá haber asistido a las clases, haber entregado y superado las actividades propuestas, que se realizarán mediante talleres en la plataforma virtual de la asignatura (40% de la calificación final) y aprobar por separado tanto la teoría, que se realizará mediante un examen tipo test con la ayuda de la plataforma virtual, como la parte práctica, que se realizará mediante tareas en la plataforma virtual de la asignatura consistente en la resolución de problemas de programación ( 60% de la calificación final). Se tendrá en cuenta la asistencia a las tutorías para la resolución de dudas
Las preguntas del examen teórico podrán referirse tanto a los contenidos reflejados en los apuntes de la asignatura como a los contenidos prácticos trabajados por el alumno en las actividades entregadas. Estas pruebas podrán constar de preguntas tipo test, preguntas cortas y problemas de casos prácticos.
En todas las pruebas se evaluará el grado de asimilación de las competencias establecidas en el programa docente de la materia. No se realizará ningún examen parcial. Para superar la materia se tendrá que demostrar un conocimiento superior al 50% en todos los tipos de evaluación.
Segunda oportunidad:
Al margen de la evaluación continua, todos los alumnos tienen derecho a asistir al examen de la segunda oportunidad. Se mantiene la nota, y también su peso en la nota final, conseguida en cada una de las partes (asistencia a clase, entrega de actividades y las notas de la parte teórica, como de la parte práctica) durante el curso. Sin embargo, los alumnos podrán entregar en fecha previa el examen de la segunda oportunidad, aquellas actividades que no hubiesen alcanzado la nota de corte en la convocatoria anterior. Para superar la materia se tendrá demostrar un conocimiento superior al 50% en todos los tipos de evaluación
Sistema de evaluación
Competencias Ponderación mínima Ponderación máxima
Actividades Propuestas CG2, CG3, CG5, CE5 entre 20% y 40%
Prueba o pruebas evaluación CG2, CG3, CG5, CE5 entre 50% y 70%
Tutorías CG2, CG3, CG5, CE5 entre 0% y 10%
Los alumnos repetidores de años anteriores estarán exentos del cumplimiento del deber de asistencia a las clases presenciales. Para aprobar la materia es obligatorio la realización y entrega de las actividades propuestas en las mismas fechas establecidas para el resto de los alumnos, así como superar la prueba de tipo Test y el examen de tipo práctico.
Los alumnos que no asistan a ninguna de las actividades de enseñanza programadas por conciliación laboral o familiar deberán cumplir con las disposiciones de la Instrucción 1/2017 de la Secretaría General. En estos casos, para aprobar esta materia, es obligatorio la realización y entrega de las actividades propuestas, así como superar la prueba de tipo Test y el examen de tipo práctico.
Tempo de estudio y trabajo personal
La materia tiene fijada una carga de trabajo de 6 ECTS. Este dato conduce a una carga de trabajo para la materia situada entre las 150 (6x25) horas y las 180 (6x30) horas.
En la guía de la materia se puede ver un estudio más detallado sobre el tiempo de estudio y trabajo personal necesario para superar la materia. La recomendación general sería emplear entre 10 y 12 horas (incluidas las 4 de clase) por semana
Trabajo presencial en el aula
* Clases teóricas (expositivas de grupo grande): 12 horas.
* Prácticas (con grupos reducidos): 36 horas.
* Tutorías de grupo (con grupos reducidos): 3 horas.
* Tutorías individualizadas: 4 horas.
* Actividades de evaluación: 5 horas.
TOTAL 60 horas
Trabajo personal del alumnado
* Lectura y preparación de temas: 6 horas.
* Realización de ejercicios y Elaboración de trabajos: 66 horas.
* Tutoría en grupo: 7 horas.
* Tutoría individualizada: 3 horas.
* Preparación de pruebas de evaluación: 8 horas.
TOTAL 90 horas
Dado que se emplea una metodología sustentada en la evaluación continua, es necesario un trabajo continuado con los contenidos de la materia. Esto es especialmente importante con las prácticas, ya que unos contenidos se van asentando sobre los anteriores, lo que hace muy conveniente tener asimilados los temas anteriores antes de intentar comprender los nuevos. Es la única forma de poder ir superando las distintas actividades de evaluación que se proponen.
Para el estudio de la materia, se recomienda realizar la totalidad de los ejercicios de los boletines de problemas y de las actividades, tanto los que se resuelvan en las propias sesiones interactivas, como los que queden propuestos.
La asignatura se impartirá en Castellano.
Por razones evidentes de convivencia, así como una adecuada calidad de las actividades didácticas que se llevan a cabo en el marco del grado, está terminantemente prohibido el uso del teléfono móvil en el aula, responsabilizando al alumnado de las consecuencias legales y académicas que puedan derivarse de la utilización de este.