Día | Contenido | Información adicional |
---|---|---|
M 10 | OOP | |
J 12 | Herencia & multiherencia | |
M 17 | Polimorfismo & properties | |
J 19 | EDD | Colas & Stacks |
M 24 | EDD | Nodos & Árboles |
J 26 | Functional | Iterables & Iteradores & Generadores |
M 31 | Functional | Map & Reduce & Filter |
Día | Contenido | Información adicional |
---|---|---|
J 02 | Functional | Decorators |
M 07 | MetaClases | |
J 09 | MetaClases | |
L 13 | I1 : Hasta MetaClases | 18:30 Salas S1:B17 , S2:B18 |
M 14 | Suspensión de Cátedra | |
J 16 | Abstract Classes | |
M 21 | Simulación 1 | |
J 23 | Simulación con SimPy | Documentación aquí |
M 28 | Manejo de Excepciones | |
J 30 | Testing unitario | Unittest viene por defecto con Python |
Día | Contenido | Información adicional |
---|---|---|
M 05 | Testing con pytest | Documentación aquí |
J 07 | Interfaces Gráficas con PyQt4 | Parte 1 |
M 12 | Interfaces Gráficas con PyQt4 + Qt Designer | Parte 2 |
J 14 | I/O | Strings |
M 19 | I/O | Bytes |
J 21 | Feriado | |
M 26 | I/O | Serialización |
J 28 | Threading | Creación y sincronización |
Día | Contenido | Información adicional |
---|---|---|
M 02 | I2 | 18:30 y se suspende la cátedra. |
J 04 | Threading | Concurrencia |
M 09 | Networking | Sockets |
J 11 | Networking | Protocolos |
M 16 | Webservices | Recursos web |
J 18 | Webservices | REST API |
W 24 | Examen | 8:30 Salas S1:B24, S2: B25 |
Nombre | Sección | Github | |
---|---|---|---|
Karim Pichara | 1 | @karimpb | kpb@ing.puc.cl |
Christian Pieringer | 2 | @cpieringer | cppierin@uc.cl |
Nombre | Área | Github | |
---|---|---|---|
Belén Saldías | Coordinación | @bcsaldias | bcsaldias@uc.cl |
Patricio López | Docencia | @mrpatiwi | pelopez2@uc.cl |
Jaime Castro | Docencia | @jecastro1 | jecastro1@uc.cl |
Rodrigo Gómez | Tareas | @rkoco | rigomez@uc.cl |
Marco Bucchi | Tareas | @mbucchi | mabucchi@uc.cl |
Nombre | Área | Github | |
---|---|---|---|
Javiera Astudillo | Docencia | @jfastudillo | jfastudillo@uc.cl |
Ivania Donoso | Docencia | @indonoso | indonoso@uc.cl |
Vicente Domínguez | Docencia | @NevadaStreets | vidominguez@uc.cl |
Mattia Rigotti | Tareas | @mirigotti | mirigotti@uc.cl |
Carlos Santander | Tareas | @cjsantander | cjsantander@uc.cl |
Nombre | Área | Github | |
---|---|---|---|
Antonio Ossa | Docencia | @aaossa | aaossa@uc.cl |
Jose Maria de la Torre | Docencia | @jmdelatorre | jm.delatorre@uc.cl |
Felipe Garrido | Docencia | @figarrido | figarrido@uc.cl |
Bastián Mavrakis | Tareas | @bamavrakis | bamavrakis@uc.cl |
Matias Jünemann | Tareas | @mjjunemann | mjjunemann@uc.cl |
Antonio Gil | Tareas | @afgil | afgil@uc.cl |
Ian Butelmann | Tareas | @ibutelmann | ibutelmann@uc.cl |
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
- Polimorfismo
- Herencia múltiple
- Propiedades.
- 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
- Clases Abstractas:
- Herencia a partir de clases no instanciables
- Simulación:
- Introducción a la simulación y SimPy
- Manejo de Excepciones:
- Tipos de excepciones/errores y cómo controlarlos
- Testing:
- Tests unitarios en pytest
- Interfaces Gráficas:
- Introducción a las interfaces gráficas usando PyQt4
- I/O:
- Bytes
- Serialización
- Audio
- Imagen
- Threading:
- Creación y sincronización de threads
- Concurrencia.
- Networking:
- Sockets, cliente, servidor
- Webservices:
- Expresiones regulares
- Uso de servicios REST
- Módulos semanales:
- Cátedra: 2
- Ayudantía/Laboratorio 1
El curso se realiza utilizando metodologías de enseñanza teóricas-prácticas centradas en el alumno que permitan a los estudiantes desarrollar las competencias definidas en los objetivos del curso, tanto en cátedras como en ayudantías.
Este curso está diseñado de forma tal que el alumno dedique al estudio personal un promedio de 6 hrs. a la semana.
Las evaluaciones serán por medio de actividades prácticas en clases, controles, tareas, 2 Interrogaciones y un Examen. La nota final del curso (NF) se calculará como:
NF = 0.2 * I + 0.2 * E + 0.3 * T + 0.2 * AC + 0.1 * C
Donde I es el promedio de las interrogaciones, E es la nota del Examen, T es el promedio de las tareas, AC es el promedio de las actividades en clases y C es el promedio de los controles. Durante el semestre NO se borrará ninguna evaluación, tampoco existe la posibilidad de ser eximido del Examen final.
Los alumnos de la Escuela de Ingeniería de la Pontificia Universidad Católica de Chile deben mantener un comportamiento acorde a la Declaración de Principios de la Universidad. En particular, se espera que mantengan altos estándares de honestidad académica. Cualquier acto deshonesto o fraude académico está prohibido; los alumnos que incurran en este tipo de acciones se exponen a un Procedimiento Sumario. Es responsabilidad de cada alumno conocer y respetar el documento sobre Integridad Académica publicado por la Dirección de Docencia de la Escuela de Ingeniería (disponible en SIDING). Específicamente, para los cursos del Departamento de Ciencia de la Computación, rige obligatoriamente la siguiente política de integridad académica. Todo trabajo presentado por un alumno para los efectos de la evaluación de un curso debe ser hecho individualmente por el alumno, sin apoyo en material de terceros. Por “trabajo” se entiende en general las interrogaciones escritas, las tareas de programación u otras, los trabajos de laboratorio, los proyectos, el examen, entre otros. En particular, si un alumno copia un trabajo, o si a un alumno se le prueba que compró o intentó comprar un trabajo, obtendrá nota final 1.1 en el curso y se solicitará a la Dirección de Docencia de la Escuela de Ingeniería que no le permita retirar el curso de la carga académica semestral. Por “copia” se entiende incluir en el trabajo presentado como propio, partes hechas por otra persona. En caso que corresponda a “copia” a otros alumnos, la sanción anterior se aplicará a todos los involucrados. En todos los casos, se informará a la Dirección de Docencia de la Escuela de Ingeniería para que tome sanciones adicionales si lo estima conveniente. Obviamente, está permitido usar material disponible públicamente, por ejemplo, libros o contenidos tomados de Internet, siempre y cuando se incluya la referencia correspondiente. Lo anterior se entiende como complemento al Reglamento del Alumno de la Pontificia Universidad Católica de Chile*. Por ello, es posible pedir a la Universidad la aplicación de sanciones adicionales especificadas en dicho reglamento.
- Reglamento del Alumno dela Pontificia Universidad Católica de Chile disponible en: http://admisionyregistros.uc.cl/alumnos/informacion-academica/reglamentos-estudiantiles
Toda la información que subiremos se encontrará en la Wiki del repositorio.
La página de Issues se utilizará como foro para preguntas.
Dentro de Issues, las entradas se pueden etiquetar dentro de ciertas categorías predefinidas para mantener el orden y facilitar la búsquda de problemas similares. Una entrada puede tener múltiples etiquetas. Los ayudantes nos encargaremos de ir etiquetando las preguntas en el foro.
- Ausencia de material prometido: para solicitar material que no haya sido subido al repositorio.
- Actividades: Relacionado con las actividades en clase.
- Código: sobre métodos, clases, sintaxis, PEP8.
- Tareas n: sobre el enunciado de la tarea número n.
- Interrogación: sobre fechas, contenido, recorreción de interrogaciones.
- Materia: sobre conceptos y/o temas vistos en clases o fuera de esta.
- Duplicada: pregunta repetida, se hará referencia a la pregunta original.
- Git: Preguntas relacionadas con
git
- I'm a Teapot: broma geek ( ͡° ͜ʖ ͡°)
- Inválida: la pregunta no cumple los estándares o viola el procedimiento descrito abajo.
- Meta-pregunta: pregunta sobre cómo y qué preguntar.
- Tengo un error: para preguntar sobre errores o bugs en códigos.
Tanto al publicar entradas como al comentar, se debe atenerse a las normas del curso, además debes utilizar Markdown cuando sea necesario. Por ejemplo, cuando se necesita mostrar código o mensajes de error.
Antes de postear:
- Buscar en internet hasta encontrar la solución.
- Si pasan horas y el problema persiste, entrar a Issues.
- Buscar si alguien tiene la misma pregunta o problema.
- Si encuestra un post marcado como resueto, pero no te satisface la respuesta, puedes comentar la issue y volver a abrirla.
- En caso de no encontrar un post que te sirva, lo creamos presionando New issue.
- Escribir una entrada explicando bien el problema o pregunta.
- Publicar.
Una vez resuelto el problema, dar las gracias y cerrar la issue.