Todas las actividades (AC) son evaluadas. La ausencia a clases implica un 1.0 en las evaluaciones de ese día.
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Jueves 04 | AC00 | Primer día de clases | |
Lunes 08 | Ayudantía 1 | Cómo pasar el curso | |
Jueves 11 | AC01 | OOP + properties | |
Lunes 15 | - | Feriado 🎉 | |
Jueves 18 | AC02 | Herencia - Polimorfismo - Abstract | |
Lunes 22 | Ayudantía 2 | Estructuras de Datos 101 | |
Jueves 25 | AC03 | Estructuras de Datos: tuplas, listas, sets, diccionarios | |
Lunes 29 | Ayudantía 3 | Estructuras de Datos |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Jueves 1 | AC04 | Estructuras de Datos | |
Lunes 5 | Ayudantía 4 | Programación Funcional | |
Jueves 8 | AC05 | Programacion Funcional | Decoradores NO |
Lunes 12 | Ayudantía 5 | Decoradores | |
Jueves 15 | AC06 | Decoradores | |
Lunes 19 | - | Feriado 🎉 | |
Jueves 22 | AC07 | Metaclases | |
Lunes 26 | Ayudantia 6 | Excepciones + Testing | |
Jueves 29 | AC08 | Excepciones + Testing |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Lunes 3 | Ayudantía 7 | Simulación DES | |
Jueves 6 | AC09 | Simulación DES | |
Lunes 10 | - | Feriado 🎉 | |
Jueves 13 | AC10 | Threading | |
Lunes 17 | Ayudantía 8 | Interfaces gráficas | |
Jueves 20 | AC11 | Interfaces gráficas | |
Lunes 24 | Ayudantía 9 | I/O Archivos | |
Jueves 27 | AC12 | I/O Archivos | |
Lunes 31 | - | Feriado 🎉 |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Jueves 3 | AC13 | I/O Serialización | |
Lunes 7 | Ayudantía 10 | Networking | |
Jueves 10 | AC14 | Networking | |
Lunes 14 | Ayudantía 11 | Webservices + Regex | |
Jueves 17 | AC15 | Webservices + Regex |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Viernes 2 15:30 | Final Exam | Por anunciar | Salas: Por anunciar |
Todas las notas serán publicadas en este documento de Google Sheets.
Para acceder deben haber iniciado sesión con su email UC.
Nombre | Sección | Github | |
---|---|---|---|
Cristian Ruz | 1 | @cruz | [email protected] |
Christian Pieringer | 2 | @cpieringer | [email protected] |
Ivania Donoso | 3 | @indonoso | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
Bastián Mavrakis | Coordinación | @bamavrakis | [email protected] |
Antonio Ossa | Docencia | @aaossa | [email protected] |
Matías Jünemann | Tareas | @mjjunemann | [email protected] |
Florencia Barrios | Tareas | @flobarrios | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
Florencia Valladares | Docencia | @fvr1 | [email protected] |
María José Hidalgo | Docencia | @cotehidalgov | [email protected] |
Benjamín Kramm | Docencia | @btkramm | [email protected] |
Freddie Venegas | Docencia | @fgvenegas | [email protected] |
Rodolfo Palma | Tareas | @rpalmaotero | [email protected] |
Felipe Pezoa | Tareas | @mainscientist | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
Anders Skog | Docencia | @andersskog | [email protected] |
Joaquín Tagle | Docencia | @jtagle2 | [email protected] |
Juan Cortés | Docencia | @jicortes2 | [email protected] |
Nicolás Falconi | Docencia | @nigfasa | [email protected] |
Matías Andrade | Docencia | @mandrade2 | [email protected] |
Hernán Valdivieso | Tareas | @Hernan4444 | [email protected] |
Isidora Palma | Tareas | @isipalma | [email protected] |
Matias Eynaudi | Tareas | @Mieynaudi | [email protected] |
Manuel Silva | Tareas | @ManuelSIlvaCav | [email protected] |
Javier Montoya | Tareas | @jgmontoya | [email protected] |
Cristian Cortés | Tareas | @criscv94 | [email protected] |
Fernando Pieressa | Tareas | @FernandoPieressa | [email protected] |
Andrés Mardones | Tareas | @agmardones | [email protected] |
Stephanie Chau | Tareas | @stephichau | [email protected] |
Este curso enseña técnicas para diseñar, implementar, ejecutar y evaluar herramientas de software que resuelven problemas algorítmicos a partir de especificaciones detalladas. En particular, el curso enseña construcciones avanzadas de programación orientada a objetos, estructuras de datos fundamentales, diseño básico de algoritmos y técnicas de análisis.
- Descomponer problemas complejos para diseñar y estructurar sus soluciones.
- Crear diseños orientados a objetos y comunicar estos diseños a través de documentación externa y comentarios en el código.
- Aplicar conceptos de orientación a objetos (herencia, polimorfismo, interfaces) y estructuras de datos fundamentales (listas ligadas, stacks, colas, árboles binarios y tablas de hash), para diseñar y escribir aplicaciones en el lenguaje de programación Python, pudiendo extender este conocimiento a distintos lenguajes.
- Fomentar el uso de:
- herramientas de programación estándares para el desarrollo de software como entornos de desarrollo, debuggers y sistemas de control de versiones;
- técnicas de programación como bibliotecas de programación orientada a objetos y pruebas unitarias;
- y entornos de desarrollo de software para editar, compilar, y depurar programas.
- Generar software desde cero, con código de alto nivel, de fácil reutilización, actualización y mantenimiento. Incluyendo el uso interfaces gráficas totalmente funcionales.
- Programación Orientada a Objetos:
- Objetos
- Herencia
- Herencia múltiple
- Polimorfismo
- Clases Abstractas
- Properties.
- Estructuras de Datos:
- Árboles
- Diccionarios
- Colas
- Stacks
- Sets
- Funciones de Python y Programación Funcional:
- Algunas funciones especiales de Python
- Comprensión de listas
- Iterables e iteradores
- Generadores
- Funciones lambda
- Map
- Reduce
- Filter
- Decoradores
- Meta Clases:
- Comprender la lógica detrás de la construcción y creación de clases
- Manejo de Excepciones:
- Tipos de excepciones
- Control de excepciones
- Testing:
- Tests unitarios en Unittest
- Simulación:
- Introducción a la simulación con eventos discretos
- Threading:
- Creación y sincronización de threads
- Concurrencia
- Interfaces Gráficas:
- Introducción a las interfaces gráficas usando PyQt4
- I/O:
- Manejo de Strings
- Bytes
- Serialización binaria
- Serialización en formato JSON
- Networking:
- Sockets, cliente, servidor
- Webservices:
- REST API
- Regex
-
Las evaluaciones serán efectuadas por medio de actividades prácticas en clases, controles (de materia y/o lecturas adicionales), tareas y un examen final. Se calculará la nota del curso NC como:
NC = 0.2 * FE + 0.4 * T + 0.25 * AC + 0.15 * C
Donde FE es la nota del examen final, T es el promedio de las tareas, AC es el promedio de las actividades en clases sin incluir la peor de ellas, y C es el promedio de los controles.
-
Adicionalmente, para aprobar el curso el alumno debe cumplir con:
- FE debe ser mayor o igual a 3.500
- AC debe ser mayor o igual a 3.700
- T debe ser mayor o igual a 3.950
-
Si el alumno cumple con todas las condiciones mencionadas, la nota final del curso (NF) corresponde a NC. En caso contrario, NF es la nota mínimo entre los items no cumplidos.
-
La inasistencia a alguna de las actividades en clases se evalúa con nota 1.0, pero para el cálculo final de este ítem se eliminará la nota más baja
-
Solo se aproximará la nota final NF. Todo el resto de las notas serán usadas con tres decimales.
-
Durante el semestre NO se borrará ninguna otra evaluación, lo que incluye T, AC, FE, C.
-
El Examen final es obligatorio, no hay eximición. La inasistencia al Examen es reprobatoria.
Toda la información que subiremos se encontrará en la Wiki del repositorio.
La página de Issues se utilizará como foro para preguntas.
Puedes ver los syllabus
de los semestres anteriores en: