Métodos Numéricos para la Astronomía


El presente curso proporciona al alumno las herramientas y técnicas necesarias para la solución de problemas comúnmente encontrados en el cálculo numérico relacionado a Astronomía, manejos de grandes bases de datos, y múltiples lenguajes computacionales.
 

Objetivos Específicos

  • Reconocer una variedad de técnicas y algoritmos numéricos y sus aplicaciones.
  • Aprendizaje de la implementación de dichos algoritmos numéricos en lenguajes de programación comúnmente usados en Astronomía.
  • Aprendizaje de manejo eficiente de bases de datos y programas astronómicos.

  • Programa


    Macrounidad 01: programación en BASH
  • Conceptos de Linux
  • File system
  • Manejos de archivos (uso de la terminal, permisos, comandos sencillos)
  • Shell, Bash
  • Comandos complejos. Grep. Pipping
  • Programación en BASH: shell scipts
  • Programación en BASH: interacción (read, echo)
  • Programación en BASH: Variables (locales, de entornos, especiales, parámetros o argumentos)
  • Programación en BASH: Operadores (de comparación artimética, de cadenas, de archivos)
  • Programación en BASH: Sentencias de control alternativas (If, If ... Else, If .. Elif, case )
  • Programación en BASH: Sentencias de control repetitivas (While, until, case )
  • Programación en BASH: Funciones


  • Archivos

    ""Dicebat Bernardus Carnotensis nos esse quasi nanos, gigantium humeris incidentes, ut possimus plura eis et remotiora videre, non utique proprii visus acumine, aut eminentia corporis, sed quia in altum subvenimur et extollimur magnitudine gigantea""

    Funamentalista del copyleft, las clases están basadas en el trabajo de distintos proofesores que dictan o han dictado esta catedra en distintas Universidad en todo el orbe. Gracias al excelente material que han creado, nos han permitido ir un paso mas allá.

    Los mas sinceros agradecimientos a :

  • Kapil Arya - Northeastern University - CS 5600: Computer Systems
  • Eric Bishop - Boston University - Bioinformatics Orientation
  • Hadi Otrok - CONCORDIA UNIVERSITY - Operating systems
  • Reva Freedman - Department of Computer Science Northern Illinois University
  • Scott Shell - Department of Chemical Engineering | University of California Santa Barbara


  • Modulo 1 : BASH
    Ma 05/04/16 - Clase 01 Introducción a los sistemas operativos GNU/Linux pdf
    Mi 06/04/16 - Clase 02 Fundamentos del Open Source pdf
    Ju 07/04/16 - Clase 03 GNU/Linux Filesystem 01 pdf
    Vi 08/04/16 - Clase 04 GNU/Linux Filesystem 02 pdf
    Ma 19/04/16 - Clase 05 Shell pdf
    Mi 20/04/16 - Clase 06 Bash - Uso de Terminal 01 pdf
    Ju 21/04/16 - Clase 07 Bash - Uso de Terminal 02 pdf
    Vi 22/04/16 - Clase 08 File permissions-grep-pipping pdf
    Ma 26/04/16 - Clase 09 variable 1 pdf
    Mi 27/04/16 - Clase 10 variable 2 pdf
    Ju 28/04/16 - Clase 11 Input pdf
    Vi 29/04/16 - Clase 12 Decision 01 pdf
    Ma 03/05/16 - Clase 13 Decision 02 pdf
    Mi 04/05/16 - Clase 14 Ejercicios de repaso pdf
    Ju 05/05/16 - Clase 15 FUNCTIONS 1 pdf
    Vi 05/05/16 - Clase 16 FUNCTIONS 2 pdf
    Ma 12/05/16 - Clase 17 Ejercicios de repaso
    Mi 11/05/16 - Clase 18 Ejercicios de repaso

    Modulo 2 : Introducción a la programación en Python.
    Ju 12/05/16 - Clase 19 Introducción pdf
    Vi 13/05/16 - Clase 20 Variables simples, Variables complejas, input de datos pdf
    Ma 17/05/16 - Clase 21 Diagramas de Flujo, condicionantes (IF-ELSE-ELIF) pdf
    Mi 18/05/16 - Clase 22 Estructura en Python 01 (tuplas, rangos, listas) pdf
    Ju 19/05/16 - Clase 23 Estructura en Python 02 (estructura vectorial) --
    Vi 20/05/16 - Clase 24 Estructura en Python 03 (Input-Output) pdf
    Ma 24/05/16 - Clase 25 Iteraciones : bucle FOR 01 --
    We 25/05/16 - Clase 26 Iteraciones : bucle FOR 02 pdf
    Ju 26/05/16 - Clase 27 Iteraciones : bucle While --
    Vi 27/05/16 - Clase 28 Primera Prueba Parcial pdf
    Ma 31/05/16 - Clase 29 Funciones 1 :variables y niveles de acceso --
    Mi 01/06/16 - Clase 30 Funciones 2 :variables locales y globales pdf
    Ju 02/06/16 - Clase 31 Funciones 2 :variables locales y globales pdf
    Vi 03/06/16 - suspendida pdf
    Ma 07/06/16 - suspendida pdf

    Modulo 3 : Métodos Numéricos para la astronomía con Python
    Mi 08/06/16 - Clase 32 Estructura modular soon
    Ju 09/06/16 - Clase 33 Numerical Python : Introduction soon
    Vi 10/06/16 - Clase 34 Arreglos Unidimensionales soon
    Ma 13/06/16 - Clase 35 Arreglos Bidimensionales soon
    Mi 14/06/16 - Clase 36 Matrix library (numpy.matlib) soon
    Ju 15/06/16 - Clase 37 Clase de ejercicios (seudocodigos) soon
    Vi 16/06/16 - Clase 38 Mathematical functions soon
    Ma 21/06/16 - Clase 39 Sorting, searching, and counting soon
    Mi 22/06/16 - Clase 40 Linear algebra (numpy.linalg) soon
    Ju 23/06/16 - Clase 41 Supendida (Paro reflexivo)
    Vi 24/06/16 - Clase 42 Polynomials (numpy.poly1D, polynomial) soon
    Ma 28/06/16 - Clase 43 Repaso Segunda Prueba Parcial
    Mi 29/06/16 - Clase 44 MatPlotLib I
    Ju 30/06/16 - Clase 45 MatPlotLib II
    Vi 01/07/16 - Clase 46 Segunda Prueba Parcial
    Ma 05/07/16 - Clase 47 Random sampling (numpy.random)
    Mi 06/07/16 - Clase 48 Probabilidad y Estadística I (numpy.statistics)
    Ju 07/07/16 - Clase 49 Probabilidad y Estadística II (scipy.stats)
    Vi 08/07/16 - Clase 50 Data Fitting I (numpy.polyfit)
    Ma 12/06/16 - Clase 51 Data Fitting II (numpy.polyfit)
    Mi 13/06/16 - Clase 52 Data Fitting III (numpy.polyfit)


    Bibliografía


    Unidad 01 - Programación en BASH
  • The GNU Bash Reference Manual (fundamental N°1)
  • Bash Guide for Beginners by Machtelt Garrels (fundamental N°2)
  • El Manual de BASH Scripting Básico para Principiantes (just in case...)

  • Unidad 02 - Programación en Python
  • Python para principiantes, de Eugenia Bahit (CC BY-NC-SA 3.0)
  • Python para todos - Raúl González Duque (CC BY 2.5 ES)
  • Beginner's Guide to Python - Python Soft Fundations (PSF licence)
  • También les recomiendo se den una vuelta por The Hitchhiker's Guide to Python
    Unidad 03 - Métodos Numéricos con Python
  • Numpy 1.11.0 Reference Guide
  • Scipy 0.17.0 Reference Guide, [HTML+zip], [PDF])
  •  

    Tareas


    Tarea 1 : Fecha de entrega, viernes 20 de Mayo, 2016.
    18.758.506-6 Crear un script que guarde en un archivo el mismo resultado que se obtendría al usar el comando ls , pero en orden descendente. y sin usar en el scrip ni el comando ls ni el comando sort (método 1).
    18.792.278-k Crear un script que guarde en un archivo el mismo resultado que se obtendría al usar el comando ls , pero en orden descendente. y sin usar en el scrip ni el comando ls ni el comando sort (método 2).
    18.826.513-8 Crear un script que guarde en un archivo el mismo resultado que se obtendría al usar el comando ls , pero en orden descendente. y sin usar en el scrip ni el comando ls ni el comando sort (método 3).
    18.924.505-k Crear un script que lea un archivo compuesto solo por numeros, los ordene de forma ascendente, y que luego reescriba en el mismo archivo, la lista ordenada. El nombre del archivo a leer debe ser ingresado por pantalla.
    17.697.912-7 Escriba un programa que muestre por pantalla el numero de archivos estandar,archivos ejecutables y subdirectorios que tenga un directorio ingresado por teclado.
    17.939.474-k Escriba un programa, que pida por pantalla ingresar dos números y el signo del operador (+ , - , / , *), y que luego realice el cálculo siguiendo el operador declarado (método 1).
    18.178.598-5 Escriba un programa, que pida por pantalla ingresar dos números y el signo del operador (+ , - , / , *), y que luego realice el cálculo siguiendo el operador declarado (método 2).
    18.312.913-9 Escriba un programa, que pida por pantalla ingresar dos números y el signo del operador (+ , - , / , *), y que luego realice el cálculo siguiendo el operador declarado (método 3).
    18.506.131-0 Crear una secuencia de comandos para calcular y mostrar por pantalla, el factorial de un número por teclado (Método 1)
    19.084.257-6 Crear una secuencia de comandos para calcular y mostrar por pantalla, el factorial de un número por teclado (Método 2)
    19.301.136-5 Escriba un programa que pueda identificar si una palabra cualquiera tiene mas consonantes que vocales, mas vocales que consonantes, o el mismo número de vocales que consonantes. Por teclado deben ingresarse la palabra y la longitud de ella, y por pantalla el mensaje correspondiente.


    Tarea 2 : Fecha de entrega, Viernes 01 de Julio, 2016.
    18.758.506-6 Escriba un programa que muestre números al azar del 1 al 6 para dos jugadores mientras se presione la tecla S. El programa declarará ganador al jugador que haya obtenido más puntos al final de la tirada, la cual termina al presionar la cualquier otra tecla.
    18.792.278-k Escriba un programa para jugar a adivinar un número (el usuario piensa un número y el programa tiene que adivinarlo). El programa empieza pidiendo entre qué números está el número a adivinar y después intenta adivinar de qué número se trata. El usuario va diciendo si el número que ha dicho el programa es menor, mayor o igual al buscado.
    18.826.513-8 Escribe un programa que pida dos palabras y diga si riman o no. Si coinciden las tres últimas letras tiene que decir que riman. Si coinciden sólo las dos últimas tiene que decir que riman un poco y si no, que no riman.
    18.924.505-k Escriba un programa que genere valores de forma aleatoria del 1 al 5 para un jugador cualquier cada vez que presione la tecla Y. Por cada vez que se genere un valor aleatorio para el jugador, se generará un segundo valor aleatorio para un jugador 2. El programa declarará como ganador a quien se acerque mas al valor 21, inclusive. Valores mayores al 21 es declarado inmediatamente perdedor. La tirada (partida de números generados aleatoriamiente terminará al presionar cualquier tecla distinta a Y.
    17.697.912-7 Diseñe un código que pueda adivinar una cadena de números. Al principio, el programa debe pedir la longitud de la cadena (de 2 a 9 cifras) y esta debe auto-generarse. Después, el programa debe ir pidiendo que intente adivinar la cadena de números. En cada intento, el programa informará de cuántos números han sido acertados. El programa considerará que se ha acertado un número si coincide el valor y la posición. El programa funcionará hasta que se adivine toda la cadena.
    17.939.474-k Escribir una función que tome una lista de palabras y un entero n, y devuelva las palabras que tengan mas de n caracteres.
    18.178.598-5 Escriba un código que sea capaz de transformar cualquier número arábigo, en númerología Romana.
    18.312.913-9 ¿Recuerda el juego llamado El Ahorcado?. Se trataba a un juego de ingenio/azar, donde en base a un número establecido de desaciertos, había que adivinar una palabra, mediante la entrega de letras. Desarrolle este juego en Python. La palabra debe ser ingresada por teclado (supongamos que será ingresada por un segundo jugador) y el numero de oportunidades será el doble del número de caracteres de la palabra ingresada.
    18.506.131-0 Acercarse a oficina del profesor
    19.084.257-6 Escriba un programa que permita crear N listas de palabras y que elimine de las listas los nombres repetidos en listas posteriores. La eliminación de los nombres debe ser echa por un módulo externo. Finalmente se debe generar un texto, donde se detallen el número de listas generadas, las listas originales, los nombres eliminados, y las nuevas listas
    19.301.136-5 Escriba un código que simule el comportamiento de una máquina tragamonedas, pero solamente cuando se cumplan las siguientes condiciones: 1) el jugador debe indicar cuántas monedas quiere jugar. 2) El programa muestra tres números al azar del 1 al 5. 3)Si los tres números son distintos, el jugador pierde todo su dinero y la partida termina. 4) Si sale un 5, se recupera la apuesta. 5) Si salen dos 5, el jugador multiplica por cuatro la apuesta. 6) Si salen tres 5, el jugador multiplica por diez la apuesta. El jugador puede terminar su apuesta cuando lo estime conveniente. Bastará para esto presionar la tecla Q