Skip to content

Latest commit

 

History

History
112 lines (84 loc) · 64.3 KB

README.md

File metadata and controls

112 lines (84 loc) · 64.3 KB

Curso CC1002 Secciones 5 y 7 (Primavera 2021)

Objetivos del curso

El objetivo principal de este curso no es formar programadores, sino desarrollar una base común en razonamiento algorítmico y lógico, así como una capacidad de modelamiento y abstracción, necesarios la resolución de problemas.

Metodología de trabajo

El contenido del curso se entrega en 2 formatos complementarios que los alumnos deben ver y desarrollar: videos y guías de trabajo (notebooks).

  1. Clases en formato Notebook (guías de trabajo): Cada estudiante debe desarrollar (individualmente) durante la semana las guías de trabajo (Notebooks) correspondientes a las dos clases semanales (puede hacerlas directamente abriendo los "notebooks" en Colab que sólo requiere el navegador Chrome, o puede hacerlas desde Python instalándolo directamente en su PC [ver tutorial!]).
  2. Clases en formato Videos: Cada clase está grabada en una serie de videos cortos, las cuales deberán ir trabajando semanalmente a un ritmo aprox. de 2 clases por semana (ver playlist completa acá).

Reglas del curso

  • NF (nota final): 2/3 NT + 1/3 NEJ (NC>=4 y NEJ>=4)
  • NT (nota tareas): promedio 3 tareas (1 x unidad)
  • NEJ (nota ejercicios): promedio ejercicios (1 o 2 ejercicios x semana)

Tareas y Ejercicios deben aprobarse por separado.

Ejercicios (evaluaciones semanales)

Se realizarán ejercicios cortos con nota por cada tema los cuales deben ser enviados vía u-cursos. Esta actividad consiste el desarrollo individual de un problema simple, con el objetivo reforzar y comprobar el aprendizaje. Los ejercicios están pensandos para ser desarrollados en 15-20 min. Es muy importante realizar todos los ejercicios ya que permite a los profesores tener retroalimentación sobre lo que se enseña.

La escala en que se evaluarán los ejercicios está simplificada y es:

  • 1 (no logra el objetivo, no va en la dirección correcta)
  • 3 (no logra el objetivo, pero va en la dirección adecuada)
  • 5 (logra medianamente el objetivo, tiene algunos errores)
  • 7 (logra el objetivo)

Cada 5 ejercicios se borrará la peor nota.

Compromiso ético de trabajo personal durante el curso

Se asume que todos los alumnos que participan del curso cumplirán con un compromiso ético en el desarrollo de su trabajo. Este compromiso implica realizar las tareas de manera responsable y honesta, sin incurrir en plagio, copia, o suplantación de identidad. Todas las evaluaciones, consistentes en ejercicios y tareas son trabajos de carácter individual (a no ser que se indique explícitamente lo contrario). El no cumplir con este compromiso implica que los profesores deberán aplicar el protocolo de copia que indica la Facultad.

Reglas simples a seguir en tareas y ejercicios son que:

  • todo el código debe ser de autoría propia y no se puede compartir código entre estudiantes. En otras palabras, no está permitido ver ni copiar código de otros estudiantes, ni usar código hecho por terceros.
  • Sí está permitido (y es altamente recomendado) discutir estrategias para la solución de problemas entre estudiates como parte de la reflexión y el aprendizaje del curso.

Detalles: ¿Qué tipo de colaboración entre estudiantes se permite y qué no?: en el curso siguiremos la Whiteboard Policy (o Política de Pizarrón Blanco) la cual está detallada acá. En resumen, dos personas pueden discutir una tarea en un pizarrón (virtual o real, o pantalla de computador) siempre que no tomen notas individuales, ni se grabe o fotografíe el pizarrón o pantalla. Luego, al terminar, se cierra todo, y a partir de su memoria cada uno puede hacer su tarea o ejercicio. Lo más importante de la política es que no debe haber transpaso de código (programas tanto completos como trozos) entre las dos personas. Si cumplen esa regla, no tendrán ningún problema de copia. Así que anímense a colaborar!

Herramientas del curso

  • Python 3 (consola - requiere instalar python en su computador)
  • Colab de Google (permite ejecutar python online, no requiere instalación, pero sí tener el navegador Chrome en su tablet, smartphone o computador. Las clases del curso están hechas usando Colab, que es un ambiente que permite agregar bloques de código adentro de un documento.

Se dejará un post en el Blog del curso con detalles sobre el uso e instalación de la consola y colab.

Contenidos Publicados por Semana

Semana Tema Videos Notebook Pauta(PDF)
1 Clase 1: Introducción, tipos de datos y expresiones Bienvenida al Curso
Parte 1: Expresiones y tipos de datos básicos
Parte 2: Variables y errores

Clase 1

Clase 1
1 Clase 2: Funciones y receta de diseño Parte 1: Funciones
Parte 2: Funciones auxiliares
Parte 3: Identación y alcances de variables
Parte 4: Recetas de Diseño

Clase 2

Clase 2
2 Clase 3: Módulos y Programas Interactivos Parte 1: Constantes y Módulos
Parte 2: Módulo Math de python
Parte 3: Programas Interactivos

Clase 3

Clase 3
2 Clase 4: Condiciones Parte 1: Valores booleanos y condiciones compuestas
Parte 2: Funciones Booleanas
Parte 3: Condiciones
Parte 4: Recetas de Diseño

Clase 4

Clase 4
3 Clase 5: Recursión I Parte 1: Introducción
Parte 2: Características de las funciones recursivas
Parte 3: Ejecución recursiva y restricción de parámetros
Parte 4: Recursión: Ejemplos y receta de diseño

Clase 5

Clase 5
3 Clase 6: Recursión II, Testing y Depuración Parte 1: Testing y depuración
Parte 2: Recuerdo: Características de las funciones recursivas
Parte 3: Más ejemplos de recursión
Parte 4: Errores de redondeo en floats

Clase 6

Clase 6
4 Clase 7: Caso de Estudio I: Números Primos Caso de Estudio 1: Buscando Primos
Caso de Estudio 1

Caso de Estudio 1
5 Clase 8: Estructuras/Datos Complejos Parte 1: Introducción
Parte 2: Estructura Fracción
Parte 3: Receta de diseño para estructuras
Parte 4: El Módulo fracción
Parte 5: Otras funciones para fracciones
Parte 6: Problema Propuesto

Clase 8

Clase 8
5 Clase 9: Estructuras Recursivas I Parte 1: Creando una lista
Parte 2: Funciones de una lista
Parte 3: Uso del módulo lista
Parte 4: Funciones con listas y receta de diseño

Clase 9

Clase 9
6 Clase 10: Estructuras Recursivas II Parte 1: Listas que contienen estructuras
Parte 2: Funciones que procesan listas
Parte 3: Funciones que producen listas
Parte 4: Más funciones que producen listas

Clase 10

Clase 10
6 Clase 11: Abstracción Funcional Parte 1: Introducción
Parte 2: Función Filtro
Parte 3: Forma genérica y canónica de filtro
Parte 4: Función Mapa
Parte 5: Función Fold

Clase 11

Clase 11
7 Clase 12: Árboles Parte 1: Funciones Anónimas
Parte 2: Árboles de Ancestros
Parte 3: Árboles Descendentes
Parte 4: Árboles Binarios

Clase 12

Clase 12
7 Clase 13: Árboles de Búsqueda Binaria ABB

Fe de errata: La función esABB como está descrita en el video tiene un error. Ver la nueva versión en el archivo .pynb de la clase 13.
Parte 1: Recuerdo Árboles Binarios
Parte 2: Árboles binarios de expresiones aritméticas
Parte 3: Árboles de Búsqueda Binaria - Introducción
Parte 4: Buscar en un ABB
Parte 5: ¿Cómo saber si un AB es un ABB?
Parte 6: Mostrar un ABB en orden
Parte 7: Insertar un elemento

Clase 13

Clase 13
8 Clase 14: Caso de Estudio II: Agenda Parte 1: Introducción
Parte 2: Solución con Listas
Parte 3: Función borrar usando Listas
Parte 4: Función agregar usando listas
Parte 5: Función cambiar usando Listas
Parte 6: Solución con ABB
Parte 7: Función buscando usando ABB
Parte 8: Función agregar usando ABB
Parte 9: Función borrar usando ABB

Clase 14

Clase 14
9 Clase 15: Mutación y Aliasing Parte 1: Introducción
Parte 2: Ejemplo en aplicación agenda AI2E
Parte 3: Cómo hacer Testing
Parte 4: Estructuras de datos mutables
Parte 5: Aliasing
Parte 6: Ejemplo no-trivial de mutación
Parte 7: Aliasing y copia efectiva

Clase 15

Clase 15
9 Clase 16: Estructuras Indexadas I Parte 1: Introducción
Parte 2: Mutación y Aliasing en listas de Python
Parte 3: Concatenación y comparación
Parte 4: Sublistas
Parte 5: Aliasing en listas de Python
Parte 6: Matrices
Parte 7: Más funciones sobre listas
Parte 8: Función range
Parte 9: Función for
Parte 10: Trucos de listas de python

Clase 16

Clase 16
10 Clase 17: Estructuras Indexadas II Parte 1: Funciones para listas
Parte 2: Instrucción While
Parte 3: Strings como listas inmutables

Clase 17

Clase 17
11 Clase 18: Archivos y Diccionarios Parte 1: Tipos de Memoria
Parte 2: Grabar lineas en un archivo
Parte 3: Sintaxis para leer/escribir archivos
Parte 4: Uso de for para recorrer archivos
Parte 5: Ejemplos de uso de archivos
Parte 6: Diccionarios

Clase 18

Clase 18
11 Clase 19: Caso de Estudio III: Algoritmos de Ordenamiento No hay videos
Clase 19

Clase 19
12 Clase 20: Objetos y Clases Parte 1: Objetos y Clases
Parte 2: Definición de Clase y Constructor
Parte 3: Métodos de una Clase
Parte 4: Receta de Diseño

Clase 20

Clase 20
12 Clase 21: Objetos y Clases II No hay videos
Clase 21

Clase 21
13 Clase 22: Objetos - Interfaces/Ventanas Parte 1: Introducción
Parte 2: Un primer ejemplo: Ventanas y etiquetas
Parte 3: Eventos y acciones: Ejemplos con botones
Parte 4: Componentes de texto: Entry
Parte 5: Acciones más complejas
Parte 6: Uso de marcos: Frame
Parte 7: Alternativas para organizar componentes: Grid
Parte 8: Dibujos en ventanas: Canvas
Parte 9: Aplicaciones de canvas

Clase 22

Clase 22


Presentación
13 Clase 23: Caso de Estudio IV: Diccionarios No hay videos
Clase 23

Clase Diccionario con list

Clase Diccionario con dict

Clase 23

Clase Diccionario con list

Clase Diccionario con dict

Clases Auxiliares

Semana Tema Enunciado Pauta
2 Clase Auxiliar 1:
  • Tipos de datos y expresiones
  • Funciones y receta de diseño

Clase Auxiliar 1

Pauta Auxiliar 1 - Colab
3 Clase Auxiliar 2:
  • Módulos y Programas Interactivos
  • Condiciones

Clase Auxiliar 2

Pauta Auxiliar 2 - Colab
4 Clase Auxiliar 3:
  • Recursión
  • Testing y depuración

Clase Auxiliar 3

Pauta Auxiliar 3 - Colab
5 Clase Auxiliar 4:
  • Recursión
  • Variables por omisión

Clase Auxiliar 4

Pauta Auxiliar 4 - Colab
6 Clase Auxiliar 5:
  • Estructuras
  • Listas recursivas

Clase Auxiliar 5

Pauta Auxiliar 5 - Colab
7 Clase Auxiliar 6:
  • Estructuras Recursivas
  • Abstracción Funcional

Clase Auxiliar 6

Pauta Auxiliar 6 - Colab
9 Clase Auxiliar 9:
  • Árboles Binarios
  • Árboles Binarios de Búsqueda

Clase Auxiliar 9

Pauta Auxiliar 9 - Colab
10 Clase Auxiliar 10:
  • Mutación y Aliasing
  • Estructuras indexadas

Clase Auxiliar 10

Pauta Auxiliar 10 - Colab
11 Clase Auxiliar 11:
  • Estructuras Indexadas
  • Strings

Clase Auxiliar 11

Pauta Auxiliar 11 - Colab
12 Clase Auxiliar 12:
  • Archivos
  • Diccionarios

Clase Auxiliar 12

Pauta Auxiliar 12 - Colab
13 Clase Auxiliar 13:
  • Clases
  • Objetos

Clase Auxiliar 13

Pauta Auxiliar 13 - Colab
13 Clase Auxiliar 14:
  • Ventanas
  • Interfaces

Clase Auxiliar 14

Pauta Auxiliar 14 - Python