Universidad Católica San Pablo
Escuela Profesional de
Ciencia de la Computación
SILABO
CS111. Programaciónn de Video Juegos (Obligatorio)
2022-II
1. DATOS GENERALES
1.1 CARRERA PROFESIONAL : Ciencia de la Computación
1.2 ASIGNATURA : CS111. Programaciónn de Video Juegos
1.3 SEMESTRE ACADÉMICO : 1er Semestre.
1.4 PREREQUISITO(S) :
1.5 CARÁCTER : Obligatorio
1.6 HORAS : 2 HT; 4HP;
1.7 CRÉDITOS : 4
1.8 MODALIDAD : Presencial
2. DOCENTE
Dr. Graciela Lecireth Meza Lovón
Dr. Ciencia de la Computación, Universidad Nacional San Agustı́n, Perú, 2016.
Mag. Ciencia de la Computación, UFMS-MS, Brasil, 2007.
Prof. Bachiller en Ingenierı́a Informática, Universidad Católica San Pablo, Perú, 2004.
Mg. Kelly Vizconde la Motta
Mag. Mag. Ciencia de la Computación, Universidad Católica San Pablo, Perú, 2019.
Prof. Ingenieria de Sistemas, Universidad Católica Santa Marı́a, Perú, 2020.
3. FUNDAMENTACIÓN DEL CURSO
Este es el primer curso en la secuencia de los cursos introductorios a la Ciencia de la Computación. En este curso se
pretende cubrir los conceptos señalados por la Computing Curricula IEEE-CS/ACM 2013, bajo el enfoque orientado
a objetos. La programación es uno de los pilares de la Ciencia de la Computación; cualquier profesional del Área,
necesitará programar para concretizar sus modelos y propuestas. Este curso ofrece una introdución a los participantes
en los conceptos fundamentales de este área. Los tópicos incluyen tipos de datos, estructuras de control, funciones,
listas, recursividad, la mecánica de la ejecución, pruebas, depuración y programación orientada a objetos. El curso
finaliza con la implementación de un video juego donde se apliquen los conceptos aprendidos.
4. SUMILLA
1. Historia de los Lenguajes de Programación 2. Conceptos Fundamentales de Programación3. Algoritmos y Estructuras
de Datos fundamentales4. Programación orientada a objetos5. Programación de Video Juegos
5. OBJETIVO GENERAL
Introducir los conceptos fundamentales de programación durante la construcción de un video juego.
Desarrollar su capacidad de abstracción, utilizar un lenguaje de programación orientado a objetos.
1
6. CONTRIBUCIÓN A LA FORMACIÓN PROFESIONAL Y FORMACIÓN GENERAL
Esta disciplina contribuye al logro de los siguientes resultados de la carrera:
a) Aplicar conocimientos de computación y de matemáticas apropiadas para la disciplina. (Usar)
b) Analizar problemas e identificar y definir los requerimientos computacionales apropiados para su solución. (Usar)
i) Utilizar técnicas y herramientas actuales necesarias para la práctica de la computación. (Usar)
7. COMPETENCIAS ESPECÍFICAS DE COMPUTACIÓN
Esta disciplina contribuye a la formación de las siguientes competencias del área de computación (IEEE):
C1. La comprensión intelectual y la capacidad de aplicar las bases matemáticas y la teorı́a de la informática (computer
science).⇒ Outcome a
C2. Capacidad para tener una perspectiva crı́tica y creativa para identificar y resolver problemas utilizando el pensa-
miento computacional.⇒ Outcome b
C5. Capacidad para implementar algoritmos y estructuras de datos en el software.⇒ Outcome b
C4. Una comprensión del hardware de la computadora desde la perspectiva del software, por ejemplo, el uso del
procesador, memoria, unidades de disco, pantalla, etc.⇒ Outcome i
8. CONTENIDOS
UNIDAD 1: Historia de los Lenguajes de Programación (5)
Competencias: C1
CONTENIDO OBJETIVO GENERAL
Perspectiva histórica de los lenguajes de programa- Identificar importantes tendencias en la historia del
ción. campo de la computación[Familiarizarse]
Conceptos de Programación tradicionales. Discutir el contexto histórico de los paradigmas de
diversos lenguajes de programación[Familiarizarse]
Lecturas: [Brookshear, 2011]
2
UNIDAD 2: Conceptos Fundamentales de Programación()
Competencias: C1,C2
CONTENIDO OBJETIVO GENERAL
Sintaxis y semántica básica de un lenguaje de alto Analiza y explica el comportamiento de programas
nivel. simples que involucran estructuras fundamentales
de programación variables, expresiones, asignacio-
Variables y tipos de datos primitivos (ej., numeros, nes, E/S, estructuras de control, funciones, paso de
caracteres, booleanos) parámetros, y recursividad[Evaluar]
Expresiones y asignaciones. Identifica y describe el uso de tipos de datos primi-
Operaciones básicas I/O. tivos[Familiarizarse]
Estructuras de control condicional e iterativas. Escribe programas que usan tipos de datos primiti-
vos[Usar]
Funciones definidas por el usuario.
Modifica y expande programas cortos que usen es-
Paso de funciones y parámetros. tructuras de control condicionales e iterativas ası́ co-
mo funciones[Usar]
Concepto de recursividad.
Diseña, implementa, prueba, y depura un programa
que usa cada una de las siguientes estructuras de
datos fundamentales: cálculos básicos, E/S simple,
condicional estándar y estructuras iterativas, defini-
ción de funciones, y paso de parámetros[Usar]
Escoje estructuras de condición y repetición ade-
cuadas para una tarea de programación da-
da[Familiarizarse]
Describe el concepto de recursividad y da ejemplos
de su uso[Evaluar]
Identifica el caso base y el caso general de un proble-
ma basado en recursividad[Familiarizarse]
Lecturas: [Guttag, 2013], [Zelle, 2010]
3
UNIDAD 3: Algoritmos y Estructuras de Datos fundamentales()
Competencias: C1,C2,C5
CONTENIDO OBJETIVO GENERAL
Algoritmos numéricos simples, tales como el cálculo Implementar algoritmos numéricos básicos[Usar]
de la media de una lista de números, encontrar el
mı́nimo y máximo. Implementar algoritmos de busqueda simple y ex-
plicar las diferencias en sus tiempos de compleji-
Algoritmos de ordenamiento de peor caso cuadrático dad[Evaluar]
(selección, inserción)
Ser capaz de implementar algoritmos de ordenamien-
Algoritmos de ordenamiento con peor caso o caso to comunes cuádraticos y O(N log N)[Usar]
promedio en O(N lg N)
Discutir el tiempo de ejecución y eficiencia de me-
Algoritmos de búsqueda secuencial y binaria. moria de los principales algoritmos de ordenamiento
y búsqueda.
Discutir factores otros que no sean eficiencia compu-
tacional que influyan en la elección de algoritmos,
tales como tiempo de programación, mantenibilidad,
y el uso de patrones especı́ficos de la aplicación en
los datos de entrada[Familiarizarse]
Demostrar habilidad para evaluar algoritmos, para
seleccionar de un rango de posibles opciones, para
proveer una justificación por esa selección,y para im-
plementar el algoritmo en un contexto en especı́fi-
co[Evaluar]
Trazar y/o implementar un algoritmo de compara-
ción de string[Usar]
Lecturas: [Guttag, 2013], [Zelle, 2010]
4
UNIDAD 4: Programación orientada a objetos(4)
Competencias: C2
CONTENIDO OBJETIVO GENERAL
Lenguajes orientados a objetos para la encapsula- Diseñar e implementar una clase[Usar]
ción: Privacidad y visibilidad de miembros de la cla-
se. Usar subclase para diseñar una jerarquı́a simple de
clases que permita al código ser reusable por diferen-
Definición de las categorı́as, campos, métodos y cons- tes subclases[Familiarizarse]
tructores.
Comparar y contrastar (1) el enfoque
Subclases y herencia. procedurar/funcional- definiendo una función
por cada operación con el cuerdo de la función
Asignación dinámica: definición de método de llama- proporcionando un caso por cada variación de dato -
da. y (2) el enfoque orientado a objetos - definiendo una
clase por cada variación de dato con la definición
de la clase proporcionando un método por cada
operación. Entender ambos enfoques como una
definición de variaciones y operaciones de una
matriz[Familiarizarse]
Explicar la relación entre la herencia orientada a ob-
jetos (codigo compartido y overriding) y subtipifica-
ción (la idea de un subtipo es ser utilizable en un con-
texto en el que espera al supertipo)[Familiarizarse]
Usar mecanismos de encapsulación orientada a obje-
tos [Familiarizarse].
Lecturas: [Guttag, 2013], [Zelle, 2010]
UNIDAD 5: Programación de Video Juegos ()
Competencias: C2
CONTENIDO OBJETIVO GENERAL
Uso de una librerı́a de video juegos. Aplicar los fundamentos y los conceptos de lenguajes
de programación para el desarrollo de un video juego
simple. [Usar]
Lecturas: [Sweigart, 2012]
9. METODOLOGÍA
El profesor del curso presentará clases teóricas de los temas señalados en el programa propiciando la intervención de
los alumnos.
El profesor del curso presentará demostraciones para fundamentar clases teóricas.
El profesor y los alumnos realizarán prácticas.
Los alumnos deberán asistir a clase habiendo leı́do lo que el profesor va a presentar.
De esta manera se facilitará la comprensión y los estudiantes estarán en mejores condiciones de hacer consultas en
clase.
5
10. EVALUACIONES
Evaluación Permanente 1 : 20 %
Examen Parcial : 30 %
Evaluación Permanente 2 : 20 %
Examen Final : 30 %
Referencias
[Brookshear, 2011] Brookshear, J. G. (2011). Computer Science: An Overview. Addison-Wesley.
[Guttag, 2013] Guttag, J. V. (2013). . Introduction To Computation And Programming Using Python. MIT Press.
[Sweigart, 2012] Sweigart, A. (2012). Making Games with Python & Pygame. MIT Press.
[Zelle, 2010] Zelle, J. (2010). Python Programming: An Introduction to Computer Science. Franklin, Beedle & Associates
Inc.