Programación Básica


Semestre:

Fecha de elaboración:

Octubre de 2013

Fecha de revisión:

Noviembre de 2013

Elaborado por:

Antonio Daniel Rivera López

Ciclo de formación:

Básico

Área curricular:

Ciencias Básicas

Tipo de unidad:

Teórica

Carácter de unidad:

Obligatoria

Clave:

PB01FB050010

Créditos:

10

Semestre:

Horas Teoría:

5

Horas Práctica:

0

Programas académicos en los que se imparte:

Licenciatura en Ciencias Áreas terminales en Matemáticas, Física, Bioquímica y Biología Molecular, y Ciencias Computacionales y Computación Científica

Prerrequisitos:

Identifica los conceptos básicos de la computación, los componentes de un sistema de cómputo, los sistemas operativos y los elementos básicos del arte de la programación.

Antecedentes Recomendadas:

Ninguna

Consecuentes Recomendadas:

  • Ninguna

Presentación de la unidad de aprendizaje:

Se busca que el estudiante programe en algún lenguaje, como puede ser Python, Java, C++, C o Fortran. No obstante el lenguaje Python se caracteriza por tener una sintaxis limpia y relativamente fácil de entender, aprender y enseñar, es decir, es un excelente lenguaje de programación. Además, Python es una buena opción para resolver problemas matemáticos, por ejemplo en teoría de números, optimización, métodos numéricos y en teoría de gráficas: es el lenguaje que se introduce en la materia de Introducción a la computación.


Propósito de la unidad de aprendizaje:

Desarrollar la habilidad para resolver problemas matemáticos diseñando un algoritmo y para escribir algoritmos en un lenguaje de programación.


Competencias profesionales:

Utiliza las herramientas computacionales de cálculo numérico y simbólico para plantear y resolver problemas. Utiliza o elabora programas o sistemas de computación para el procesamiento de información, cálculo numérico, simulación de procesos o control de experimentos. Construye modelos computacionales simplificados que describen una situación compleja; identifica sus elementos esenciales y efectúa las aproximaciones necesarias.

Contribución al perfil de egreso:

La UA aportará al egresado de la Licenciatura en Ciencias, las habilidades en el uso de las tecnologías de la información y de la comunicación.


Secuencia temática:

  1. I Breve repaso de programación básica en Phyton.
    1. Números en base b.
    2. Ejemplo de un programa en un scrip con llamado a dos funciones, una que sume dos números en base b y otra que multiplique dos números en base b.
    3. Cálculo factorial de un número y los números de Fibonacci.
    4. El problema del máximo común divisor (mcd), resumen de resultados acerca del mcd, resolución del problema para números naturales X, Y, dividiendo por números entre 1 y X donde X
    5. Algoritmo extendido de euclides e identidad de Bézout.
    6. Números pseudoaleatorios.
    7. Valores aleatorios uniformes.
    8. Generación de números pseudoaleatorios.
    9. Calcular la probabilidad de que dado un número natural X distinto de cero, dos números pseudoaleatorios entre 1 y X tengan mcd igual a uno.
  2. II Funciones y valores de retorno.
    1. Valores de retorno.
    2. Desarrollo incremental de programas.
    3. Funciones Booleanas.
    4. Recursión.
    5. Ejemplos.
  3. III Cadenas.
    1. Un tipo de dato compuesto.
    2. Longitud de una cadena.
    3. Recorridos en cadenas y ciclos.
    4. Segmentos de cadenas.
    5. Comparación de cadenas.
    6. Las cadenas son inmutables.
    7. Una función de búsqueda.
    8. Iterando y contando.
    9. El módulo string.
    10. Clasificación de caracteres.
    11. Conversión de cadenas de texto en un alfabeto en números.
    12. Lectura de una cadena de palabras.
    13. Búsqueda de palabras en una cadena.
  4. IV Listas y diccionarios.
    1. Una lista es una sucesión.
    2. Las listas son inmutables.
    3. Acceso a los elementos de una lista.
    4. Longitud de una lista.
    5. Pertenencia.
    6. Listas y ciclos.
    7. Operaciones sobre listas.
    8. Segmentos de listas.
    9. Las listas son inmutables.
    10. Objetos y valores.
    11. Alias de una lista.
    12. Clonando listas.
    13. Listas como argumento de una función.
    14. Listas anidadas.
    15. Matrices.
    16. Cadenas y listas.
    17. Cálculo del coeficiente binomial eficientemente.
    18. La función j de Euler.
    19. Factorización de enteros.
    20. Cálculo de la función j de Euler.
    21. La criba de Eratosthenes.
    22. Cálculo rapido de la función j de Euler.
    23. Cálculo de la probabilidad de que dos números menores que n sean primos relativos, para números grandes.
    24. Diccionarios como conjunto de contadores.
    25. Ciclos y diccionarios.
    26. Lookup y reverse lookup.
    27. Diccionarios y listas.
    28. Almacenamiento de datos en diccionarios.
    29. Variables globales.
    30. Enteros largos.
  5. V Tuplas y archivos.
    1. Mutabilidad y tuplas.
    2. Tuplas como valores de retorno.
    3. Longitud variable de tuplas.
    4. Listas y tuplas.
    5. Diccionarios y tuplas.
    6. Comparación de tuplas.
    7. Suseciones de suseciones.
    8. Análisis de frecuencia de palabras.
    9. Números pseudoaleatorios generados por Python.
    10. Histograma de palabras.
    11. Las palabras más comunes.
    12. Substracción de palabras de diccionarios.
    13. Palabras aleatorias y análisis de Markov.
    14. Lectura y escritura de archivos.
    15. Directorios.
    16. Bases de datos.
    17. El módulo pickle.
    18. Escribiendo módulos.
    19. Ejemplos.
  6. VI Clases, objetos, funciones y métodos.
    1. Objetos.
    2. Tipos definidos por el usuario.
    3. Atributos.
    4. Dos clases que representan rectángulos.
    5. Instancias como valores de retorno.
    6. Los objetos son mutables.
    7. Copiado.
    8. Funciones.
    9. Una clase para representar la hora del día.
    10. Funciones puras.
    11. Funciones modificadoras.
    12. Métodos.
    13. Características de orientación a objetos.
    14. Imprimiendo objetos, ejemplos.
    15. El método de inicialización (init), el método str.
    16. Sobrecarga de operadores.
    17. Polimorfismos.
    18. Proyectos sugeridos, ternas pitagóricas, aritmética modular.
  7. VII Objetos carta.
    1. Objetos carta.
    2. Atributos de clase.
    3. Comparación de cartas.
    4. Mazos.
    5. Imprimiendo el mazo.
    6. Entrega, eliminación, revolver y ordenar cartas.
    7. Herencia.
    8. Diagramas de clase.

Criterios de Evaluación:

  • Exámenes parciales: 30%
  • Examen final: 40%
  • Participación en clase: 10%
  • Otra (especifique): Tareas: 20%


Bibliografía básica:

  • Allen, Downey. 2013. Think python: how to think like a computer scientist. Version 2.0.9. Disponible en http://www.thinkpython.com
  • Raymond, Séroul. 2000. Programing for mathematicians. Ed. Springer.
  • Chapman and Hall. 2006. C++ for Mathematicians, an introduction for students and professionals.
  • A computational introduction to number theory and algebra. 2a edición. Ed. Cambridge.

Bibliografía complementaria:

  • Guttag, Jhon V. 2013. Introduction to computation and programing using Python. Ed. The MIT Press.