Fundamentos de programación para ciencia de datos
Descripción del curso
En este curso conocerás el ecosistema de desarrollo de Python enfocado a ciencia de datos. Se realizarán talleres en cada sesión para poner en práctica lo explicado por el profesor y se realizarán 4 proyectos que simulan actividades comunes para un científico de datos o un ingeniero de Machine Learning.
Se espera que tengas familiaridad con conceptos de programación, aunque se hará un repaso rápido en cada tema que veamos. Si nunca has visto ningún curso de programación básica, te recomiendo seguir el Sratch Programming Playground, en donde se programa de una forma interactiva y la serie Think Like a Coder, en donde se explican varios conceptos de programación enmarcados en una historia de ciencia ficción.
Programación de sesiones
SESIÓN 01 (6hrs):
- Tipos de datos y operadores
- Estructuras de datos
- Control de flujo y ciclos
- Taller 1: ejercicios de algoritmia
- Funciones y lambdas
SESIÓN 02 (4hrs):
- Funciones 2.0
- Programación orientada a objetos en Python
- Iterable, iterator, itertools
- Opcional:[Simulaciones usando Python](./08 - [OPCIONAL] - Simulaciones usando Python.md)
SESIÓN 03 (6hrs):
- Instalación, ambientes, terminales, paquetes, módulos y scripts
- Demostración de configuración de entorno de trabajo
- Taller 3: construyendo una librería de álgebra lineal
- Lectura y escritura de archivos
SESIÓN 04 (4hrs):
- Concurrencia y paralelismo
- Taller 4: descarga concurrente de imágenes
SESIÓN 05 (6hrs):
- Introducción a NumPy
- Ejemplos de NumPy
- Introducción a Pandas
- Ejemplos de Pandas
- Introducción a Matplotlib
- Taller 5: Análisis exploratorio de un dataset
Criterios de evaluación
El porcentaje de evaluación de cada taller se encuentra en la lista y está dado deacuerdo al nivel de dificultad de cada uno.
En los talleres únicamente se revisará que el código cumpla su propósito, lo que implica que solo se revisará la respuesta que este entrega. También se tendrá en cuenta la calidad de la solución, dando especial importancia a la claridad del trabajo realizado.
Finalmente, se tendrán bonos adicionales para agregar en cualquier evaluación:
- Bonos por por cada contribución al material del curso. El aporte debe proponerse como un pull request intentando. Este bono tendrá un valor de un 1% adicional en la evaluación final del curso. Los contribuciones pueden ser errores o elementos sin explicar que podrían ser útiles. También pueden ser ejemplos a agregar al material que hayan surgido durante las sesiones.
- Bonos por soluciones a los talleres marcados como opcionales. Cada taller opcional tendrá un valor máximo del 5% del curso.
- Bono por resolver ejercicios de Hackerrank's interview preparation kit. Resolver todos los ejercicios de nivel easy tendrá un valor del 8% en la evaluación final del curso.
- Bono por resolver ejercicios de Hackerrank's interview preparation kit. Resolver todos los ejercicios de nivel intermediate tendrá un valor del 16% en la evaluación final del curso.
- Para a quellos que tarden más de 30 días en entregar una tarea, deberá entregarla adjuntando un soporte que demuestre terminación satisfactoria del 30 Days of Code de Hackerrank.
Entregas
Los talleres tendrán espacio suficiente para resolverse en las sesiones de clase, pero se darán plazos extra para adaptarnos a posibles imprevistos e inconvenientes por parte de los estudiantes. Los talleres podrán ser entregados hasta 2 días después de trabajados en clase. Además, la formulación de los talleres estará disponible antes del inicio de clase, esperando que esto de especial flexibilidad en el manejo del tiempo de los estudiantes.
Cuadro de honor
Se creará un cuadro de honor con los estudiantes que tengan una participación excepcional en el curso, lo cual incluye, pero no está limitado a obtención de bonos mencionados anteriormente y ayuda a que otros compañeros tengan éxito en el curso. Este cuadro de honor será publico y se compartirá en distintos escenarios relevantes para el gremio.
Adrian Yadir Jimenez |
Alberto Mario Ceballos |
Danilo Diaz |
Edward Nicolas Montoya |
Julian Eusse |
Oscar Andres Zapata |
Santiago Jaramillo |
Stiven Sanmartin |
Referencias:
- Programar en Python: Fluent Python: Clear, Concise, and Effective Programming
- Librería estándar de Python: The Python 3 Standard Library by Example
- Página con excelente contenido para aprender Python: Real Python
- Librerías básicas de ciencias de datos: Python Data Science Handbook
- Lógica de programación en general: Hackerrank's interview preparation kit (se sugiere hacer los fáciles de cada tema, luego los intermedios de cada tema y luego los difíciles de cada tema).