Créditos ECTS Créditos ECTS: 6
Horas ECTS Criterios/Memorias Trabajo del Alumno/a ECTS: 97 Horas de Tutorías: 3 Clase Expositiva: 20 Clase Interactiva: 30 Total: 150
Lenguas de uso Castellano, Gallego
Tipo: Materia Ordinaria Grado RD 1393/2007 - 822/2021
Departamentos: Electrónica y Computación
Áreas: Lenguajes y Sistemas Informáticos
Centro Escuela Técnica Superior de Ingeniería
Convocatoria: Primer semestre
Docencia: Con docencia
Matrícula: Matriculable | 1ro curso (Si)
Los objetivos principales de la materia son:
- Desarrollar los fundamentos del diseño estructurado de algoritmos.
- Proporcionar los conocimientos y habilidades para su implementación en el lenguaje C.
- Comprender y saber aplicar las técnicas básicas de diseño e implementación de algoritmos en casos prácticos simples.
Esta asignatura ofrece un primer contacto con un lenguaje de programación de alto nivel, desarrollando un curso básico de programación estructurada. Se desarrollan los conceptos de expresión, los distintos tipos de instrucciones y estructuras de programación, funciones y procedimientos y gestión dinámica de memoria. Se forma al estudiante en el diseño descendente de algoritmos, las bases de la programación modular y el diseño ascendente. 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 el lenguaje de programación escogida (C) son de aplicación directa en otros cursos. De manera inmediata, la programación en C resulta imprescindible para las materias Programación II (2º Semestre) y Algoritmos y Estructura de Datos (2ºCurso, 1º Semestre).La programación en C también proporciona los fundamentos de casi todas las materias técnicas o de ingeniería del segundo curso, siendo una buena base para la programación en Java que se utilizan en la materia de Programación Orientada a Objetos, para toda la parte práctica de las materias relacionadas con los Sistemas Operativos y para la Ingeniería del Software.
1. Algoritmos y programas
1.1. Conceptos de algoritmo y programa
1.2. Lenguajes de programación
1.3. Lenguaje máquina y ensamblador
1.4. Lenguajes de alto nivel
1.5. Especificación de algoritmos
1.6. Diseño de algoritmos
1.7. Codificación y prueba
Los objetivos del primero tema son: (i) introducir algunos elementos básicos de la ingeniería del software, incluyendo requisitos, especificación, diseño y evaluación;(ii) establecer la conexión entre conceptos software y hardware.
2. Variables e instrucciones
2.1. Variables y tipos de datos
2.2. Cadenas de caracteres
2.3. Instrucciones de asignación
2.4. Expresiones aritméticas y lógicas
2.5. Instrucciones de Entrada/Salida
3. Programación estructurada
3.1. Teorema de la programación estructurada
3.2. Estructuras de control
3.3. Diseño descendente
3.4. Vectores y matrices
3.5. Registros
4. Programación modular
4.1. Funciones y procedimientos
4.2. Ámbito de variables: datos locales y globales
4.3. Paso de argumentos
4.4 Recursividad
4.5. Diseño modular
4.6. Bibliotecas
4.7. Arquivos
Los objetivos de los temas 2-4 son aprender las metodologías de la programación estructurada y la programación modular enmarcándolas en el contexto histórico de la evolución del software. Además, en el tema 4 se definen los dos tipos principaless de acceso a archivos, haciendo hincapie en la importancia de los formatos e su relación directa con los tipos de datos utilizados en una aplicación.
5. Referencias
5.1. Definición
5.2. Declaración de punteros y asignación de memoria
5.3. Compartición de memoria
5.4. Reserva dinámica de memoria
5.5. Punteros y funciones
5.6. Punteros y estructuras
Este tema trata sobre lo mecanismo de las referencias. Esta es una de las características fundamentales de los lenguajes de programación, común a casi todos los lenguajes modernos. Incluso aquellos lenguajes que no hacen uso explícito de referencias tienen algún uso implícito.
Básica:
Desde el inicio del curso, el alumnado tendrá acceso a los apuntes preparados por el profesor y que cubren todos los temas de la asignatura. Adicionalmente recomendamos las siguientes referencias bibliográficas complementarias:
1. GARCÍA, Jesús J. Una introducción a la programación. Madrid: Thomson, 2005. ISBN 84-9732-185-5.
Referencia interesante que cubre la mayor parte de los contenidos de la materia. Adicionalmente incluye un curso básico de programación C.
2. GOTTFRIED, Byron S. Programación en C. 2ª ed. Madrid: McGraw-Hill, 2005. ISBN 84-481-9846-8.
Curso básico de programación en C. Este libro contempla todos los aspectos de interés, pero en realidad cualquier manual similar es válido para la parte práctica de la materia.
3. BROOKSHEAR, J. Glenn. Introducción a la computación. 12ª ed. Pearson Addison-Wesley, 2013. ISBN 9788478291397.
4. JOYANES, Luís . Fundamentos de programación. 4º ed. Aravaca (Madrid): McGraw-Hil, 2008. ISBN 978-84-481-6111-8.
Esta referencia resulta interesante por el hecho de que complementa la referencia #1 mostrando enfoques ligeramente diferentes usando un seudocódigo propio para los ejemplos, lo que permite un nivel de abstracción por arriba de los lenguajes específicos.
5. GRIFFITHS, David. Head first C. O’Reilly, 2013. ISBN 978-1-449-39991-7.
Este libro se basa en el uso de los últimos resultados sobre procesos de aprendizaje para facilitar el aprendizaje del lenguaje de programación C.
Al final del curso el/la estudiante será capaz de desarrollar de manera modular un proyecto de programación en el lenguaje de porgramación C, incluyendo una idónea indicación de las especificaciones, su diseño y una documentación descriptiva del proyecto.
Se trabajarán en cierta medida, de acuerdo con las características de la materia, las siguientes competencias escogidas entre las globales del título y las del módulo de formación básica:
FB4. Conocimientos básicos del uso y programación de los ordenadores, sistemas operativos, bases de datos y programas informáticos con aplicación en ingeniería.
FB5. Conocimiento de la estructura, organización, funcionamiento e interconexión de los sistemas informáticos, los fundamentos de su programación, y su aplicación para la resolución de problemas propios de la ingeniería.
RI8. Capacidad para analizar, diseñar, construir y mantener aplicaciones de forma fuerte, segura y eficiente, eligiendo la paradigma y los lenguajes de programación más adecuados.
CG8. Conocimiento de las materias básicas y tecnologías, que capaciten para el aprendizaje y desarrollo de nuevos métodos y tecnologías, así como las que les doten de una gran versatilidad para adaptarse la nuevas situaciones.
CG9. Capacidad para resolver problemas con iniciativa, toma de decisiones, autonomía y creatividad. Capacidad para saber comunicar y transmitir los conocimientos, habilidades y destrezas de la profesión de Ingeniero Técnico en Informática.
TR1. Instrumentales: Capacidad de análisis y síntesis. Capacidad de organización y planificación. Comunicación oral y escritura en gallego, castellano e inglés. Capacidad de gestión de la información. Resolución de problemas. Toma de decisiones.
TR2. Personales: Trabajo en equipo. Trabajo en un equipo multidisciplinar y multilingüe. Habilidades en las relaciones interpersonales. Razonamiento crítico. Compromiso ético.
TR3. Sistémicas: Aprendizaje autónomo. Adaptación a nuevas situaciones. Creatividad. Iniciativa y espíritu emprendedor. Motivación por la calidad. Sensibilidad hacia temas ambientales.
Además, se trabajan las siguientes competencias del módulo de programación:
- Desarrollar programas con un buen estilo de programación, con la documentación necesaria y los comentarios adecuados.
- Utilizar herramientas de edición, compilación, y ejecución para desarrollar programas. Capacidad para aplicar estrategias de depuración, prueba y corrección de programas.
- Manejar diferentes niveles de abstracción para estructurar el software a desarrollar.
- Diseñar algoritmos de una cierta complejidad e implementarlos aplicando los principios de la programación estructurada y modular.
- Comprensión de conceptos relacionados con el desarrollo de algoritmos.
- Conocimiento de los diferentes paradigmas de programación.
- Exposición oral del trabajo realizado.
El programa de docencia expositiva se basa en clases semanales, en las que se incluyen las explicaciones de los temas y los seminarios de problemas. El programa de docencia interactiva se articula habitualmente en sesiones semanales de dos horas, y estará orientado a trabajar de manera práctica los contenidos introducidos en las clases expositivas.
El horario prevé 21 horas de docencia expositiva distribuidas al largo del semestre, según el horario académico oficial, y 2 horas semanales de docencia interactiva. Empezaremos en teoría viendo temas relacionados con la especificación de algoritmos, al tiempo que en prácticas iremos introduciendo y manejando los conceptos de programación más básicos. Cuando lleguemos a los temas de teoría relacionados con la programación estructurada la teoría y la práctica ya serán complementarias, de forma que a partir de ese momento los alumnos irán resolviendo en prácticas de manera autónoma ejercicios de programación en lenguaje C en los que tendrán que manejar los conocimientos teóricos. Cada tema tendrá un boletín de ejercicios de diseño y de implementación asociado y el trabajo del alumno será evaluado sobre un subconjunto representativo de esos ejercicios. Tanto los ejercicios como los proyectos seleccionados para evaluación de los boletines tendrán que ser defendidos de manera presencial delante del profesor.
Las competencias FB4, FB5, RI8, CG8 y CG9, así como las indicadas del módulo de programación tienen contenidos específicos asociados en la parte teórica y práctica de la materia y se evaluan de forma explícita en las pruebas realizadas al largo del curso.
Las competencias de tipo TR1 se trabaja fundamentalmente en el aspecto de comunicación mediante presentaciones orales de resultados como por la aportación a bases de datos con códigos de ejemplo que construyen los estudiantes durantes el curso.
Las competencias de tipo TR2 se trabajan de manera implícita por la propia dinámica de las clases donde el trabajo en equipo es necesario y obligatorio para la realización de tareas que serán evaluadas.
Del grupo de competencias TR3 trabajamos especialmente la creatividad y la motivación por la calidad. La enseñanza de patrones de programación y técnicas básicas para evaluación de la eficiencia ayudan a buscar las mejores soluciones para cada caso, por lo que es simple la evaluación de esta competencia.
Durante el curso se hará uso intensivo del aula virtual tanto como repositorio de apuntes, ejercicios teóricos, boletines de prácticas y las correspondientes soluciones, como herramienta de comunicación para el envío de trabajos, foro de discusión y consulta de dudas.
La Evaluación en la Primera Oportunidad se realizará de forma continua a lo largo del semestre. La parte teórica pesará un 40% en la nota final, y la parte práctica pesará un 60%.
En la evaluación continua de la asignatura cada estudiante tendrá que realizar trabajos o pruebas que se propongan a lo largo del semestre. Para la evaluación se combinará presencialidad con uso de herramientas del aula virtual.
La propia dinámica de las clases y el tipo de pruebas realizadas implican el trabajo y evaluación de todas las competencias de la materia. Adicionalmente se proponen tareas que permiten sumar puntuación extra (variable según la programación de cada curso) para trabajar de manera específica las habilidades de comunicación (presentación de trabajos, preparación de material didáctico, etc.), la creatividad y la motivación por la calidad (desafíos de programación). A lo largo del curso se propone un número grande de tareas de este tipo con la idea que cada estudiante realice sólo algunas de ellas (un número mínimo para tomárselas en cuenta dependiente del tipo y dificultad de las propuestas de cada curso), de acuerdo con su planificación y carga de trabajo en cada momento.
Para aprobar la materia se tendrá que obtener una nota igual o mayor a 5 en la suma de las contribuciones de las actividades teóricas y prácticas.
La Evaluación en Segunda Oportunidad se basará en un proyecto de diseño y programación, que se pondrá a disposición del alumnado a comienzos del segundo semestre, ou en una prueba escrita.
Se considerará No Presentado a quien no se presente a ninguna de las pruebas de evaluación continua que se realicen a lo largo del semestre, ni a la pruebas de evaluación en Segunda Oportunidad.
En el sistema de evaluación no se distingue entre primeras matriculas y sucesivas.
Para los casos de rendimiento fraudulento de ejercicios o pruebas, se aplicarán las disposiciones del Reglamento para la evaluación del rendimiento académico de lo/as estudiantes y la revisión de las calificaciones.
En aplicación del Reglamento ETSE sobre plagio (aprobado por la Junta ETSE el 19/12/2019) la copia completa o parcial de cualquier ejercicio de práctica o teoría supondrá un suspenso en ambas ocasiones del curso, con un calificación de 0.0 en ambos casos.
El tiempo de estudio medio recomendable para el alumno es de unas 2 horas semanales. Adicionalmente, deberá contarse el tiempo dedicado a la realización de trabajos de prácticas y el proyecto, que estimamos en 4 h./semana más, totalizando 6 horas de estudio y trabajo personal, lo que junto con las actividades de docencia presencial nos llevan a 150h/semestre.
Se recomienda llevar al día el estudio de la teoría, la realización de prácticas y la resolución de problemas. Igualmente consideramos importante hacer un buen aprovechamiento de las tutorías para la discusión sobre problemas prácticos y como vía de resolución inmediata de dudas.
La docencia se va a impartir prioritariamente en gallego y se hará uso intensivo del aula virtual.
Xosé Manuel Pardo López
Coordinador/a- Departamento
- Electrónica y Computación
- Área
- Lenguajes y Sistemas Informáticos
- Teléfono
- 881816438
- Correo electrónico
- xose.pardo [at] usc.es
- Categoría
- Profesor/a: Titular de Universidad
Roi Santos Mateos
- Departamento
- Electrónica y Computación
- Área
- Lenguajes y Sistemas Informáticos
- Correo electrónico
- roi.santos [at] usc.es
- Categoría
- Profesor/a: Profesor Interino/a sustitución reducción docencia
Lunes | |||
---|---|---|---|
09:00-10:00 | Grupo /CLE_01 | Gallego | Aula A1 |
15:30-18:00 | Grupo /CLIL_04 | Gallego | Aula de Informática I7 |
Martes | |||
15:30-18:00 | Grupo /CLIL_05 | Castellano | Aula de Informática I7 |
Miércoles | |||
15:30-18:00 | Grupo /CLIL_01 | Castellano | Aula de Informática I7 |
Jueves | |||
09:00-10:00 | Grupo /CLE_01 | Gallego | Aula A1 |
15:30-18:00 | Grupo /CLIL_02 | Gallego | Aula de Informática I7 |
Viernes | |||
15:30-18:00 | Grupo /CLIL_03 | Gallego | Aula de Informática I7 |
15.01.2025 10:00-14:00 | Grupo /CLIL_01 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLIL_02 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLIL_03 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLIL_04 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLIL_05 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLE_01 | Aula A3 |
15.01.2025 10:00-14:00 | Grupo /CLIL_01 | Aula A4 |
15.01.2025 10:00-14:00 | Grupo /CLIL_02 | Aula A4 |
15.01.2025 10:00-14:00 | Grupo /CLIL_03 | Aula A4 |
15.01.2025 10:00-14:00 | Grupo /CLIL_04 | Aula A4 |
15.01.2025 10:00-14:00 | Grupo /CLIL_05 | Aula A4 |
15.01.2025 10:00-14:00 | Grupo /CLE_01 | Aula A4 |
25.06.2025 10:00-14:00 | Grupo /CLE_01 | Aula A1 |
25.06.2025 10:00-14:00 | Grupo /CLIL_01 | Aula A1 |
25.06.2025 10:00-14:00 | Grupo /CLIL_02 | Aula A1 |
25.06.2025 10:00-14:00 | Grupo /CLIL_03 | Aula A1 |
25.06.2025 10:00-14:00 | Grupo /CLIL_04 | Aula A1 |
25.06.2025 10:00-14:00 | Grupo /CLIL_05 | Aula A1 |