Bienvenido al sitio web del curso de Estructuras de Datos y Algoritmos. En esta página podrás encontrar la información administrativa del curso. En el repositorio podrás encontrar código ya preparado por tus ayudantes, junto con los eventuales enunciados de las tareas y las diapositivas de clases.
- IIC2133 - Estructuras de Datos y Algoritmos
- Repositorio Talleres
- Cápsula Heap y Stack
- Cápsula Estructuras Básicas
- Cápsula DFS
- Cápsula BST en C
- Cápsula Tablas de Hash en C
- Cápsula MinHeap en C
- T0
- T1
- T2
- T3
Número | Tema | Fecha | Sección 1 | Sección 2 | Sección 3 | Complementos |
---|---|---|---|---|---|---|
0 | Introducción | 7 de agosto | Diapos | Diapos | Diapos | |
1 | Selection Sort | 16 de agosto | Diapos | Diapos | Diapos | |
2 | Insertion Sort | 16 de agosto | Diapos | Diapos | Diapos | |
3 | Merge Sort | 23 de agosto | Diapos | Diapos | Diapos | |
4 | Quick Sort | 28 de agosto | Diapos | Diapos | Diapos | |
5 | Quick Sort y propiedades | 30 de agosto | Diapos | Diapos | Diapos | |
6 | Árboles binarios de búsqueda | 4 de septiembre | Diapos | Diapos | Diapos | |
7 | Árboles AVL | 6 de septiembre | Diapos | Diapos | Diapos | |
8 | Árboles 2-3 | 11 de septiembre | Diapos | Diapos | Diapos | |
9 | Árboles rojo-negro | 13 de septiembre | Diapos | Diapos | Diapos | |
10 | Tablas de hash | 20 de septiembre | Diapos | Diapos | Diapos | |
11 | Orden lineal | 25 de septiembre | Diapos | Diapos | Diapos | |
12 | Repaso I1 | 27 de septiembre | Diapos | Diapos | Diapos | |
13 | Backtracking | 11 de octubre | Diapos | Diapos | Diapos | 8 Reinas |
14 | Backtracking II | 16 de octubre | Diapos | Diapos | Diapos | |
15 | Algoritmos codiciosos | 18 de octubre | Diapos | Diapos | Diapos | |
16 | Programación dinámica | 23 de octubre | Diapos | Diapos | Diapos | |
17 | Grafos | 25 de octubre | Diapos | Diapos | Diapos | |
18 | DFS y aplicaciones | 30 de octubre | Diapos | Diapos | Diapos | |
19 | Repaso I2 | 6 de noviembre | Diapos | Diapos | Diapos | Ej Backtrack |
20 | MST y Kruskal | 13 de noviembre | Diapos | Diapos | Diapos | |
21 | Heaps y heapsort | 15 de noviembre | 🥺 | Diapos | Diapos | |
22 | MST y Prim | 20 de noviembre | Diapos | Diapos | Diapos | |
23 | BFS y Dijkstra | 22 de noviembre | Diapos | Diapos | Diapos | |
24 | Bellman-Ford | 27 de noviembre | Diapos | Diapos | Diapos | |
25 | Repaso I3 | 29 de noviembre | Diapos | Diapos | Diapos |
Tipo | Número | Tema | Fecha | Material |
---|
El programa detallado del curso se encuentra disponible aquí
Nombre | Sección | |
---|---|---|
Sebastián Bugedo | 1 | [email protected] |
Mario Droguett | 2 | [email protected] |
Eduardo Bustos | 3 | [email protected] |
El curso consta de una parte teórica, evaluada mediante evaluaciones escritas (interrogaciones), y una parte práctica, evaluada mediante tareas de programación en C.
Habrá 3 interrogaciones, donde se evaluarán los aspectos más teóricos del contenido.
Evaluación | Fecha |
---|---|
I1 | 29 de Septiembre |
I2 | 8 de Noviembre |
I3 | 14 de Diciembre |
Habrá 4 tareas de programación en C, donde deberán resolver un problema complejo y analizarlo en un informe escrito.
Evaluación | Fecha Publicacion | Fecha Entrega |
---|---|---|
Tarea 0 | 16 de Agosto | 1 de Septiembre |
Tarea 1 | 5 de Septiembre | 26 de Septiembre |
Tarea 2 | 11 de Octubre | |
Tarea 3 | 9 de Noviembre | 23 de Noviembre |
La nota final del curso se calcula de la siguiente manera:
double nota_final() {
/* La nota de cada tarea */
double T0, T1, T2, T3;
/* La nota de cada interrogación*/
double I1, I2, I3;
double POND_I1, POND_I2, POND_I3;
/* Promedio de tareas */
double NT = min(0.20 * T0 + 0.30 * T1 + 0.25 * T2 + 0.25 * T3, 7.0);
/* Promedio de interrogaciones */
double NI = min(POND_I1 * I1 + POND_I2 * I2 + POND_I2 * I3, 7.0);
/* Nota final */
double NF = (NT + NI) / 2;
/* Es necesario tener sobre 3.7 en las evaluaciones escritas y las tareas por separado para aprobar el curso */
if (NI < 3.7 || NT < 3.7) {
return min(3.9, NF);
} else {
return min(NF, 7);
}
}
La formula de atrasos es la siguiente:
La politica de atrasos en tareas es lineal. Por cada dia de atraso se restaran 7 decimas de la nota maxima de la tarea. Esto significa que es un descuento suave donde se aplica min(nota, 7 - descuento)
.
Además cada alumno tendra 2 cupones de atraso que permiten eliminar un dia de atraso calendario de la tarea.
Es importante mencionar que luego del fin del plazo oficial de la tarea, no se asegura el apoyo del equipo docente para resolver dudas. (Normalmente hay, pero el ritmo disminuye)
double nota_con_atraso(double nota, int dias_de_atraso, int cupones_usados){
int atraso_efectivo = dias_de_atraso - cupones_usados;
if (atraso_efectivo > 3) { return 1.0; }
return min(nota, 7.0 - 0.7 * atraso_efectivo);
}
Ejemplos:
-
La tarea se entrega el 10, pero entrego el 12:
- Si no uso cupones. La nota maxima obtenible es
7 - 0.7 * 2 = 5.6
- Si uso 1 cupon. La nota maxima obtenible es
7 - 0.7 * 1 = 6.3
- Si uso 2 cupones. La nota maxima obtenible es
7 - 0.7 * 0 = 7.0
- Si no uso cupones. La nota maxima obtenible es
-
La tarea se entrega el 10, pero entrego el 15
- Si no uso cupones. La nota maxima obtenible es
1.0
- Si uso 1 cupon. La nota maxima obtenible es
7 - 0.7 * (5 - 1) = 4.2
- Si uso 2 cupones. La nota maxima obtenible es
7 - 0.7 * (5 - 2) = 4.9
- Si no uso cupones. La nota maxima obtenible es
Esto es independiente si algún dia de atraso es feriado o fin de semana.
Este curso se adscribe a la política de integridad académica de la Escuela de Ingeniería y el Departamento de Computación.
- Uso de IAs: El uso de herramientas que utilicen modelos de inteligencias artificiales no esta sancionado, pero no esta recomendado más alla de sintaxis de código o detalles pequeños. Normalmente el uso de estas herramientas genera código que no resuelve correctamente la tarea y requiere tiempo adicional de depuración.
- Además, en caso de utilizar se debe citar. En caso de no citar el uso de las herramientas podria detectarse similitud entre tareas de distintos alumnos y se considerara un caso de copia.
- Uso de código de terceros: Se puede utilizar codigo extraido desde la internet siempre y cuando sea citado correctamente en la tarea. En caso de no citar el uso de las herramientas podria detectarse similitud entre tareas de distintos alumnos y se considerara un caso de copia.
- Compartir ideas o algoritmos utiles: El curso permite compartir ideas sobre como resolver una tarea, pero no se permite compartir código. Solo ideas.
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 y sea autorizado por los ayudantes.
Lo anterior se entiende como complemento al Reglamento del Alumno de la Pontificia Universidad Católica de Chile1. Por ello, es posible pedir a la Universidad la aplicación de sanciones adicionales especificadas en dicho reglamento.
1: Reglamento del Alumno de la Pontificia Universidad Católica de Chile disponible en: http://admisionyregistros.uc.cl/alumnos/informacion-academica/reglamentos-estudiantiles ↑