Atributos
Sigla: 
CI-0202
Créditos: 
4
Horas: 
4
Clasificación: 
Curso de servicio
Énfasis y ciclo: 
En función del plan de estudios
Descripción: 

Es un curso básico de programación para estudiantes del área de ingeniería y afines. En el curso se introduce al estudiante al pensamiento abstracto para la resolución de problemas de ingeniería y científicos, automatizable por medio de herramientas informáticas de desarrollo, utilizando metodologías sistemáticas. El estudiante aprenderá a reconocer la aplicabilidad de flujos de control y modelos de datos básicos para lograr el diseño e implementación de programas y algoritmos.

Objetivo general: 

Proveer formación básica en programación y construcción de algoritmos y de programas, para la resolución de problemas utilizando técnicas actuales.

Objetivos específicos: 

Al finalizar este curso la persona estudiante será capaz de:

  1. Diseñar, organizar e implementar algoritmos para resolver problemas específicos del área de ingeniería, ciencias y afines.
  2. Usar un ambiente de programación para la edición, prueba y depuración de programas.
  3. Reutilizar componentes de software.
  4. Aplicar buenas prácticas de construcción de software.
Contenidos: 
Objetivo específico Eje temático Desglose  
1, 2 1. Fundamentos de la programación

Lenguajes de programación: concepto de programación, lenguaje máquina, lenguaje ensamblador, lenguaje de alto nivel, maquina virtual, compilador y paradigmas.

Ciclo de vida de un programa: problema, análisis, diseño, implementación y prueba.

Algoritmo: concepto, primitivas y ejemplos.

Construcción (compilación, interpretación) y ejecución.

 
1 2. Sistemas numéricos y representación de datos

Bases y conversión: decimal, binaria y hexadecimal.

Sistemas de codificación de texto: ASCII y UNICODE.

Tipos de datos: enteros, reales, booleanos, caracteres e hileras de texto.

Aritmética de precisión entera, aritmética de precisión flotante.
 
1, 4 3. Definición y utilización de variables

Definición de valores y variables:

Declaración: tipo, identificador y dirección.

Inicialización de acuerdo con el tipo de datos: valores, indirección (ej: punteros, referencias).

Estado de la variable en memoria (valor).

Asignación y conversión de tipos.

Utilización de variables:

Atributos de clase: declaración, ámbito de vida y ocultamiento (encapsulamiento).

Variables locales: declaración y ámbito de vida.

Estáticas y constantes: declaración y ámbito de vida.
 
1, 2, 4 4. Entrada y salida básica, verificación

Entrada: parámetros de línea de comandos y entrada interactiva.

Salida: salida estándar y salida interactiva.

Verificación de datos y manejo de errores (ej: manejo de excepciones).
 
1 5. Expresiones y operadores

Evaluación de expresiones y orden de precedencia.

Aridad de operadores: unarios (ej: negación) y binarios (ej: multiplicativos y aditivos).

Tipos de operadores: aritméticos, relacionales (comparación e igualdad), lógicos, y de asignación.
 
1 6. Instrucciones y estructuras de control

Secuencia de instrucciones y bloques de instrucciones.

Condición de instrucciones.
 
1 7. Repetición Repetición de instrucciones por condición y por contador.  
1, 3, 4 8. Subrutinas

Conceptos: modularización y reutilización, declaración e invocación.

Componentes: encabezado (identificador, parámetros y tipo de retorno) y cuerpo.

Funciones y procedimientos.

Sobrecarga de subrutinas: declaración y resolución de llamados.
 
1, 3, 4 9. Indirección

Paso de argumentos: por valor y por indirección.

Alojamiento estático de memoria, alojamiento dinámico de memoria, y alojamiento automático de memoria (pila de llamados).

Reglas de alcance o ámbito de identificadores.
 
1, 3 10. Recursividad

Concepto y utilización.

Orden de llamados
 
1, 3 11. Colecciones lineales de datos: fundamentos

Concepto (ej: arreglos, listas), estructura y estado de memoria.

Declaración e inicialización.

Acceso a elementos y recorrido.

Paso de colecciones por argumento a subrutinas.
 
1, 3 12. Colecciones lineales de datos: operaciones

Utilidad y operaciones comunes (suma, promedio, mínimo, máximo).

Búsqueda (de acuerdo con el tipo de datos de los elementos).

Ordenamiento (de acuerdo con el tipo de datos de los elementos).
 
1, 3 13. Matrices

Concepto, estructura y estado de memoria.

Declaración e inicialización.

Acceso a elementos y recorrido.
 
1 14. Hileras o cadenas de caracteres (textos)

Concepto.

Operaciones: concatenación, obtener tamaño, extraer carácter o fragmento, comparación, búsqueda, reemplazo, conversión a mayúscula o minúscula, conversión a arreglo.
 
1, 2, 4 15. Entrada y salida: archivos

Conceptos y organización física de archivos.

Operaciones de archivos: lectura y escritura.

Procesamiento binario/textual: apertura/cierre y lectura/escritura.
 
3, 4 16. Introducción a la programación orientada a objetos

Paradigma: clases e instancias, atributos y métodos, abstracción y reutilización.

Análisis y diseño: modelaje de clases e instancias.

Constructores: concepto y utilización, declaración e invocación.

 
* 17. Programación avanzada

Tema a escoger entre los siguientes:

Matrices, algoritmos y bibliotecas de álgebra lineal.

Fundamentos de graficación y de interfaces gráficas.

Indirección (punteros y referencias), copia y clonación de objetos.

Algoritmos de búsqueda y ordenamiento básicos.

Herencia y polimorfismo.

Aritmética de precisión arbitraria.

Cuadernos de lenguajes de computación.

Visualización de datos (ej: creación de gráficas, animaciones).

Simulación (ej: a partir de modelos matemáticos, físicos).

Predicción (usando modelos simples).
 

 

Bibliografía: 
  1. Guttag, John V. “Introduction to Computation and Programming Using Python: With Application to Understanding Data”, 2nd edition, The MIT Press, 2016.
  2. Langtangen, Hans Petter. “A Primer on Scientific Programming with Python”, 5th edition, Springer Berlin Heidelberg, 2016.
  3. Rossant, Cyrille, “Learning IPython for Interactive Computing and Data Visualization”, ISBN: 978-1782169949, PACKT Books, 201
  4. Wachenchauzer, Rosita, Manterola, Margarita y otros, “Algoritmos y Programación con lenguaje Python”, OpenLibra, 2011.
LIberación de responsabilidad: 

Este no es un documento oficial. Documentos oficiales se entregan en la secretaría de la escuela.