Download Programación en Phyton - Universidad Católica de Córdoba
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD CATOLICA DE CORDOBA Unidad FACULTAD DE INGENIERÍA Asignatura SEMINARIO I (20170) - “Programación en Phyton” Año lectivo 2013 Cátedra A Docente Titular: JOHN CHARLES MARIA COPPENS Docente Jefe de Trabajos Prácticos: ANDRÉS GUECI OBJETIVOS GENERALES El seminario pretende de brindar una introducción al idioma de programación Python. Esta particular herramienta de desarrollo ha tomado una importancia notable durante los recientes años por su versatilidad y elegancia (y por ser Software Abierto). Una enorme cantidad de librerias que cubren desde aplicaciones básicas hasta procesamientos científico avanzado, la mayoría compilada desde código C o C++, hacen el uso de este idioma aún mas atractivo. OBJETIVOS ESPECÍFICOS En partiuclar, Python es una herramienta extremadamente versatil, y, con ejemplos como el software de trazabilidad de granos (y próximamente de medicamentos), vemos su poder cada vez mas claro. SÍNTESIS CONCEPTUAL DE LA ASIGNATURA (ABSTRACT) Unidad 1 - Introducción: Porqué Python? Unidad 2 - Elementos básicos de programación en Python Unidad 3 - Construcciones para el control de flujo Unidad 4 - Clases - inicio Unidad 5 - Trabajar modularmente Unidad 6 - Clases en detalle Unidad 7 - Librerias del sistema Unidad 8 - Librerias externas Unidad 9: Mas información CONTENIDOS Unidad 1 - Terminología Unidad - Terminología - Metodología - Evaluación. Introducción a un microprocesador sencillo, el cual será utilizado para el proyecto a desarrollar. Unidad 2 - Desarrollo de un desasembler. Pasos a seguir: Crear una clase representando la memoria de un microprocesador. Construir sobre lo anterior, una clase que es capaz de leer y escribir archivos en un formato estandard. Sobre esta clase, construir una nueva clase capaz de desensamblar al código leido. Algoritmos para el desensamblado, generación de listados. Programas de prueba y validación. Consideración de la necesidad de implementar un segundo paso. Utilizar métodos estructurados para la creación del proyecto. Compilación por unidades, linkeado, y creación de un ejecutable. Funcionamiento y creación de archivos de comando Makefile. Unidad 3 - Desarrollo de un simulador. Creación de una clase que es capaz de simular la ejecución de instrucciones, y que es capaz de simular los registros internos del procesador. Creación de programas de prueba y validación. Comparando con el depurrador interno de la IDE, e implementación de los comandos mínimos. Creación de este proyecto con una IDE para C++. Relación de la IDE con los métodos manuales utilizados en Unidad 1. Utilización del depurrador de la IDE. Unidad 4 - Creación de un ensemblador. Procesamiento de archivos código fuente, utilizando un analizador léxico y sintáctico. Algoritmos a utilizar. Consideraciones sobre la adaptación del asembler para otros procesadores. Implementación de las clases necesarias: Manejo de la tabla de símbolos, una clase compilador, generación de código. Para este paso será necesario un uso intenso del depurrador de la IDE. Unidad 5 - Herramientas mas avanzadas para la detección de problemas de seguridad, memoria, y tiempos de ejecución. BIBLIOGRAFIA Obligatorio The Python Language Reference, http://docs.python.org/reference/index.html The Python Standard Library, http://docs.python.org/library/index.html De consulta SCHNEIDER, Michael;WEINGART, Steven y PERLMAN, David. Programming and Problem Solving with Pascal, John Wiley, ISBN 0-471- 08216-3 SCHNEIDER, Michael y BRUELL, Steven, Advanced Programming and Problem Solving with Pascal John Wiley, ISBN 0-471-01128-2 STEVENS, Richard, Advanced Programming in the UNIX Environment Addison Wesley, ISBN 020156317-7 STONES, Rick, Beginning Linux Programming Neil Matthew, Wrox Press Ltd, ISBN 1-874416-680 Beginning Python, Peter Norton, ISBN-13: 978-0-7645-9654-4 Beginning Python, Peter Norton, ISBN-10: 0-7645-9654-3 GUI Programming with Python - QT Edition (disponible en internet) Programming Python, 3rd Edition, Mark Lutz, ISBN-10: 0-596-00925-9 Programming Python, 3rd Edition, Mark Lutz, 978-0-59-600925-0 Python in a Nutshell, 2nd Edition, Alex Martelli, 0-596-10046-9 Python in a Nutshell, 2nd Edition, Alex Martelli, 978-0-59-610046-9 METODOLOGÍA El aspecto teórico será presentado con exposiciones didácticas, con énfasis sobre el contacto práctico con las herramientas. R -CALENDARIO DE ACTIVIDADES 1 Introducción: Porqué Python? Cuales son las características? Portabilidad, disponibilidad de librerias, aplicaciones.Como instalar Python. Particularidades de Python bajo Windows, Linux. Modo interactivo y modo ejecución. Bibliografía y documentación. 2 Elementos básicos de programación en Python: Números, cadenas (con mención de caracteres Unicode), listas. Primeros pasos para la programación. Como configurar un programa para autoejecución en Linux. 3 Construcciones para el control de flujo: if, for (y range()), break y continue, pass. El concepto de funciones en Python. Visibilidad de variables en funciones. Diferentes tipos de argumentos. Funciones Lambda. 4 (Casi) todos los elementos son clases! Ejemplo: listas, y el manejo de los mismos. Otros tipos de estructuras: tuples, sequences, dictionaries, sets... Anidar elementos. Iteraciones. 5 Trabajar modularmente: La facilidad de crear librerias de funciones, y la naturalidad de trabajar con clases y herencia. Como importar librerias del sistema, ya sea parcialmente o completamente. 6 Entrada salida: Archivos, puertos, compresión, pickle, y mas 7 Parcial 8 El manejo de errores en Python 9 Clases en detalle: herencia, visibilidad, namespaces. Generadores. 10 Un panorama de las librerias del sistema: Sistema operativo, expresiones regulares, matemática, internet, fechas y horas, compresión de datos. 11 Mas: Formateado de salida, trabajo con plantillas, procesamiento de datos binarios, hilos de ejecución, y mas... 12 Librerias externas: Solo un breve resumen de algunas de las mas interesantes: pyGTK, pyQt y pyWx para la generación de interfases gráficos para el usuario. 13 Librerias externas:Numpy: soporte para operaciones con matrices. Scipy: algoritmos científicos, tales como transformada de Fourier, regesiones y mucho mas. MatPlotLib: herramientas para graficación! 14 Como instalar librerias bajadas desde la Internet. Como funciona el sistema de autodocumentación de Python? El concepto de fuente abierto y algunos dudas.. 15 Parcial Prácticos 1 Instalación de Python. Pruebas iniciales, y familiarización con modo interactivo y edición de un pequeño programa de prueba. 2 Creación de algunos programas sencillos. 'Hola Mundo', etc. Adoptar prácticas de programas y reglas para lograr una estructura en los programas. 3 Creación de programas mas avanzadas, particularmente para entrar en contacto con los varios sistemas de control de flujo. Trabajar con funciones! 4 Aplicaciones para listas, bytearray, sequencias, dictionarios y otras estructuras. 5 Modificar los ejemplos anteriores para aprovechar al maximo clases, herencia. Entrada/salida: Lectura y escritura de archivos de disco. Acceso a otros tipos de archivos: Puertos seriales. 6 Concepto de stdout, stderr, y stdin. 7 Parcial 8 Agregar a los programas anteriores un manejo de errores correcto: Captura de excepciones, y corrección de los mismos. 9 Un pequeño programa gráfico que muestra un uso mas avanzado de clases. Primer paso es una introducción al funcionamiento de interfases gráficos. 10+11 Diseño de una interfaz gráfica sencilla y como conectar acciones a cada elemento. 12+13 Agregar funciones para mostrar el uso de librerias 15 Recuperatorio TRABAJOS PRÁCTICOS Los trabajos prácticos son la confirmación de lo enseñado en la parte teórica, y están descritos en detalle en el punto 7. CRITERIOS Y FORMAS DE EVALUACIÓN 1 Durante el semestre Tanto en la parte teórica como en la parte práctica, se presentarán 4 trabajos durante el semestre. Estos trabajos se evaluarán por su: originalidad (~20%), solidéz de implementación (~30%), estructura (~30%), documentación (~20%). Se considera importante la creación de la documentación, que conste de: Descripción del problema. (La tarea) Análisis del problema. (Como se sugiere solucionarlo) Descripción de la solución. En la descripción no se trata necesariamente de un reporte verboso, sino de una representación sintética de la solución adoptada. Relato de problemas encontrados, y las soluciones propuestas y/o realizadas. 2 Parciales En la parte teórica se realizarán además dos parciales, evaluando el conocimiento sobre la materia en forma individual. En las notas finales se agregar una evaluación del la participación del alumno en las actividades. 3 Final El examen final teórico consistirá en dos partes: una evolución de los conocimientos teóricos de la materia y una confirmación individual de la participación en la realización de los trabajos presentados. El responsable de la parte práctica se encargará de la misma manera de evaluar los conocimientosabsolutos e individuales de los alumnos. R - CONDICIONES PARA OBTENER LA REGULARIDAD Las condiciones formales son las que actualmente rigen para todas las cátedras, según el reglamento vigente. MODALIDAD 2hs clases teóricas y 2hs clases prácticas por semana. Duración: 3 meses Miércoles de 18hs a 20hs y Jueves de 15hs a 17hs. Clases inician Miércoles 31 de Julio Clases terminan Jueves 7 de Noviembre COSTOS 4 cuotas de $300 ó $1200 pagaderos al inicio del curso. CONTACTO Coordinadora de la Carrera de Ingeniería de Sistemas: Ing. Belén Zarazaga Mail de contacto: [email protected] Teléfono: 4938080 SE ENTREGARÁN CERTIFICADOS!!!!