Información general


Tipo de asignatura: obligatoria

Coordinador: Adso Fernández Baena

trimestre: Segundo trimestre

Créditos: 4

Profesorado: 

Samuel Jarque Abizanda

Idiomas de impartición


Algunos materiales se proporcionarán en inglés.

Competencias


Competencias específicas
  • E6. Desarrollar videojuegos en lenguajes de programación de alto nivel en motores gráficos a partir de sus especificaciones.

Competencias generales
  • G3. 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.

  • G5. Desarrollar las habilidades de aprendizaje necesarias para acometer estudios posteriores con un alto grado de autonomía.

competencias transversales
  • T1. Comunicar en un tercer idioma, que será preferentemente el inglés, con un nivel adecuado de forma oral y por escrito y acorde con las necesidades que tendrán los graduados y graduadas.

Descripción


La asignatura Programación I supone la primera aproximación al diseño de algoritmos utilizando las bases de la programación orientada a objetos en el marco de la materia de Desarrollo. Se trabajan problemas de cierta complejidad, tanto para diseñar algoritmos nuevos como para testear y depurar adecuadamente algoritmos implementados. La asignatura consta de sesiones teóricas y sesiones de práctica. Para alcanzar los conocimientos de la asignatura se evalúa por un lado tres prácticas y por otro los conocimientos teóricos de manera individual.

Esta asignatura dispone de recursos metodológicos y digitales para hacer posible su continuidad en modalidad no presencial en el caso de ser necesario por motivos relacionados con la Covidien-19. De esta forma se asegurará la consecución de los mismos conocimientos y competencias que se especifican en este plan docente.

El Tecnocampus pondrá al alcance del profesorado y el alumnado las herramientas digitales necesarias para poder llevar a cabo la asignatura, así como guías y recomendaciones que faciliten la adaptación a la modalidad no presencial.

Resultados de aprendizaje


Al finalizar la asignatura los estudiantes deben ser capaces de:

E6.1. Diseñar la arquitectura del software de un videojuego de acuerdo a unas especificaciones.

Metodología de trabajo


La asignatura utiliza las siguientes metodologías de trabajo:

Clase magistral, cápsulas de vídeo, resolución de problemas, laboratorio en grupo reducido y aprendizaje colaborativo, y tutorías no presenciales.

Contenidos


Tema 1: Introducción y conceptos generales de la programación orientada a objetos (POO)

1.1. ¿Qué es la POO?

1.2. Programación estructurada vs POO

1.3. Porque utilizar la POO y sus beneficios

1.4. Características de la POO

1.5. Definición de objeto y clase

1.6. Elementos de una clase

Tema 2: Descomposición funcional y diseño descendente

2.1. Descomposición de problemas en subproblemas

2.2. Diagramas de flujo

2.3. Recorrido vs búsqueda

2.4. Paso de parámetros: entrada, salida, referencia y valor

Tema 3: Conceptos básicos de la programación orientada a objetos

3.1. Atributos objetuales, atributos de clase y constantes

3.2. Constructores e instanciar objetos

3.3. Métodos de una clase y sobrecarga

3.4. Diagramas de lenguaje unificado de modelado (UML)

3.5. Palabra clave "this"

3.6. Clases vs clases estáticas

3.7. Gestión de excepciones y debug dentro de una clase

3.8. Operadores

Tema 4: Herencia, interfaces y polimorfismo (jerarquía de clases)

4.1. Introducción, definición de herencia y ejemplos

4.2. Creación de clases base y derivadas

4.3. Clases "sealed" y "abstract"

4.4. interfaces

4.5. polimorfismo

Tema 5: Estructuras de datos

5.1. listas dinámicas

5.2. Listas ordenadas (Key / value)

5.3. Colas (FIFO) y stacks (LIFO)

5.4. Tablas de hash

5.5. grafos

Actividades de aprendizaje


Con el objetivo de recoger evidencia del logro de los resultados de aprendizaje esperados se realizarán las siguientes actividades de carácter evaluativo (relacionadas con todas las competencias comunes):

A1. Prácticas de laboratorio 1: Trabajar con matrices y análisis descendente (Evidencia del resultado de aprendizaje E6.1)

En esta práctica el estudiante deberá aplicar los conceptos explicados en las clases teóricas sobre los temas 1 y 2, más concreto, la descomposición funcional y diseño descendente, además de la diferencia entre recorrido y búsqueda, será necesario diseñar el diagrama de flujo del juego. También aplicará los conceptos explicados en las clases teóricas introductorias sobre la orientación a objetos.

La actividad se realizará por parejas utilizando un repositorio Git con un proyecto inicial con clases creadas donde será necesario rellenar parte del código. Actividad no recuperable.

A2. Prácticas de laboratorio 2: Implementar clases y trabajar con objetos (Evidencia del resultado de aprendizaje E6.1)

En esta práctica el estudiante deberá aplicar los conceptos explicados en las clases teóricas sobre la programación orientada a objetos, más en concreto, los temas 2 y 3 del temario teórico. Además el estudiante utilizará clases de C # para la lectura y escritura de archivos guardados en el disco duro del ordenador. El estudiante deberá seguir un diagrama UML para la creación de las diferentes clases y deberá diseñar un diagrama de flujo del juego.

La actividad se realizará por parejas utilizando un repositorio Git con un proyecto inicial donde habrá un código inicial y además, habrá que añadir nuevas clases. Actividad no recuperable.

A3. Prácticas de laboratorio 3: Conceptos de herencia (Evidencia del resultado de aprendizaje E6.1)

En esta tercera práctica del curso, el estudiante tendrá que aplicar los conceptos de herencia, interfaces y polimorfismo (jerarquía de clases) explicados en los temas 4 y 5 del curso. El estudiante tendrá que diseñar un diagrama UML de las clases utilizadas y un diagrama de flujo del juego.

La actividad se realizará por parejas utilizando un repositorio Git con un proyecto inicial donde habrá un código inicial y además, habrá que añadir nuevas clases. Actividad no recuperable.

A4. Ejercicios en clase: Cuestionarios teóricos (Evidencia de todos los resultados de aprendizaje)

Al inicio de algunas clases se realizarán varios test individuales de preguntas cortas de los conceptos teóricos trabajados. Actividad no recuperable.

A5. Ejercicios en casa: Ejercicios prácticos cortos (Evidencia de todos los resultados de aprendizaje)

Varios ejercicios prácticos en el aula virtual, a realizar en pareja, de los conceptos teóricos trabajados. Actividad no recuperable.

A6. Examen práctico final (Evidencia de todos los resultados de aprendizaje)

Examen práctico individual a partir de un proyecto inicial será necesario resolver ejercicios o problemas de los conceptos teóricos y prácticos de toda la asignatura.

Criterios generales de las actividades:

  • El profesor presentará un enunciado para cada actividad y los criterios de evaluación y / o rúbricas.
  • El profesor informará de las fechas y formato de la entrega de la actividad (se deberá realizar la correspondiente entrega electrónica de la práctica junto con las explicaciones pertinentes de la misma).

Sistema de evaluación


La nota de cada alumno se calculará siguiendo los siguientes porcentajes:

A1. Prácticas de laboratorio 1: Trabajar con matrices y análisis descendente 12%

A2. Prácticas de laboratorio 2: Implementar clases y trabajar con objetos 12%

A3. Prácticas de laboratorio 3: Conceptos de herencia 12%

A4. Ejercicios en clase: Cuestionarios teóricos 5%

A5. Ejercicios en casa: Ejercicios prácticos cortos 9%

A6. Examen práctico final 50%

Nota final = A1·0,12 + A2·0,12 + A3·0,12 + A4·0,05 + A5·0,09 + A6·0.50

Consideraciones:

  • Es necesario obtener una nota superior o igual a 5 en el examen final A6 para aprobar la asignatura.
  • Una actividad no entregada o entregada con retraso y sin justificación (citación judicial o asunto médico) cuenta como un 0. 
  • Es potestativo de los docentes aceptar o no entregas fuera de los plazos que se indiquen por las actividades A1, A2 y A3, y siempre antes del examen final. En caso de que estas entregas fuera de plazo se acepten, es potestativo del docente decidir si aplica alguna penalización y la cuantía de la misma.
  • Es responsabilidad del alumno evitar el plagio en todas sus formas. En el caso de detectar un plagio, independientemente de su alcance, en alguna actividad corresponderá a tener una nota de 0. Además, el profesor comunicará a la Jefe de estudios la situación para que se tomen medidas aplicables en materia de régimen sancionador .

recuperación:

  • Sólo se pueden presentar en la recuperación a los estudiantes que se presenten al examen final y que no superen la calificación mínima (5) en la nota final.
  • Las actividades A1, A2, A3, A4 y A5 no pueden recuperarse.
  • La nota del examen de recuperación sustituye sólo a la nota de la actividad A6.

Bibliografía


Básico

Clark, Dan (2011) Beginning C # Object-Oriented Programming. Apress.

Fagerberg, Jonas (2015) C # for Beginners: The Tactical Guidebook: Learn Csharp by Coding. CreateSpace Independent Publishing Platform.

Meyer, Bertrand (1997) Object-Oriented Software Construction. Prentice Hall, segunda edición.

Versión española: Construcción de software orientada a objetos, Prentice Hall Iberia, 1999.

Chaudhary, Harry H. (2014) C # Programming: Step By Step Beginner 's To Expertos Edition. CreateSpace LLC USA.