Última revisión realizada: 02/12/2022

Denominación de la asignatura: Fundamentos de Programación
Grado al que pertenece: Grado en Matemática Computacional
Créditos ECTS: 6
Curso y cuatrimestre en el que se imparte: Primer curso, primer cuatrimestre
Carácter de la asignatura: Básica
Materia a la que pertenece: Fundamentos de Informática

Presentación

Las prestaciones de las computadoras actuales, cuyas capacidades se incrementan día a día, permiten unas posibilidades de cálculo cada vez mayores. Las técnicas de programación que se estudian en esta asignatura son una herramienta básica para la resolución de problemas de muy diversa índole. La materia sirve de apoyo a otras disciplinas resolviendo problemas matemáticos, poniendo en práctica algoritmos que resuelven cualquier tipo de problema matemático, algoritmos criptográficos, computación o análisis de grandes conjuntos de datos para obtener conclusiones, tendencias, etc. Las aplicaciones de la resolución de problemas mediante un programa se puede decir que no tienen límite y que, por tanto, se considera imprescindible el conocimiento de las técnicas de programación utilizando una computadora.

En esta asignatura se estudian las construcciones y técnicas básicas que permiten el desarrollo de programas escritos en un lenguaje determinado para resolver un problema concreto. Es necesario comprender los conceptos de abstracción y modularidad, ya que permiten elaborar programas más complejos y resolver problemas que necesitan descomponerse en partes que se asocian al concepto de función o módulo incluyendo el manejo de ficheros. Las funciones o módulos se ejecutan mediante una secuencia de control de flujo determinada para dar lugar a la solución final del problema compuesto. Además, se estudia cómo resolver un problema mediante el concepto de recursividad, en el que un algoritmo se llama así mismo, aporta mayor sencillez y visibilidad a la hora de resolver un algoritmo, a la vez que se compara en prestaciones con la versión iterativa de este. Por último, es necesario aprender a verificar la corrección de un programa que determine una futura ejecución correcta. Ante cualquier conjunto de datos de entrada posible se debe garantizar el o los resultados esperados.

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 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.
  • CB3: Que los estudiantes tengan la capacidad de reunir e interpretar datos relevantes (normalmente dentro de su área de estudio) para emitir juicios que incluyan una reflexión sobre temas relevantes de índole social, científica o ética.
  • CB4: Que los estudiantes puedan transmitir información, ideas, problemas y soluciones a un público tanto especializado como no especializado.
  • CB5: Que los estudiantes hayan desarrollado aquellas habilidades de aprendizaje necesarias para emprender estudios posteriores con un alto grado de autonomía.

Competencias generales

  • CG6: Capacidad de presentar ideas, procedimientos o redactar informes, así como asesorar a personas u organizaciones en su ámbito de especialización en matemática computacional.

Competencias específicas

  • CE10: Capacidad de programar para resolver problemas relacionados con la matemática aplicada.
  • CE12: Ser capaz de conocer los fundamentos de la programación de ordenadores y su aplicación para la resolución de problemas.

Competencias transversales

  • CT1: Aplicar las nuevas tecnologías como herramientas para el intercambio comunicacional en el desarrollo de procesos de indagación y de aprendizaje.
  • CT2: Desarrollar habilidades de comunicación, para redactar informes y documentos, o realizar atractivas y eficaces presentaciones de los mismos.

Tema 1. Introducción a la programación

  • Introducción y objetivos
  • Estructura básica de un ordenador
  • Software
  • Lenguajes de programación
  • Ciclo de vida de una aplicación informática
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 2. Diseño de algoritmos

  • Introducción y objetivos
  • La resolución de problemas
  • Técnicas descriptivas
  • Elementos y estructura de un algoritmo
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 3. Elementos de un programa

  • Introducción y objetivos
  • Origen y características del lenguaje C
  • El entorno de desarrollo
  • Concepto de programa
  • Tipos de datos fundamentales
  • Operadores
  • Expresiones
  • Sentencias
  • Entrada y salida de datos
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 4. Sentencias de control

  • Introducción y objetivos
  • Sentencias
  • Bifurcaciones
  • Bucles
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 5. Abstracción y modularidad: funciones

  • Introducción y objetivos
  • Diseño modular
  • Concepto de función y utilidad
  • Definición de una función
  • Flujo de ejecución en la llamada de una función
  • Prototipo de una función
  • Devolución de resultados
  • Llamada a una función: parámetros
  • Paso de parámetros por referencia y por valor
  • Ámbito identificador
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 6. Estructuras de datos estáticas

  • Introducción y objetivos
  • Arrays
  • Matrices. Poliedros
  • Búsqueda y ordenación
  • Cadenas. Funciones de E/S para cadenas
  • Estructuras. Uniones
  • Nuevos tipos de datos
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 7. Estructuras de datos dinámicas: punteros

  • Introducción y objetivos
  • Concepto. Definición de puntero
  • Operadores y operaciones con punteros
  • Arrays de punteros
  • Punteros y arrays
  • Punteros a cadenas
  • Punteros a estructuras
  • Indirección múltiple
  • Punteros a funciones
  • Paso de funciones, estructuras y arrays como parámetros de funciones
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 8. Ficheros

  • Introducción y objetivos
  • Conceptos básicos
  • Operaciones con ficheros
  • Tipos de ficheros
  • Organización de los ficheros
  • Introducción a los ficheros C
  • Manejo de ficheros
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 9. Recursividad

  • Introducción y objetivos
  • Definición de recursividad
  • Tipos de recursión
  • Ventajas e inconvenientes
  • Consideraciones
  • Conversión recursivo-iterativa
  • La pila de recursión
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Tema 10. Prueba y documentación

  • Introducción y objetivos
  • Pruebas de programas
  • Prueba de la caja blanca
  • Prueba de la caja negra
  • Herramientas para realizar las pruebas
  • Documentación de programas
  • Referencias bibliográficas
  • Cuaderno de ejercicios

Las actividades formativas de la asignatura se han elaborado con el objetivo de adaptar el proceso de aprendizaje a las diferentes capacidades, necesidades e intereses de los alumnos.

Las actividades formativas de esta asignatura son las siguientes:

  • Trabajo. Se trata de actividades de diferentes tipos: reflexión, análisis de casos, prácticas, etc.
  • Comentario de lecturas. Es un tipo de actividad muy concreto que consiste en el análisis de textos de artículos de autores expertos en diferentes temas de la asignatura.
  • Casos prácticos. Situarán al alumno ante situaciones reales que tendrán que analizar y tras ello tomar decisiones, evaluar consecuencias y alternativas.
  • Participación en eventos. Son eventos programados todas las semanas del cuatrimestre: sesiones presenciales virtuales, foros de debate.
Descargar programación

Estas actividades formativas prácticas se completan, por supuesto, con estas otras:

  • Estudio personal
  • Tutorías. Las tutorías se pueden articular a través de diversas herramientas y medios. Durante el desarrollo de la asignatura, el profesor programa tutorías en días concretos para la resolución de dudas de índole estrictamente académico a través de las denominadas “sesiones de consultas”. Como complemento de estas sesiones se dispone también del foro “Pregúntale al profesor de la asignatura” a través del cual se articulan algunas preguntas de alumnos y las correspondientes respuestas en el que se tratan aspectos generales de la asignatura. Por la propia naturaleza de los medios de comunicación empleados, no existen horarios a los que deba ajustarse el alumno.
  • Examen final presencial

Las horas de dedicación a cada actividad se detallan en la siguiente tabla:

ACTIVIDADES FORMATIVAS HORAS POR ASIGNATURA % PRESENCIAL
Sesiones presenciales virtuales 15 horas 100%
Recursos didácticos audiovisuales 6 horas 0
Estudio del material básico 52 horas 0
Lectura del material complementario 25 horas 0
Trabajos, casos prácticos y test de evaluación 17 horas 0
Sesiones prácticas de laboratorio virtual 12 horas 16,7%
Tutorías 16 horas 30%
Trabajo colaborativo 7 horas 0
Total 150 horas -

Bibliografía básica

Recuerda que la bibliografía básica es imprescindible para el estudio de la asignatura. Cuando se indica que no está disponible en el aula virtual, tendrás que obtenerla por otros medios: librería UNIR, biblioteca...

Los textos necesarios para el estudio de la asignatura han sido elaborados por UNIR y están disponibles en formato digital para consulta, descarga e impresión en el aula virtual.

Además, en estos temas deberás estudiar la siguiente bibliografía:

Manual básico de la asignatura

Eslava, V. J. (2016). Aprendiendo a programar paso a paso con C. Bubok. Manual autoeditado.

Bibliografía complementaria

  • Brookshear, J. G. (2012). Computer Science: An Overview. Massachusetts: Pearson/Addison-Wesley. Recuperado de http://larrr.com/wp-content/uploads/2014/08/ComputerS.pdf
  • Cabanes, N. Curso Fundamentos de programación en C. Recuperado de http://www.nachocabanes.com/
  • Ceballos, F. J. (2015). Curso de programación C/C++. Madrid: Ra-Ma Editorial.
  • Cerrada, J. A. y Collado, M. E. (2010). Fundamentos de Programación. Madrid: Editorial Universitaria Ramón Areces.
  • Dixit, J. B. (2009). Computer Fundamentals and Programming in C. New Delhi: Laxmi Publications
  • Jiménez, M. y Otero, B. (2013). Fundamentos de ordenadores: programación en C. Barcelona: Editorial Universitat Politècnica de Catalunya.
  • Joyanes, L. (2008). Fundamentos de la programación. Algoritmos y Estructura de Datos, 4ª Edición. Madrid: McGraw-Hill.
  • Juganaru, M. (2014). Introducción a la programación. Ciudad de México: Grupo Editorial Patria.
  • Linge, S. y Langtangen, H. P. (2020). Programming for computations - python. Springer.
  • Peña, R. (2005). Diseño de Programas: Formalismo y Abstracción. Madrid: Pearson.
  • Rodríguez, M. A. (1991). Metodología de programación a través de pseudocódigo. Madrid: McGraw-Hill.
  • Romney, M. B. y Steinbart, P. J. (2011). Accounting Information Systems. New York: Prentice Hall.
  • Weeks, M. (2020). Programming fundamentals using MATLAB. Mercury Learning & Information.

El sistema de calificación se basa en la siguiente escala numérica:

0 - 4, 9 Suspenso (SS)
5,0 - 6,9 Aprobado (AP)
7,0 - 8,9 Notable (NT)
9,0 - 10 Sobresaliente (SB)

La calificación se compone de dos partes principales:

El examen se realiza al final del cuatrimestre y es de carácter PRESENCIAL y OBLIGATORIO. Supone el 60% de la calificación final y para que la nota obtenida en este examen se sume a la nota final, es obligatorio APROBARLO.

La evaluación continua supone el 40% de la calificación final. Este 40% de la nota final se compone de las calificaciones obtenidas en las diferentes actividades formativas llevadas a cabo durante el cuatrimestre.

Ten en cuenta que la suma de las puntuaciones de las actividades de la evaluación continua permite que realices las que prefieras hasta conseguir el máximo puntuable mencionado en la programación semanal. En ella se detalla la calificación máxima de cada actividad o evento concreto puntuables.

Sistema de evaluación Ponderación min - max
Participación del estudiante (sesiones, foros, tutorías) 5% - 10%
Trabajos, proyectos, laboratorios/talleres y casos 10% - 30%
Test de evaluación 5% - 10%
Examen final presencial 60% - 60%

Luis Pedraza Gomara

Formación académica: Doctor en Automática y Robótica por la Universidad Politécnica de Madrid. Máster en Formación del Profesorado de Educación Secundaria por la Universidad Internacional de La Rioja. Máster en Economía Digital e Industrias Creativas por la Escuela de Organización Industrial. Ingeniero Industrial especializado en Automática y Electrónica por la Universidad Politécnica de Madrid.

Experiencia: Ha participado en diferentes proyectos nacionales e internacionales relacionados con la automatización industrial, los robots caminantes y los robots móviles inteligentes, tanto en el Instituto de Automática Industrial del CSIC, como en la División de Ingeniería de Sistemas y Automática de la Universidad Politécnica de Madrid. Tras la finalización de sus Tesis Doctoral que obtuvo Premio Extraordinario de la Universidad Politécnica de Madrid, desempeñó labores docentes en la Universidad Carlos III de Madrid en las áreas de visión por computador, automatización, y control inteligente. También ha trabajado como ingeniero en la startup tecnológica Biicode. Actualmente desempeña tareas docentes, de gestión e investigación en UNIR.

Líneas de investigación: Su área de investigación principal se centra en la robótica móvil, y más concretamente en problemas de localización y modelización del entorno. También le interesan los problemas relacionados con la visualización de datos. Ha publicado artículos en revistas de investigación indexadas y ha participado en diferentes congresos nacionales e internacionales.

Obviamente, al tratarse de formación online puedes organizar tu tiempo de estudio como desees, siempre y cuando vayas cumpliendo las fechas de entrega de actividades, trabajos y exámenes. Nosotros, para ayudarte, te proponemos los siguientes pasos:

  1. Desde el Campus virtual podrás acceder al aula virtual de cada asignatura en la que estés matriculado y, además, al aula virtual del Curso de introducción al campus virtual. Aquí podrás consultar la documentación disponible sobre cómo se utilizan las herramientas del aula virtual y sobre cómo se organiza una asignatura en la UNIR y también podrás organizar tu plan de trabajo con tu tutor personal.
  2. Observa la programación semanal. Allí te indicamos qué parte del temario debes trabajar cada semana.
  3. Ya sabes qué trabajo tienes que hacer durante la semana. Accede ahora a la sección Temas del aula virtual. Allí encontrarás el material teórico y práctico del tema correspondiente a esa semana.
  4. Comienza con la lectura de las Ideas clave del tema. Este resumen te ayudará a hacerte una idea del contenido más importante del tema y de cuáles son los aspectos fundamentales en los que te tendrás que fijar al estudiar el material básico. Consulta, además, las secciones del tema que contienen material complementario.
  5. Dedica tiempo al trabajo práctico (sección Actividades y Test). En la programación semanal te detallamos cuáles son las actividades correspondientes a cada semana y qué calificación máxima puedes obtener con cada una de ellas.
  6. Te recomendamos que participes en los eventos del curso (sesiones presenciales virtuales, foros de debate…). Para conocer la fecha concreta de celebración de los eventos debes consultar las herramientas de comunicación del aula vitual. Tu profesor y tu tutor personal te informarán de las novedades de la asignatura.

En el aula virtual del Curso de introducción al campus virtual encontrarás siempre disponible la documentación donde te explicamos cómo se estructuran los temas y qué podrás encontrar en cada una de sus secciones.

Recuerda que en el aula virtual del Curso de introducción al campus virtual puedes consultar el funcionamiento de las distintas herramientas del aula virtual: Correo, Foro, Sesiones presenciales virtuales, Envío de actividades, etc.

Ten en cuenta estos consejos...

  • Sea cual sea tu plan de estudio, accede periódicamente al aula Virtual, ya que de esta forma estarás al día de las novedades del curso y en contacto con tu profesor y con tu tutor personal.
  • Recuerda que no estás solo: consulta todas tus dudas con tu tutor personal utilizando el correo electrónico. Además, siempre puedes consultar tus dudas sobre el temario en los foros que encontrarás en cada asignatura (Pregúntale al profesor).
  • ¡Participa! Siempre que te sea posible accede a los foros de debate. El intercambio de opiniones, materiales e ideas nos enriquece a todos.
  • Y ¡recuerda!, estás estudiando con metodología on line: tu esfuerzo y constancia son imprescindibles para conseguir buenos resultados. ¡No dejes todo para el último día!