Se encuentra usted aquí

ED17 - Descripción completa de curso

Descripción completa de curso

Descripción Curso: 04-PYTHON

Código: 04-PYTHON
Título: Python: Programación y aplicación a la enseñanza
Descripción:
Python es un lenguaje de programación bien establecido actualmente y bien conocido en el
Python Logo
 ámbito técnico internacional. Habitualmente figura entre los 10 lenguajes de programación más utilizados y que mayor demanda de trabajo genera. 
Propuesto inicialmente hace más de 20 años, ha ido evolucionando, y actualmente se ha consolidado la versión Python 3, lo que ha permitido que haya madurado como lenguaje y que se hayan establecido grupos muy activos de desarrollo y mejora.

Por sus propias características, Python es un buen candidato a su utilización como primer lenguaje para aprender programación informática. De hecho, ya en 2002 una tesis de máster de la Universidad de Amsterdam analizaba la aplicación de Python como primer lenguaje de aprendizaje de la programación en niveles educativos preuniversitarios, y desde entonces se han documentado múltiples iniciativas dirigidas a la utilización de Python en distintos niveles educativos. Incluso el mismo creador del lenguaje, Guido von Rossun, propuso en 1999 el proyecto CP4E (Computer Programming for Everybody - Programación Informática para todos) que fue aceptada por DARPA.

Adicionalmente, la amplia comunidad de desarrollo que está trabajando con Python ha creado múltiples librerías especializadas en distintos ámbitos. Por ejemplo, en el campo de la matemática se pueden citar los paquetes NumPy (programación científica), SciPy (para matemáticas, ciencias e ingeniería), PIL (para procesado de imágenes), SymPy (para matemática simbólica), etc.

Este curso pretende llevar a cabo una visión general del lenguaje Python, pensando tanto en personas que no tengan ningún conocimiento previo de programación informática o que puedan tener algún conocimiento de programación informática (en otros lenguajes como Java, PHP, C, etc.). Para ello, se asume una estrategia de curso autocontenido que empieza desde los mismos fundamentos básicos del lenguaje y cubre las principales características del lenguaje, de forma que el participante en el curso obtenga la capacidad para poder profundizar en las líneas de interés específico que pueda tener.
Profesorado: Luis Miguel Marín Trechera
Fernando Sancho Caparrini
José Francisco Quesada Moreno
Alejandro Ruiz Martínez
Programa: Bloque 1: Introducción, Instalación y Fundamentos

Tema 1.-Introducción: Aprender a programar con Python
- Programación, Creatividad y Resolución de Problemas
- Python: un gran lenguaje de programación

Tema 2.-Instalación, Entorno de trabajo y Primeros pasos
- Preliminares
- Instalación
- Primeros pasos con Python

Tema 3.-Los fundamentos de Python
- Los elementos del lenguaje
- Asignación
- Datos, clases y conversiones
- Lectura y escritura
- Condiciones
- Import: usando elementos de un script en otros
- Iteraciones indefinidas: el bucle while
- Recursión
- Iteraciones definidas: el bucle for
- Ejemplo práctico: Números primos

Bloque 2: Programación estructurada en Python. Datos y Control

Tema 4. Tipos de datos básicos en Python: booleanos y numéricos
- Tipos booleanos: verdadero - falso
- Valores numéricos: enteros y reales
- Ejemplo: Adivinar números con búsqueda binaria
- La librería matemática
- Ejemplo: Adivinar números con búsqueda binaria (versión mejorada)

Tema 5. Listas
- Definición
- Longitud, indexado y particionado de listas
- Añadir elementos a una lista
- Ejemplo: el triángulo de Pascal
- Extender listas
- Inserción posicional
- Ejemplo: contando dígitos
- Buscar y contar valores en una lista
- Eliminación de elementos en una lista
- Iteradores sobre listas: el operador in
- Ordenar: sort() y sorted()
- Ejemplo: números capicua. Invertir listas
- Listas en contextos booleanos
- Simulando matrices: listas de listas

Tema 6. Tuplas, Conjuntos y Diccionarios 
- Tuplas
- Conjuntos
- Diccionarios
- Restricciones en conjuntos y claves de diccionarios: Objetos hash

Tema 7. Cadenas de Caracteres, Bytes y Codificación
- Cadenas de caracteres
- Métodos para operar con cadenas
- Formateo de cadenas de caracteres
- Bytes y bytearrays
- Codificación

Tema 8. Ficheros
- Introducción
- Abrir ficheros: control de rutas
- Directorio de trabajo
- Rutas de acceso a ficheros
- Operaciones con ficheros
- Ejemplo: justificar un texto a una anchura dada
- Formatos de ficheros: Texto plano, CSV, HTML

Bloque 3: Programación avanzada en Python

Tema 9: Clases: Programación Orientada a Objetos con Python
- Clases y Objetos: Atributos y Métodos
- Creación de clases e instanciación de objetos
- Coherencia, encapsulamiento y ocultación de la información
- Herencia y polimorfismo
- Métodos especiales
- El juego de las tres en raya

Tema 10: Módulos y Paquetes. Iteradores y Generadores
- Organización del código
- Módulos
- Paquetes
- Iteradores
- Generadores
- Organización del código


Objetivos:
  1. El primer objetivo se centra en la introducción del lenguaje Python así como entorno de trabajo en este lenguaje, las librerías más importantes y las técnicas y estilos de programación que definen lo que se ha caracterizado como "estilo Python".
  2. El segundo objetivo se centra en el análisis y estudio de los fundamentos de este lenguaje, centrándonos en cuestiones tales como los tipos de datos básicos de Python, la especificación mediante comprensiones, la construcción de los primeros programas numéricos y el uso de expresiones regulares.
  3. Un tercer objetivo abordará las capacidades de Python como lenguaje de programación en general. Python ha sido definido como un lenguaje multiparadigma, al soportar fundamentalmente los paradigmas de programación imperativa y la orientación a objetos, así como algunos modelos de programación funcional. A este nivel, es relevante poder abordar las capacidades de orientación a objetos de Python.
  4. Teniendo en cuenta las características de Python, se ha convertido en un entorno muy importante para el desarrollo de aplicaciones web, y por tanto se asume dentro del curso como un objetivo claro el explorar estas posibilidades, analizando en concreto las posibilidades que Python ofrece para el tratamiento de XML, las técnicas de serialización y la implementación de Servicios Web.
  5. Un objetivo clave del curso que se aborda de forma simultánea al resto de objetivos analizados es el desarrollo de habilidades para el desarrollo de software por parte de los participantes, abordando cuestiones de estilo de programación, realización de pruebas de testeo y depuración, o incluso la refactorización del código o el estudio de la importancia de la complejidad algorítmica y el análisis de estructuras de datos a la hora de abordar el diseño de programas.

Calendario: El curso se impartirá entre el 22 de Febrero y el 22 de Junio de 2017, requiriendo una dedicación de 110 por parte de los participantes.

Al inicio del curso se entregará una agenda detallada para el seguimiento del mismo, aunque las directrices generales serán las siguientes.

Se realizarán 6 entregas progresivas de material, correspondientes a cada uno de los bloques del temario, y se irán introduciendo los ejemplos y ejercicios asociados:

Metodología:
El curso se basa en la utilización de una plataforma Web para la enseñanza-aprendizaje a través de Internet. Dicha plataforma permite la organización del material de acuerdo con los objetivos y los contenidos programados. 

Es decir, el curso se organiza a través de un conjunto de temas, para cada uno de los cuales se facilitará tanto el desarrollo del tema correspondiente, así como un conjunto de ejemplos ilustrativos de la materia del tema. Puesto que se trata de un curso muy práctico dirigido a presentar y adquirir una serie de competencias en el campo de la programación de aplicaciones informáticas con el entorno Python, se facilitan el código fuente de estos ejemplos para agilizar la implementación y estudio de cada tema.

Así mismo, cada tema incluye un conjunto de ejercicios que será necesario realizar para superar el curso. Los ejercicios se han diseñado pensando en el modelo progresivo de aprendizaje de un entorno y lenguaje de programación.

Para facilitar la resolución de las dudas y la colaboración en un entorno integrado de enseñanza-aprendizaje, el curso contará con una serie de mecanismos de comunicación tutor-alumno, entre los que destacan la creación de una serie de foros, tanto genéricos (dudas y comentarios acerca del curso y su seguimiento) como específicos por temas o tópicos de especial interés.
Evaluación: De acuerdo con las directrices generales especificadas para la metodología del curso, la evaluación para la superación del mismo se basa en la realización de los ejercicios propuestos en cada tema. Cada alumno debe realizar estos ejercicios individualmente  y enviar la solución al profesor del curso mediante los canales de control de tareas internos al propio entorno virtual de enseñanza-aprendizaje, en el que quedan reflejadas las fechas y valoración de cada una de las tareas.
Requisitos: No existen requisitos previos específicos para la realización de este curso.

El curso se impartirá de forma que pueda ser seguido tanto por usuarios y programadores de entornos Windows como Linux.

No obstante, se recomienda un nivel de competencias mínimo para la realización de tareas tales como descargar, instalar y configurar los sistemas que forman el entorno sobre el que se desarrolla el curso.
Bibliografía: La bibliografía sobre Python es muy amplia. No obstante, merece la pena resaltar:

  • Libros o manuales actuales (en Inglés)
    1. John V. Guttag (2013): Introduction to Computation and Programming using Python. The MIT Press
    2. Wesley J. Chun (2012): Core Python applications programming Prentice Hall
    3. Hans Petter Langtangen (2012): A Primer on Scientific Programming with Python. Springer.
    4. Necaise, Rance, D; Hoboken, N.J. (2011) Data structures and algorithms using Python. John Wiley and Sons.
  • Libros o manuales actuales (en español)
    1. Arturo Fernández (2012): Python 3 al descubierto. RC Libros.
  • Un libro interesante por su vinculación con el ámbito de la enseñanza es:
    1. Jason R. Briggs (2013): Python for Kids : a playful introduction to programming. San Francisco, CA : No Starch,
  • En Internet se pueden encontrar multitud de manuales y cursos que abordan distintos aspectos de Python.

Otros:
  Descripción reducida del curso