Información Básica
-
Créditos: 3
-
Horas de trabajo acompañado: 5 / semana (3 horas clase, 2 horas taller)
-
Horas de trabajo independiente: 4 / semana
-
Pre-requisitos: Ninguno
-
Tipo de curso: Núcleo de Formación Fundamental.
Descripción del Curso
Esta asignatura presenta al estudiante una alternativa para apropiar la disciplina de la programación como herramienta conceptual y tecnológica que permite solucionar problemas reales en ingeniería.
Objetivos
Al finalizar el curso los participantes podrán:
-
Describir un sistema con sus elementos e interacciones.
-
Conocer la noción de modelo.
-
Relacionar sistemas con modelos computacionales.
-
Especificar las constantes, variables y tipos de datos de un sistema.
-
Identificar los estados de un sistema.
-
Reconocer las operaciones que tiene un sistema para cambiar su estado.
-
Construir algoritmos.
-
-
Definir, implementar y aplicar operaciones.
-
Construir operaciones con parámetros.
-
Aplicar operaciones con argumentos acordes con los parámetros definidos.
-
Determinar el alcance de variables.
-
Reconocer la diferencia entre función y procedimiento.
-
Depurar códigos simples.
-
Desarrollar programas con documentación y usando librerías.
-
Conocer el valor de verdad de una condición.
-
Describir el flujo de ejecución de un algoritmo.
-
Implementar operaciones con condicionales.
-
Utilizar programación defensiva y control de versiones.
-
Trabajar con cadenas de caracteres.
-
-
Resolver problemas usando algoritmos que involucren repeticiones.
-
Seguir algoritmos con un flujo de ejecución repetitivo.
-
Implementar operaciones iterativas y recursivas.
-
Construir programas con interfaz gráfica.
-
Comparar la eficiencia de dos algoritmos.
-
-
Conocer la noción de estructura de datos.
-
Construir y manipular listas.
-
Solucionar problemas con listas.
-
Trabajar con diccionarios.
-
Desarrollar video juegos sencillos.
-
Leer y escribir en archivos.
-
Incluir la noción de persistencia en aplicaciones.
-
Reconocer la diferencia entre archivos texto y archivos binarios.
-
Conocer sistemas para manejar archivos binarios.
-
Competencias técnicas específicas que se desarrollan
-
Modelamiento computacional de sistemas.
-
Desarrollo de programas usando Python 3 y librerías del lenguaje.
-
Sistema de control de versiones Git.
-
Desarrollo de video juegos sencillos.
Contenido
Capítulo 1: Nociones de Sistema, Observación y Estado
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
1 | 3 | Definición de Sistema. Rol y propósito de un sistema operativo. Modelos. Variables y constantes. Tipos de datos primitivos (e.g. números, caracteres, Booleans). Subtipos y supertipos. Bits, bytes y otras medidas de almacenamiento, y su relación con los tipos de datos. | Familiaridad | [1] | |
2 | 2 | Desglose de un sistema en sus elementos observando las interacciones. | Evaluación | [1] | |
3 | 3 | Estado de un sistema. Operaciones que modifican el estado. El concepto y propiedades de algoritmos. Expresiones y asignaciones. | Uso | [1,2] | |
4 | 2 | Sintaxis y semántica de un lenguaje de programación de alto nivel. El rol de los algoritmos en el proceso de solución de un problema. | Evaluación | [1,2,3,4,9] |
Total de Horas: 10.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
1-2 | 4 | Tomar diferentes sistemas, realizar una observación, encontrar los elementos del sistema, diferenciar cuáles son variables y cuáles son constantes, y hallar el tipo de datos de las variables. | [1] |
3-4 | 4 | Resolver problemas sencillos usando el lenguaje de programación Python y librería de la Tortuga. | [1,2,3,4] |
Total de Horas: 8
Capítulo 2: Nociones de Abstracción y Condición
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
5 | 3 | Abstracción. | Uso | [1,2,4] | |
6 | 2 | Descomposición de un programa. | Evaluación | [1,2,4] | |
7 | 3 | Funciones, procedimientos, parámetros y argumentos. Variables locales y globales, alcance. | Uso | [1,2,4] | |
8 | 2 | Implementación de funciones y procedimientos. | Evaluación | [1,2,3,4] | |
9 | 3 | Errores en programación. Tipos de errores (sintaxis, lógicos, en ejecución). Comprensión de programas. El concepto de especificación. El rol y uso de contratos, incluyendo pre- y post-condiciones. | Familiaridad | [4] | |
10 | 2 | Estrategias de depuración. Pruebas unitarias. Correctitud de un programa. Búsqueda y acceso a librerías. | Evaluación | [4] | |
11 | 3 | Condicionales. Conectivos lógicos. | Uso | [1,2,4] | |
12 | 2 | Programación defensiva. Documentación y estilo de programación. Diagramas de flujo. Uso de IDEs. Uso de control de versiones. | Evaluación | [4,9] | |
13 | 3 | Cadenas de caracteres y procesamiento de cadenas. | Uso | [1,2,4] | |
14 | 2 | Práctica del tipo de dato cadenas de caracteres. | Evaluación | [1,2,3,4] |
Total de Horas: 25.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
5-6 | 4 | Construir programas que solucionen problemas definiendo operaciones. | [1,2,3,4] |
7-8 | 4 | Definir funciones o procedimientos que solucionen problemas dados. | [1,2,3,4] |
9-10 | 4 | Encontrar errores en programas, proteger un programa contra posibles errores simples, definir correctamente contratos de programas. | [2,4,9] |
11-12 | 4 | Resolver problemas usando condicionales. | [1,2,3,4] |
13-14 | 4 | Resolver problemas con cadenas de caracteres. | [1,2,3,4] |
Total de Horas: 20
Capítulo 3: Noción de Repetición
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
15 | 3 | Estructuras de control iterativas. | Uso | [1,2,4] | |
16 | 2 | Repetición con while. | Evaluación | [1,2,4] | |
17 | 3 | Funciones matemáticas iterativas. | Uso | [1,2,4] | |
18 | 2 | Práctica de funciones iterativas. | Evaluación | [1,2,4] | |
19 | 3 | Interfaces gráficas. | Familiaridad | [1,5] | |
20 | 2 | Construcción de interfaces gráficas. | Evaluación | [1,5] | |
21 | 3 | El concepto de recursión. Funciones matemáticas recursivas. | Familiaridad | [1,4] | |
22 | 2 | Práctica de funciones recursivas. | Evaluación | [1,4] | |
23 | 3 | Comparación informal de la eficiencia de algoritmos (e.g. conteo de operaciones). | Familiaridad | [4] | |
24 | 2 | Comparación y refactorización simple de programas. | Evaluación | [4] |
Total de Horas: 25.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
15-16 | 4 | Resolver problemas iterativos. | [1,2,3,4] |
17-18 | 4 | Resolver problemas matemáticos como series usando while. | [1,2,3,4] |
19-20 | 4 | Desarrollar un programa con interfaz gráfica. | [1,5] |
21-22 | 4 | Resolver problemas recursivos. | [1,3,4] |
23-24 | 4 | Encontrar la complejidad de programas simples y crear programas con una complejidad dada. | [4] |
Total de Horas: 20
Capítulo 4: Nociones de Abstracción de datos y Persistencia
Sesión | Horas teóricas | Prácticas acompañadas | Temas | Profundidad | Bibliografía |
---|---|---|---|---|---|
25 | 3 | Listas y arreglos. | Uso | [1,2,4,7] | |
26 | 2 | Algoritmos numéricos simples como calcular el promedio de una lista de números, encontrar el min, max y la moda en una lista, aproximar la raíz cuadrada de un número, o encontrar el máximo común divisor. | Evaluación | [4,7] | |
27 | 3 | Conjuntos y Diccionarios. | Uso | [4,7] | |
28 | 2 | json y programación web. | Familiaridad | [6] | |
29 | 3 | Recorridos iterativos y recursivos de estructuras de datos. Implementación de juegos. | Uso | [1,4,8] | |
30 | 2 | Ciclo for-each. | Evaluación | [1,2,4] | |
31 | 3 | Archivos. | Uso | [1,2,4] | |
32 | 2 | Entrada y salida de datos con archivos. | Evaluación | [1,2,4] |
Total de Horas: 20.
Sesión | Horas de trabajo independiente | Temas | Bibliografía |
---|---|---|---|
25-26 | 4 | Resolver problemas con listas. | [1,2,3,4,7] |
27-28 | 4 | Construir una página web y recuperar datos json. | [6] |
29-30 | 4 | Crear un juego simple. | [1,3,8] |
31-32 | 4 | Desarrollar programas que almacenen y recuperen datos de archivos. | [1,2,3,4] |
Total de Horas: 16
Uso de material en exámenes
No está permitido el uso de computadores personales, teléfonos celulares ó cualquier otro dispositivo electrónico.
Asistencia
Obligatoria.
Bibliografía
-
Gerardo M. Sarria M. y Mario J Mora. “Introducción a la Programación”. Lulu Press. Enero, 2015.
-
Guido Van Rossum. “An Introduction to Python”. Network Theory Ltd. March, 2011.
-
Guido Van Rossum. “The Python Language Reference Manual (Python Manual)”. Network Theory Ltd. March, 2011.
-
John V. Guttag. “Introduction to Computation and Programming Using Python”. The MIT Press. August, 2013.
-
Burkhard A. Meier. “Python GUI Programming Cookbook”. Packt Publishing. December, 2015.
-
Ryan Mitchell. “Web Scraping with Python: Collecting Data from the Modern Web”. O’Reilly Media. July, 2015.
-
Bradley N. Miller y David L. Ranum. “Problem solving with algorithms and data structures using Python”. Franklin, Beedle & Associates Incorporated. August, 2011.
-
Alejandro Rodas de Paz and Joseph Howse. “Python Game Programming by Example”. Packt Publishing. October, 2015.
-
Mark Lutz y David Ascher. “Learning Python”. O’Reilly & Associates. July, 2013.
Instalaciones
Salón de clase con computador y proyector. Laboratorio de Ingeniería de Sistemas y Computación.