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!!!!