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 03 | AC01 | Primer día de clases. Modelación OOP | |
Lunes 07 | Ayudantía 01 | Ayudantía de GIT, o cómo entregar los trabajos en este curso | |
Jueves 10 | AC02 | Herencia y polimorfismo. Clases abstractas | Primer día de uso de GIT obligatorio |
Lunes 14 | Ayudantía 02 | Tips para el curso. Módulos. | |
Jueves 17 | AC03 | Estructuras de datos. Properties | No entra la parte de árboles |
Lunes 21 | Ayudantía 03 | Estructuras de Datos y sala de ayuda Tarea 1 | |
Lunes 28 | T01 | OOP | Hora: 23:59 |
Jueves 31 | AC04 | Árboles y listas ligadas |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Lunes 4 | Ayudantía 04 | Funcional y otros temas importantes | |
Jueves 7 | AC05 | Functional entero sin decoradores | |
Lunes 11 | Ayudantía 05 | Decoradores | Solo en la sala B17 |
Miércoles 13 | T02 | EDD | Hora: 23:59 |
Jueves 14 | AC06 | Decoradores | |
Lunes 18 | Ayudantía 06 | Metaclases | No presencial |
Jueves 21 | AC07 | Metaclases | |
Lunes 25 | Ayudantía 07 | Manejo de Excepciones y Testing con Unittest | |
Jueves 28 | AC08 | Manejo de Excepciones y Testing con Unittest |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Lunes 2 | Ayudantía 08 | Simulación | |
Miércoles 4 | T03 | Funcional | Hora: 23:59 |
Jueves 5 | AC09 | Simulación DES | |
Lunes 9 | Ayudantía 09 | Threading | |
Jueves 12 | AC10 | Threading | |
Lunes 16 | Ayudantía 10 | Repaso para el Midterm | |
Martes 17 | Midterm Test | Todo hasta Threading (incluyendo lecturas) | |
Jueves 19 | AC11 | Interfaces gráficas (PyQt4) | Probar que esté bien instalado con import PyQt4 antes de la actividad |
Viernes 20 | T04 | Simulación, Testing y Manejo de Excepciones | Hora: 23:59 |
Lunes 23 | Ayudantía 11 | PyQt4 y QtDesigner | |
Jueves 26 | AC12 | Interfaces gráficas (QtDesigner) | |
Lunes 30 | Ayudantía 12 | I/O: Manejo de strings y Bytes |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Jueves 2 | AC13 | Input-Output {String + Bytes} | |
Lunes 6 | Ayudantía 13 | Serialización | |
Jueves 9 | AC14 | Input-Output {Serialización + Json} | |
Lunes 13 | Ayudantía 14 | Networking |
Día | Evento | Contenido | Información adicional |
---|---|---|---|
Martes 5 | Final Exam | Por anunciar | Hora: 9:15, Salas por anunciar |
Todas las notas serán publicadas en un documento de Google Sheets.
Para acceder deben haber iniciado sesión con su email UC.
Nombre | Sección | Github | |
---|---|---|---|
Karim Pichara | 1 | @karimpb | [email protected] |
Christian Pieringer | 2 | @cpieringer | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
Jaime Castro | Coordinación | @jecastro1 | [email protected] |
Belén Saldías | Coordinación | @bcsaldias | [email protected] |
Ivania Donoso | Docencia | @indonoso | [email protected] |
Antonio Ossa | Docencia | @aaossa | [email protected] |
Matías Jünemann | Tareas | @mjjunemann | [email protected] |
Bastián Mavrakis | Tareas | @bamavrakis | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
Ariel Seisdedos | Docencia | @robocop6 | [email protected] |
Guillermo Figueroa | Tareas | @gafigueroa | [email protected] |
Fernando Florenzano | Tareas | @fdoflorenzano | [email protected] |
Rodolfo Palma | Tareas | @rpalmaotero | [email protected] |
Nombre | Área | Github | |
---|---|---|---|
René Acuña | Actividades | @rtacuna | [email protected] |
María José Hidalgo | Actividades | @cotehidalgov | [email protected] |
Osvaldo Torres | Actividades | @oatorresuc | [email protected] |
Florencia Valladares | Actividades | @fvr1 | [email protected] |
Andrés Fernández | Docencia | @andresfdezc | [email protected] |
Benjamín Kramm | Docencia | @btkramm | [email protected] |
Freddie Venegas | Docencia | @fgvenegas | [email protected] |
Florencia Barrios | Tareas | @flobarrios | [email protected] |
Germán Contreras | Tareas | @Geeermy | [email protected] |
Tamara Covacevich | Tareas | @tamycova | [email protected] |
Nicolás Gebauer | Tareas | @negebauer | [email protected] |
Felipe Matus | Tareas | @matusfelipe | [email protected] |
Felipe Pezoa | Tareas | @mainscientist | [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 grandes para diseñar y estructurar sus soluciones.
- Crear diseños orientados a objetos para problemas simples 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 programas complejos en el lenguaje de programación Python, pudiendo extender este conocimiento a distintos lenguajes.
- Usar herramientas de programación comunes (debuggers y sistemas de control de versiones); técnicas de programación (bibliotecas de programación orientada a objetos y pruebas unitarias); y un entorno 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 interfaces gráficas significativas, 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
Las evaluaciones serán efectuadas por medio de actividades prácticas en clases, controles (de materia y/o lecturas adicionales), tareas, un midterm test y un examen final. Se calculará la nota del curso NC como
NC = 0.15 * MT + 0.2 * FE + 0.3 * T + 0.25 * AC + 0.1 * C
Donde MT es la nota obtenida en el midterm test, 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:
- El promedio ponderado entre MT y 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.
Durante el semestre NO se borrará ninguna evaluación. Tampoco existe la posibilidad de ser eximido del Examen final.
- Sin embargo, se tomará el promedio AC sin la peor actividad.
- Además existe la posibilidad de que se anuncie una tarea recuperativa opcional1. Si ésta es realizada por el alumno, tiene la posibilidad de eliminar la peor de las tareas bajo ciertas condiciones que serán comunicadas oportunamente.
Solo se aproximará la nota final NF. Todo el resto de las notas serán usadas con dos decimales.
No se podrá faltar al midterm o el examen final. La inasistencia a cualquiera de ellos 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. Visita la guía del foro para saber como utilizar esta herramienta.
Puedes ver los syllabus
de los semestres anteriores en:
1: Se anunciará su realización o no realización antes del 1 de junio de 2016.