Guía Docente 2019-20
FUNDAMENTOS DE PROGRAMACIÓN

DATOS BÁSICOS DE LA GUÍA DOCENTE:

Materia: FUNDAMENTOS DE PROGRAMACIÓN
Identificador: 31355
Titulación: GRADUADO EN DISEÑO Y DESARROLLO DE VIDEOJUEGOS. 2013 (BOE 28/03/2014)
Módulo: INFORMÁTICA
Tipo: MATERIA BASICA
Curso: 1 Periodo lectivo: Segundo Cuatrimestre
Créditos: 6 Horas totales: 150
Actividades Presenciales: 63 Trabajo Autónomo: 87
Idioma Principal: Castellano Idioma Secundario: Inglés
Profesor: ECHEVERRIA OCHOA, JORGE (T) Correo electrónico: jecheverria@usj.es

PRESENTACIÓN:

La asignatura supone la primera toma de contacto del alumno con la programación informática en la universidad. Se trata de un pilar fundamental para el buen desarrollo académico y profesional. En el mundo profesional, se trata de uno de los campos en el mundo de la informática de mayor dimensión tanto social como económicamente.

El alumno aprenderá a analizar y resolver problemas de tratamiento de información de complejidad baja o media y a construir algoritmos que los resuelvan. Para ello el alumno deberá aprender a representar la información asociada a cada problema y deberá ser capaz de diseñar y documentar las acciones algorítmicas que los resuelvan de forma eficaz y eficiente.

El alumno aprenderá a codificar los algoritmos utilizando para ello el lenguaje de programación C.

COMPETENCIAS PROFESIONALES A DESARROLLAR EN LA MATERIA:

Competencias Generales de la titulación G05 Habilidad para comunicar en lengua castellana e inglesa temas profesionales en forma oral y escrita.
G07 Capacidad para manejar diferentes modelos complejos de conocimiento mediante un proceso de abstracción y su aplicación al planteamiento y resolución de problemas.
Competencias Específicas de la titulación E03 Capacidad para desarrollar el uso y la programación de ordenadores, sistemas operativos, bases de datos y programas informáticos y su aplicación en el desarrollo de videojuegos.
E04 Capacidad para comprender y dominar los conceptos fundamentales de matemática discreta, lógica, algorítmica y complejidad computacional, y su aplicación para la resolución de problemas propios de la ingeniería.
E05 Capacidad para programar aplicaciones de forma robusta, correcta, y eficiente, eligiendo el paradigma y los lenguajes de programación más adecuados, aplicando los conocimientos sobre procedimientos algorítmicos básicos y usando los tipos y estructuras de datos más apropiados.
Resultados de Aprendizaje R01 Plantear y diseñar soluciones algorítmicas a problemas concretos.
R02 Utilizar entornos y herramientas de desarrollo con los que implementar los algoritmos diseñados.
R03 Identificar, localizar y corregir los errores que puedan aparecer en las soluciones obtenidas para los problemas planteados.
R04 Implementar de manera eficiente algoritmos.
R05 Comentar código fuente con calidad.
R06 Documentar correctamente trabajos de programación.

REQUISITOS PREVIOS:

No es necesario poseer ningún requisito previo. Es recomendable tener un buen conocimiento de los contenidos matemáticos elementales.

PROGRAMACIÓN DE LA MATERIA:

Contenidos de la materia:

1 - Introducción
    1.0 - Introducción
    1.1 - Origen del lenguaje
    1.2 - Características del lenguaje
    1.3 - Compilación y ejecución
    1.4 - Estructura de un programa
2 - Variables y operadores
    2.1 - Variables y datos
    2.2 - Constantes
    2.3 - Palabras clave
    2.4 - Comentarios
    2.5 - Operadores
    2.6 - Entrada/Salida
    2.7 - Directivas
    2.8 - Variables y memoria
3 - Control de flujo
    3.1 - if
    3.2 - for
    3.3 - while/do...while
    3.4 - switch
4 - Algoritmia y pseudocódigo
    4.1 - Fases de desarrollo
    4.2 - Diagramas
    4.3 - Estructuras básicas
    4.4 - Traza
5 - Funciones
    5.1 - Introducción
    5.2 - Ventajas
    5.3 - Carcaterísitcas
    5.4 - Ámbito
    5.5 - Modos de almacenamiento
6 - Array y punteros
    6.1 - Arrays
    6.2 - Punteros
    6.3 - Arrays y punteros
    6.4 - Operaciones con vectores
    6.5 - Vectores como parámetros
    6.6 - Cadenas
7 - Estructuras y memoria dinámica
    7.1 - Introducción
    7.2 - Estructuras
    7.3 - Uniones
    7.4 - Enumeracioes
    7.5 - Datos propios
    7.6 - Memoria dinámica
8 - Funciones complejas
    8.1 - Recursividad
    8.2 - Estructuras y funciones
    8.3 - Punteros a funciones
    8.4 - Preprocesado
9 - Entrada y salida
    9.1 - Entrada y salida formateada
    9.2 - Ficheros

La planificación de la asignatura podrá verse modificada por motivos imprevistos (rendimiento del grupo, disponibilidad de recursos, modificaciones en el calendario académico, etc.) y por tanto no deberá considerarse como definitiva y cerrada.


METODOLOGÍAS Y ACTIVIDADES DE ENSEÑANZA Y APRENDIZAJE:

Metodologías de enseñanza-aprendizaje a desarrollar:

 

a)    Sesiones teóricas

El profesor expondrá apoyado en recursos TIC (portátil, proyector, Internet) y la pizarra la mayor parte teórica básica de la asignatura. El material utilizado en cada sesión estará siempre en la PDU con antelación para que los alumnos puedan realizar una lectura previa. Se aconseja encarecidamente a los alumnos leer con anterioridad los temas a tratar en clase. 

b)    Aprendizaje basado en resolución de ejercicios y problemas

Los contenidos teóricos se apoyan en la resolución de problemas que serán propuestos por el profesor y resueltos por los alumnos. Estos problemas serán solucionados, en su mayoría, por los alumnos como parte de su trabajo autónomo en horario fuera de las clases lectivas. De forma puntual algunos problemas se resolverán en las clases presenciales previa petición de los alumnos.

c)     Aprendizaje basado la solución de prácticas y proyectos

Una parte muy importante del aprendizaje  de la asignatura, y de la nota, se conseguirá con la resolución de las cuatro prácticas a resolver de manera individual por los alumnos. Se proporcionará a los alumnos los enunciados de las prácticas y se solicitará su entrega en un tiempo prudencial. Cada práctica estará centrada en un bloque de la temática de la asignatura, sin olvidar el carácter continuo del aprendizaje de la misma. La resolución correcta de estas prácticas, junto con los problemas citados en el apartado b, preparará al alumno para adquirir con una gran eficiencia las competencias propias de la asignatura.

d)    Sesiones de tutoría

Los estudiantes podrán preguntar al profesor aquellas dudas que no han podido ser resueltas durante las clases o que hayan surgido en su tiempo dedicado al trabajo autónomo. Para las sesiones de tutoría se podrán utilizar los distintos medios tecnológicos útiles para dicho fin.

El horario de tutorías será lunes de 17:00 a 18:00

e)    Metodología CLIC apoyado en el concepto de Gamificación

Se desarrollara un proceso de gamificación donde los pilares principales serán los siguientes componentes:

Para ello se hará uso de software diseñado para aprender a programar mediante la utilización de videojuegos.

Volumen de trabajo del alumno:

Modalidad organizativa Métodos de enseñanza Horas estimadas
Actividades Presenciales
Clase magistral 21
Casos prácticos 8
Resolución de prácticas, problemas, ejercicios etc. 13
Exposiciones de trabajos de los alumnos 2
Prácticas de laboratorio 15
Actividades de evaluación 4
Trabajo Autónomo
Asistencia a tutorías 3
Estudio individual 36
Preparación de trabajos individuales 40
Tareas de investigación y búsqueda de información 4
Lectura libre 4
Horas totales: 150

SISTEMA DE EVALUACIÓN:

Obtención de la nota final:

Pruebas escritas: 40 %
Trabajos individuales: 40 %
Prueba final: 15 %
Participación y evaluación continua: 5 %
TOTAL 100 %

*Las observaciones específicas sobre el sistema de evaluación serán comunicadas por escrito a los alumnos al inicio de la materia.

BIBLIOGRAFÍA Y DOCUMENTACIÓN:

Bibliografía básica:

Kerningham, N.B., Ritchie, M.D. El lenguaje de programación C. ISBN: 9688802050
Joyanes Aguilar, L., Zahonero Martínez Ignacio. Programación en C. ISBN: 8448198441

Bibliografía recomendada:

Byron Gottfrieg. Programación en C. ISBN: 8448198468
Kerningham, N.B., Pick, R. La práctica de la programación
G. Brassard, P. Bratley. Fundamentos de Algoritmia ISBN: 848966000X
Javier García de Jalón y otros, Aprenda lenguaje ANSI C como si estuviera en primero
Andrés Marzal, Introducción al lenguaje C
Carlos López, Programación en C

Páginas web recomendadas:

Site con información sobre programación en C ý C http://www.cprogramming.com/
Página con compiladores de C ý C http://www.thefreecountry.com/compilers/cpp.shtml
Todo tipo de información relacionada con el lenguaje C http://www.elrincondelc.com/nuevorincon/index.php